Azure Can';无法通过OpenIDConnect从HttpContext获取AAD的访问令牌

Azure Can';无法通过OpenIDConnect从HttpContext获取AAD的访问令牌,azure,azure-active-directory,openid-connect,Azure,Azure Active Directory,Openid Connect,我已配置Open ID Connect with Azure AD。我希望从AAD检索访问令牌。目前我只能检索id_令牌。我已将Azure Active Directory应用程序注册配置为同时包含访问令牌和id令牌 我已将Azure Active Directory应用程序注册配置为同时包含访问令牌和id令牌。 我还尝试了从标题中检索令牌,但没有任何运气 Startup.cs services.AddAuthentication(AzureAddFaults.AuthenticationSch

我已配置Open ID Connect with Azure AD。我希望从AAD检索访问令牌。目前我只能检索id_令牌。我已将Azure Active Directory应用程序注册配置为同时包含访问令牌和id令牌

我已将Azure Active Directory应用程序注册配置为同时包含访问令牌和id令牌。 我还尝试了从标题中检索令牌,但没有任何运气

Startup.cs

services.AddAuthentication(AzureAddFaults.AuthenticationScheme)
.AddAzureAD(options=>Configuration.Bind(“AzureAD”,options));
配置(AzureADDefaults.OpenIdScheme,选项=>
{
options.Authority=options.Authority+“/v2.0/”;
options.TokenValidationParameters.ValidateIsuer=true;
options.ResponseType=OpenIdConnectResponseType.CodeIdToken;
options.SaveTokens=true;
});
MyController.cs

if(User.Identity.IsAuthenticated)
{
string accessToken=await HttpContext.GetTokenAsync(“访问令牌”);
string idToken=await-HttpContext.GetTokenAsync(“id_-token”);
}
appsettings.json

“AzureAd”:{
“实例”:https://login.microsoftonline.com/",
“域”:“mydomain”,
“租户”:“组织”,
“客户端ID”:“myclientid”,
“ClientSecret”:“myclientsecret”,
“回调路径”:“/登录oidc”,
“SignedOutCallbackPath”:“/注销回调oidc”
}

根据


options.ResponseType=OpenIdConnectResponseType.CodeIdTokenToken

我设法解决了这个问题。对于可能遇到此问题的任何人,请将响应类型设置为Code,以获取id\u令牌和access\u令牌。这将指示Open ID Connect使用授权代码流

options.ResponseType = OpenIdConnectResponseType.Code

在这种情况下,您可以使用MSAL获取令牌。使用OIDC,您需要在身份验证后为令牌交换代码。您可以设置一个回调,使用MSAL获取令牌并将其存储在令牌缓存中。然后在其他部分中,您可以使用AcquireToken的静默变体来获取缓存/刷新的令牌。您将此选项放在了哪里?