c# - WebAPI 不尊重授权属性的 Jwt token

标签 c# asp.net angularjs asp.net-web-api jwt

我已经实现了所有步骤 here以及该站点上的其他教程,以使用 AngularJS 和 WebAPI 在我的应用程序中发布和使用 Jwt。在我的 Startup.cs 中,当存在 AuthorizeAttribute 时,我调用以下函数告诉应用程序消费者 Jwt token :

    private void ConfigureOAuthTokenConsumption(IAppBuilder app)
    {

        string issuer = MyIssuer;
        string audienceId = MyAudienceID;
        X509Certificate2 cert = GetMyCertificate();

        // Api controllers with an [Authorize] attribute will be validated with JWT
        app.UseJwtBearerAuthentication(
            new JwtBearerAuthenticationOptions
            {
                AuthenticationMode = AuthenticationMode.Active,
                AllowedAudiences = new[] { audienceId },
                IssuerSecurityTokenProviders = new IIssuerSecurityTokenProvider[]
                {
                    new X509CertificateSecurityTokenProvider(issuer, cert)
                }
            });
    }

当我运行应用程序时,我可以很好地登录,很好地生成 Jwt token ,以 Angular 使用它们并将它们添加到 API 请求中,但我仍然得到 404。我一定是在 Jwt 配置中遗漏了一些东西,所以它没有经过验证,但我没有收到任何错误。

我尝试实现一个客户 AuthorizeAttribute,并在 IsAuthorized 方法中放置一个断点。您可以看到请求包含 Bearer token ,但 IsAuthorized 返回 false,并且未设置 Principal。

有谁知道我可能遗漏了什么?我离这里很近。

最佳答案

我可能在这里没有足够的信息来正确回答这个问题,但结果是我没有以正确的顺序提交我的 OWIN 配置语句。在 Startup.cs 中,我将 app.UseWebApi(config); 放在配置我的授权模块的代码之前。将 app.UseWebApi(config); 放在配置代码的末尾使其开始工作。

我在 ASP.NET 论坛上更好地提出了这个问题:http://forums.asp.net/p/2070482/5976299.aspx?p=True&t=635803483826595456

关于c# - WebAPI 不尊重授权属性的 Jwt token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33043690/

相关文章:

c# - 向按钮添加 UAC 屏蔽并保留其背景图像?

c# - 我可以重用代码来为 EF Core 的子属性选择自定义 DTO 对象吗?

c# - 如何在 ASP.NET 中调试生产应用程序?

asp.net - 发布期间未复制引用程序集的 xml 文档

javascript - 使用 ng-if 的多个元素总是只显示其中 1 个,它们可以共享相同的 id 吗?

javascript - 在 AngularJs 中使用两种过滤器过滤一些数据但不起作用

c# - MVC中的文件上传

c# - 在 C# 中连接两个 json 字符串

c# - 你在你的网络应用程序中使用锁吗?

angularjs - Jasmine 测试矩形响应