【发布时间】:2019-07-10 14:52:55
【问题描述】:
我已使用 Azure AD 配置 Open ID Connect。我希望从 AAD 中检索 access_token。目前我只能检索 id_token。我已将 Azure Active Directory 应用程序注册配置为同时包含 access_token 和 id_token。
我已将 Azure Active Directory 应用程序注册配置为同时包含 access_token 和 id_token。 我也尝试过从标头中检索令牌,但没有任何运气。
Startup.cs
services.AddAuthentication(AzureADDefaults.AuthenticationScheme)
.AddAzureAD(options => Configuration.Bind("AzureAD", options));
services.Configure<OpenIdConnectOptions>(AzureADDefaults.OpenIdScheme, options =>
{
options.Authority = options.Authority + "/v2.0/";
options.TokenValidationParameters.ValidateIssuer = true;
options.ResponseType = OpenIdConnectResponseType.CodeIdToken;
options.SaveTokens = true;
});
MyController.cs
if(User.Identity.IsAuthenticated)
{
string accessToken = await HttpContext.GetTokenAsync("access_token");
string idToken = await HttpContext.GetTokenAsync("id_token");
}
appsettings.json
"AzureAd": {
"Instance": "https://login.microsoftonline.com/",
"Domain": "mydomain",
"TenantId": "organizations",
"ClientId": "myclientid",
"ClientSecret": "myclientsecret",
"CallbackPath": "/signin-oidc",
"SignedOutCallbackPath ": "/signout-callback-oidc"
}
【问题讨论】:
-
在这种情况下,您可以使用 MSAL 获取令牌。使用 OIDC,您需要在身份验证后交换令牌代码。您可以设置一个回调,您可以在其中使用 MSAL 获取令牌并将它们存储在令牌缓存中。然后在其他部分,您可以使用 AcquireToken 的静默变体来获取缓存/刷新的令牌。
标签: azure azure-active-directory openid-connect