【问题标题】:asp.net core webapi secured by Azure Active Directory v1由 Azure Active Directory v1 保护的 asp.net 核心 webapi
【发布时间】:2017-11-25 00:49:39
【问题描述】:

我有一个应用程序,它在前端使用 React,在后端使用 asp.net core webapi。

为了保护前端,我使用了 adal.js,它运行良好。我可以获得令牌和我需要的所有信息。

问题是我想将令牌传递给 webapi,它应该允许或阻止请求。过去有 nuget Microsoft.Owin.Security.ActiveDirectory 效果很好,但现在看来我应该使用 Microsoft.AspNetCore.Authentication.JwtBearer 并且情况不同了。

我已在经典 Azure 门户中设置客户端/api 应用程序,并授予对 api 的访问权限以验证客户端的令牌。

这是我的 Startup.cs 的样子:

        app.UseJwtBearerAuthentication(new JwtBearerOptions
        {
            AutomaticAuthenticate = true,
            AutomaticChallenge = true,
            Authority = ConfigurationManager.AppSettings["ida:AADInstance"] + ConfigurationManager.AppSettings["ida:TenantId"],
            Audience = ConfigurationManager.AppSettings["ida:Audience"],
        });

当我尝试使用 [Authorize] 属性访问 webapi 控制器时(使用不记名令牌传递授权标头),我收到以下错误:

Microsoft.AspNetCore.Hosting.Internal.WebHost:信息:请求开始 HTTP/1.1 POST http://localhost:44304/api/v1/Temp 0 Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerMiddleware:信息:无法验证令牌eyJ0eXAiOiJK...

Microsoft.IdentityModel.Tokens.SecurityTokenInvalidSignatureException:IDX10500:签名验证失败。没有提供安全密钥来验证签名。 在 System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler.ValidateSignature(字符串令牌,TokenValidationParameters 验证参数) 在 System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler.ValidateToken(字符串令牌,TokenValidationParameters 验证参数,SecurityToken 和验证令牌) 在 Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerHandler.d__1.MoveNext()

我已经尝试了所有不同的设置,但似乎都不起作用。我找到的资源与 Azure AD B2C 或 Azure AD v2 端点有关,因为由于 adal.js,我仍在使用“经典”,我找不到任何可以帮助我的东西。

有什么线索吗?提前致谢。

PS:由于我还在开发中,SSL 证书是无效的。我不确定它是否与此错误有关。

更新

在实施@Saca 答案后,我现在收到以下错误:

Microsoft.AspNetCore.Authorization.DefaultAuthorizationService:信息:用户授权失败:(null)。 Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker:信息:过滤器“Microsoft.AspNetCore.Mvc.Authorization.AuthorizeFilter”处的请求授权失败。 Microsoft.AspNetCore.Mvc.ChallengeResult:信息:使用身份验证方案执行 ChallengeResult ()。 Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerMiddleware:信息:AuthenticationScheme:Bearer 被质询。

【问题讨论】:

  • 您能否提供指向您所指的@Saca 答案的链接,或者如果将其删除,请简要解释他的答案?我遇到了完全相同的问题...
  • 他好像删除了评论。不幸的是,我无法再访问代码了。但我很乐意为您提供帮助,请通过 twitter @thdotnet 联系我

标签: asp.net-core jwt azure-active-directory adal asp.net-core-webapi


【解决方案1】:

经过一下午的尝试,这里的解决方案是:

在我的 Startup.cs 中,我在 app.UseCors(CorsPolicy); 之前设置了 AD 内容

我只是切换,现在它工作正常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 2017-08-29
    • 2021-10-28
    • 2017-03-14
    • 1970-01-01
    相关资源
    最近更新 更多