2017-10-28 254 views
5

我有一个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 OAuthBearer error="invalid_token", error_description="The audience is invalid"Job - Active Directory OAuth

运行的工作,我得到这个错误后。

当我设置options.AudienceAddJwtBearer(...)https://management.core.windows.net/作业工作,但不是SPA。

我想,我需要将Audience设置为数组['CLIENT_ID', "https://management.core.windows.net/"],但options.Audiencestring的类型。如果我根本没有设置Audience,那么Spa和Job都不起作用(401未经身份验证)。设置AudienceCLIENT_ID,https://management.core.windows.net/也不起作用。

有没有办法在AddJwtBearer中启用多个受众群体?

回答

8

我想我碰到了和你一样的问题。为了使它工作,我将受众从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" 
     } 
    }; 
+0

这正是我正在寻找。作品。谢谢。 –

相关问题