Не удается получить токен доступа из HttpContext для AAD с OpenIDConnect - PullRequest
0 голосов
/ 05 июля 2019

Я настроил Open ID Connect с Azure AD. Я хочу получить access_token из AAD. В настоящее время я могу получить только 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"
  }

Ответы [ 2 ]

0 голосов
/ 10 июля 2019

Мне удалось это исправить. Для любого, кто столкнется с этой проблемой, установите тип ответа Код , чтобы получить и id_token, и access_token. Это заставит Open ID Connect использовать поток кода авторизации.

options.ResponseType = OpenIdConnectResponseType.Code
0 голосов
/ 06 июля 2019

Вам необходимо будет использовать CodeIdTokenToken тип ответа, согласно документации

options.ResponseType = OpenIdConnectResponseType.CodeIdTokenToken;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...