Вызов графа Azure Active Directory с токеном авторизации, пытающимся получить доступ к сохраненному токену в пользовательском компоненте ASP.NET Core 2.1
Если имеется больше групп, тогда информация AAD содержит ссылку на API-графа, которую я должен вызывать извне с использованием авторизациимаркер.В настоящее время я пытаюсь сохранить токен, используя options.SaveTokens = true;
в опциях openidconnection (при запуске).Я пытаюсь получить доступ к сохраненному токену в пользовательских компонентах.У вас есть идеи, как получить к нему доступ в asp.net core 2.1? см. Пользовательские компоненты
Я использовал HttpContext.GetTokenAsync("access_token")
подход, но он не работает в .NET Core 2.1
Startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddAuthentication(options => {
options.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
})
.AddCookie()
.AddOpenIdConnect(options => {
options.SaveTokens = true;
});
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
services.AddHttpContextAccessor();
services.AddTransient<IClaimsTransformation, ClaimsTransformer>();
}
Пользовательский компонент:
public class ClaimsTransformer : IClaimsTransformation
{
private readonly IHttpContextAccessor _httpContextAccessor;
public ClaimsTransformer(IHttpContextAccessor httpContextAccessor)
{
_httpContextAccessor = httpContextAccessor;
}
public async Task<ClaimsPrincipal> TransformAsync(ClaimsPrincipal principal)
{
try
{
if (principal.Identity.IsAuthenticated == true)
{
string accessToken = await _httpContextAccessor.HttpContext.GetTokenAsync("access_token"); //Gives stack overflow error
string idToken = await _httpContextAccessor.HttpContext.GetTokenAsync("id_token");
}
}
catch (Exception ex)
{
Console.Write("Exception", ex);
}
return await Task.FromResult(principal);
}
}