Это мой код startup.cs
services.AddAuthentication(sharedOptions =>
{
sharedOptions.DefaultScheme = JwtBearerDefaults.AuthenticationScheme;
})
.AddAzureAdBearer(configureOptions =>
{
configureOptions.Instance = Environment.GetEnvironmentVariable("AD_Instance");
configureOptions.Domain = Environment.GetEnvironmentVariable("AD_Domain");
configureOptions.TenantId = Environment.GetEnvironmentVariable("AD_TenantId");
configureOptions.ClientId = Environment.GetEnvironmentVariable("AD_ClientId");
}
JwtBearerDefaults.AuthenticationScheme является носителем
Это мои варианты:
public void Configure(string name, JwtBearerOptions options)
{
options.Audience = _azureOptions.ClientId;
options.Authority = $"{_azureOptions.Instance}{_azureOptions.TenantId}";
options.TokenValidationParameters = new TokenValidationParameters()
{
ValidateIssuer = false
};
options.SaveToken = true;
}
Теперь, согласно многим блогам и вопросам и ответам здесь, я использую этот код для извлечения токена: (кстати, приложение отлично работает уже более 6 месяцев, не рассматривайте некоторые проблемы с настройкой)
var token = _httpContextAccessor.HttpContext.GetTokenAsync("access_token");
И вот что он возвращает:
Что мне нужно, так это access_token. бывший. Предъявитель eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1...
ОБНОВЛЕНИЕ: после того, как я увидел комментарии/ответы, я добавил await, но в результате получил null.
var token =await _httpContextAccessor.HttpContext.GetTokenAsync("access_token")
или ждать синхронноvar token =_httpContextAccessor.HttpContext.GetTokenAsync("access_token").GetAwaiter().GetResult()
- person Dmitry Pavliv   schedule 30.03.2018