Приведенный выше фрагмент кода, прикрепленный в исходном сообщении, не раскрывает токен доступа, но внутренне ему удается получить токен доступа и проверить его, как сделать это более прозрачным способом?
Вы можете получить токены после аутентификации:
services.Configure<OpenIdConnectOptions>(AzureADDefaults.OpenIdScheme, options =>
{
options.Authority = options.Authority + "/v2.0/"; // Microsoft identity platform
options.SaveTokens = true;
options.TokenValidationParameters.ValidateIssuer = false; // accept several tenants (here simplified)
});
И получить токены в контроллере:
var idToken = await HttpContext.GetTokenAsync("id_token");
Но с вашими фрагментами кода он не вернется токен доступа, поскольку вы выполняете процесс входа, а не запрос токена. Вы должны использовать ADAL / MSAL для получения токена доступа для доступа к защищенным API. Смотрите примеры кода здесь .
, где я получаю токен доступа и проверяю его, используя пользовательский код для лучшего понимания.
Вы можете понять проверку подписи токена из здесь и здесь .