【问题标题】:Can't get access token from HttpContext for AAD with OpenIDConnect无法使用 OpenIDConnect 从 AAD 的 HttpContext 获取访问令牌
【发布时间】: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


【解决方案1】:

您将需要使用CodeIdTokenToken 响应类型,根据documentation

options.ResponseType = OpenIdConnectResponseType.CodeIdTokenToken;

【讨论】:

    【解决方案2】:

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

    options.ResponseType = OpenIdConnectResponseType.Code
    

    【讨论】:

    • 你把这个选项放在哪里了?
    猜你喜欢
    • 2019-04-27
    • 2022-09-28
    • 2018-03-01
    • 2019-04-11
    • 2013-08-23
    • 1970-01-01
    • 2018-10-10
    • 2021-01-22
    • 2018-09-20
    相关资源
    最近更新 更多