如何在Asp.Net Core 2.0“AddJwtBearer”中间件中设置多个受众?
问题描述:
我有一个Asp.Net核2.0的WebAPI该认证对AAD:如何在Asp.Net Core 2.0“AddJwtBearer”中间件中设置多个受众?
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(...)
到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"
}
};
这正是我正在寻找。作品。谢谢。 –