Серверная сторона Blazor получает токен на предъявителя - PullRequest
0 голосов
/ 05 мая 2020

С. net core 3.1.4, я создал приложение Blazor на стороне сервера, которое использует аутентификацию Azure в активном каталоге. Я использую следующий json со значениями, указывающими на мой активный каталог azure.

{
  "AzureAd": {
    "Instance": "https://login.microsoftonline.com/",
    "Domain": "contoso.onmicrosoft.com",
    "TenantId": "e86c78e2-8bb4-4c41-aefd-918e0565a45e",
    "ClientId": "41451fa7-82d9-4673-8fa5-69eff5a761fd",
  }
}

Все работает отлично, значит, я могу войти в систему с учетными данными Azure AD, но в заголовках запроса httpcontext я делаю не получить токен доступа на предъявителя, который будет использоваться для дальнейшего вызова других моих API. Как в этом случае получить токен доступа на предъявителя для авторизованного пользователя?

Спасибо, Джей

1 Ответ

0 голосов
/ 06 мая 2020

Вы можете зарегистрировать свой OID C промежуточное ПО внутри ConfigureServices и установить для SaveTokens значение true:

services.AddAuthentication(AzureADDefaults.AuthenticationScheme)
        .AddAzureAD(options => Configuration.Bind("AzureAd", options));
services.Configure<OpenIdConnectOptions>(AzureADDefaults.OpenIdScheme, options =>
{       
    options.SaveTokens = true;
});

И обратитесь к этому примеру кода: { ссылка }, чтобы сохранить токены в localstorage для последующего использования.

В шаблоне по умолчанию вы получите токен идентификатора только через:

var id_token = await HttpContext.GetTokenAsync("id_token");

Поскольку вы выполняете только процесс входа в OpenID Connect, который response_type составляет id_token, если вы хотите получить токен доступа для доступа к другому веб-API, вы можете использовать Поток кода , вы можете использовать код для получения токена доступа в событии OnAuthorizationCodeReceived.

...