全球授权.NET Core中的JWT

时间:2016-08-08 21:30:29

标签: asp.net-core asp.net-core-mvc

我在我的.NET Core项目中使用自定义JWT jose-jwt。 (我尝试的所有其他auth方法都让人困惑。)我已经实现了所有内容,但我不确定如何在每个请求上验证令牌。我的API中的大多数函数都需要这个auth,所以我想全局注册它并指定所需的函数(基本上像[AllowAnonymous])。如果auth失败,我想要返回401。

我不需要为我编写完全代码,但我不确定如何编写并将其插入管道。我怎么能做到这一点?我是否正确地采取了这种方式?

2 个答案:

答案 0 :(得分:2)

验证JWT就像验证基本身份验证请求一样。

查看https://github.com/blowdart/idunno.Authentication中间件实现。

答案 1 :(得分:2)

首先,您需要在JwtBearerAuthentication方法中使用Configure中间件。

 app.UseJwtBearerAuthentication(new JwtBearerOptions
 {
      Authority = ...,
      Audience = ...
 });

对于全局授权,请参阅MVC Core How to force / set global authorization for all actions?

services.AddMvc(config =>
{
    var policy = new AuthorizationPolicyBuilder()
                     .RequireAuthenticatedUser()
                     .Build();
    config.Filters.Add(new AuthorizeFilter(policy));
});