如何为托管在 Azure AD 上的 WebAPI 生成令牌?
How to generate token for WebAPI who is hosted on Azure AD?
我有一个 api 托管在 azure AD 上。
我里面有下面的代码 Startup.cs
public partial class Startup
{
private static readonly string ClientId = ConfigurationManager.AppSettings["ida:ClientId"];
private static readonly string AadInstnace = ConfigurationManager.AppSettings["ida:AADInstance"];
private static readonly string TenantId = ConfigurationManager.AppSettings["ida:TenantId"];
private static readonly string PostLogoutRedirectUri = ConfigurationManager.AppSettings["ida:PostLogoutRedirectUri"];
private static readonly string Authority = AadInstnace + TenantId;
public void ConfigureAuth(IAppBuilder app)
{
app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);
app.UseCookieAuthentication(new CookieAuthenticationOptions());
app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions
{
ClientId = ClientId,
Authority = Authority,
PostLogoutRedirectUri = PostLogoutRedirectUri
});
}
}
我在这里没有看到任何回发令牌生成代码:(
如何从控制台应用程序中获取可用于调用此 Webapi 的令牌?
看看 nuget 包 - Microsoft.IdentityModel.Clients.ActiveDirectory (https://www.nuget.org/packages/Microsoft.IdentityModel.Clients.ActiveDirectory)
然后您可以使用以下代码生成访问令牌,
var authority = "https://login.microsoftonline.com/your-aad-tenant-id/oauth2/token";
var context = new AuthenticationContext(authority);
var resource = "https://some-resource-you-want-access-to";
var clientCredentials = new ClientCredential(clientId, clientSecret);
var result = await context.AcquireTokenAsync(resource, clientCredentials);
您需要为 AAD 创建秘密值 clientId
我有一个 api 托管在 azure AD 上。
我里面有下面的代码 Startup.cs
public partial class Startup
{
private static readonly string ClientId = ConfigurationManager.AppSettings["ida:ClientId"];
private static readonly string AadInstnace = ConfigurationManager.AppSettings["ida:AADInstance"];
private static readonly string TenantId = ConfigurationManager.AppSettings["ida:TenantId"];
private static readonly string PostLogoutRedirectUri = ConfigurationManager.AppSettings["ida:PostLogoutRedirectUri"];
private static readonly string Authority = AadInstnace + TenantId;
public void ConfigureAuth(IAppBuilder app)
{
app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);
app.UseCookieAuthentication(new CookieAuthenticationOptions());
app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions
{
ClientId = ClientId,
Authority = Authority,
PostLogoutRedirectUri = PostLogoutRedirectUri
});
}
}
我在这里没有看到任何回发令牌生成代码:(
如何从控制台应用程序中获取可用于调用此 Webapi 的令牌?
看看 nuget 包 - Microsoft.IdentityModel.Clients.ActiveDirectory (https://www.nuget.org/packages/Microsoft.IdentityModel.Clients.ActiveDirectory)
然后您可以使用以下代码生成访问令牌,
var authority = "https://login.microsoftonline.com/your-aad-tenant-id/oauth2/token";
var context = new AuthenticationContext(authority);
var resource = "https://some-resource-you-want-access-to";
var clientCredentials = new ClientCredential(clientId, clientSecret);
var result = await context.AcquireTokenAsync(resource, clientCredentials);
您需要为 AAD 创建秘密值 clientId