1

我有一個webapi,我需要身份驗證,我在V1中使用AAD執行此操作。使用Azure Active Directory進行netcore2身份驗證:「簽名無效」

我都集,與郵遞員我可以得到一個令牌,但是,每當我試圖做一個請求到API,它給我的錯誤401:

承載錯誤=「INVALID_TOKEN」 ERROR_DESCRIPTION = 「簽名是無效」

這是ConfigurationServices的代碼:

services.AddAuthentication(sharedOptions => 
    { 
     sharedOptions.DefaultScheme = JwtBearerDefaults.AuthenticationScheme; 

    }) 
    .AddAzureAdBearer(options => Configuration.Bind("AzureAd", options)); 

這是天藍色認證生成的類:

public static AuthenticationBuilder AddAzureAdBearer(this AuthenticationBuilder builder) 
     => builder.AddAzureAdBearer(_ => { }); 

    public static AuthenticationBuilder AddAzureAdBearer(this AuthenticationBuilder builder, Action<AzureAdOptions> configureOptions) 
    { 
     builder.Services.Configure(configureOptions); 
     builder.Services.AddSingleton<IConfigureOptions<JwtBearerOptions>, ConfigureAzureOptions>(); 
     builder.AddJwtBearer(); 
     return builder; 
    } 

    private class ConfigureAzureOptions: IConfigureNamedOptions<JwtBearerOptions> 
    { 
     private readonly AzureAdOptions _azureOptions; 

     public ConfigureAzureOptions(IOptions<AzureAdOptions> azureOptions) 
     { 
      _azureOptions = azureOptions.Value; 
     } 

     public void Configure(string name, JwtBearerOptions options) 
     { 
      options.Audience = _azureOptions.ClientId; 
      options.Authority = $"{_azureOptions.Instance}{_azureOptions.TenantId}"; 
     } 

     public void Configure(JwtBearerOptions options) 
     { 
      Configure(Options.DefaultName, options); 
     } 
    } 

這裏缺少什麼?可以請幫忙嗎?

謝謝

+1

送你如何發送承載令牌,令牌?應該有一個頭'授權持有人<你的代幣到這裏>'。也可以看看[這個答案](https://stackoverflow.com/a/45833632/2869344),看看它是否可以幫助你使用API​​配置。 – pcdev

+0

是的,我有頭... – HLourenco

回答

0

由於pcdev在他的評論中說,確保您授權頭添加到所有請求。

JWT令牌應該由三部分分開。簽名是第三部分。

您可以檢查您在http://jwt.calebb.nethttps://jwt.io

+0

它沒有工作,我有正確的標題,但它沒有工作。簽名最後有[簽名]。還有一件事呢? – HLourenco

相關問題