Как установить несколько аудиторий в Asp.Net ядро 2.0" AddJwtBearer " промежуточное ПО?
у меня есть Asp.Net Core 2.0 WebApi, который аутентифицируется против AAD:
services.AddAuthentication(options => { options.DefaultScheme = JwtBearerDefaults.AuthenticationScheme; })
.AddJwtBearer(options =>
{
options.Authority = "https://login.microsoftonline.com/TENANT.onmicrosoft.com";
options.Audience = "CLIENT_ID";
});
мое приложение SPA получает токен от AAD и отправляет его как bearer
заголовок. Все работает нормально.
я создал задание в планировщике и настройке Azure Active Directory OAuth
:
после выполнения задания я получаю эту ошибку: Bearer error="invalid_token", error_description="The audience is invalid"
.
когда я поставил options.Audience
на AddJwtBearer(...)
to https://management.core.windows.net/
работа работает, но не СПА.
Я думаю, мне нужно установить Audience
в массиве ['CLIENT_ID', "https://management.core.windows.net/"]
но options.Audience
тип string
. Если я не установлю Audience
на всех, и спа и работа не работают (401 unauthenticated). Настройка Audience
to CLIENT_ID,https://management.core.windows.net/
не работает.
есть ли способ включить несколько аудиторий в AddJwtBearer
?
1 ответов
Я думаю, что столкнулся с той же проблемой, что и вы. Чтобы заставить его работать, я переместил аудиторию из options
и TokenValidationParameters
, который принимает несколько записей. Проверьте код ниже:
.AddJwtBearer(options =>
{
options.Authority = "https://login.windows.net/trades.no";
options.TokenValidationParameters = new Microsoft.IdentityModel.Tokens.TokenValidationParameters
{
ValidateIssuer = true,
ValidAudiences = new List<string>
{
"AUDIENCE1",
"AUDIENCE2"
}
};