Azure AD B2C WebApp调用WebApi - >签名验证失败

时间:2017-08-22 06:37:23

标签: c# .net-core azure-ad-b2c

我正在尝试使用令牌身份验证从我的WebApp访问我的WebApi。我已成功登录到我的WebApp。然后我要求一个新的令牌:

var signedInUserID = _idenetityParser.Parse().Id.ToString();

var userTokenCache = new MSALSessionCache(signedInUserID, _httpContext).GetMsalCacheInstance();

var cca = new ConfidentialClientApplication(
     _azureOptions.ClientId,
     _azureOptions.Authority,
     "http://localhost/",
      new ClientCredential(_azureOptions.ClientSecret), userTokenCache, null);


var result = await cca.AcquireTokenSilentAsync(new string[] { "https://tests.onmicrosoft.com/company/rw" }, cca.Users.FirstOrDefault(), _azureOptions.Authority, false);

return result.AccessToken;

这很好用,我得到了一个新请求范围的AccessToken。

然后我使用HttpClient调用WebApi,将Authorization Header设置为Bearer并传入令牌。之后我收到以下错误:

  

Microsoft.IdentityModel.Tokens.SecurityTokenInvalidSignatureException:   IDX10500:签名验证失败。没有提供安全密钥   验证签名。

我在WebApi上使用以下设置:

services.AddAuthentication(options =>
{
    options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
    options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
}).AddJwtBearer(options => new JwtBearerOptions
{
    Authority = string.Format("https://login.microsoftonline.com/tfp/{0}/{1}/v2.0/", Configuration["Authentication:AzureAd:Tenant"], Configuration["Authentication:AzureAd:Policy"]),
    Audience = Configuration["Authentication:AzureAd:ClientId"],
    Events = new JwtBearerEvents
    {
        OnAuthenticationFailed = AuthenticationFailed,
        OnTokenValidated = OnTokenValidated
    }
});

我在WebApp和WebApi上检查了权限,它们是相同的。我使用https在本地开发计算机上运行。

不确定下一步该怎么做才能找到问题。任何建议都表示赞赏。

0 个答案:

没有答案