如何在 Asp.Net Core 2.0 "AddJwtBearer" 中间件中设置多个受众?
How to set multiple audiences in Asp.Net Core 2.0 "AddJwtBearer" middleware?
我有一个 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
header 发送。一切正常。
我已经在 Azure Scheduler 中创建了一个作业并设置了 Active Directory OAuth
:
在 运行 作业后我收到此错误:Bearer error="invalid_token", error_description="The audience is invalid"
。
当我将 AddJwtBearer(...)
中的 options.Audience
设置为 https://management.core.windows.net/
时,作业有效但 SPA 无效。
我想,我需要将 Audience
设置为数组 ['CLIENT_ID', "https://management.core.windows.net/"]
,但 options.Audience
是 string
的类型。如果我根本不设置 Audience
,则 Spa 和 Job 都不起作用(401 未经身份验证)。将 Audience
设置为 CLIENT_ID,https://management.core.windows.net/
也不起作用。
有没有办法在 AddJwtBearer
中启用多个受众?
我想我 运行 遇到了和你一样的问题。为了让它发挥作用,我将观众从 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"
}
};
我有一个 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
header 发送。一切正常。
我已经在 Azure Scheduler 中创建了一个作业并设置了 Active Directory OAuth
:
在 运行 作业后我收到此错误:Bearer error="invalid_token", error_description="The audience is invalid"
。
当我将 AddJwtBearer(...)
中的 options.Audience
设置为 https://management.core.windows.net/
时,作业有效但 SPA 无效。
我想,我需要将 Audience
设置为数组 ['CLIENT_ID', "https://management.core.windows.net/"]
,但 options.Audience
是 string
的类型。如果我根本不设置 Audience
,则 Spa 和 Job 都不起作用(401 未经身份验证)。将 Audience
设置为 CLIENT_ID,https://management.core.windows.net/
也不起作用。
有没有办法在 AddJwtBearer
中启用多个受众?
我想我 运行 遇到了和你一样的问题。为了让它发挥作用,我将观众从 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"
}
};