36-应用Jwtbearer Authentication

Posted qinzb

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了36-应用Jwtbearer Authentication相关的知识,希望对你有一定的参考价值。

新建.net core webapi项目

E:coding
etcore>dotnet new webapi --name JwtAuthSample

创建需要用到的实体对象类

namespace JwtAuthSample.Models
{
    public class JwtSettings{
        //发现者
        public string Issure{get;set;}
        //使用者
        public string Audience{get;set;}
        //jwt使用的密码
        public string SecretKey {get;set;}

    }
}

在appsettings.json 中增加映射到实体类JwtSettings的配置文件

"JwtSettings":{
    "Issure":"http://localhost:5000",
    "Audience":"http://localhost:5000",
    "SecretKey":"[email protected]@33311fasdfsad"
  }

 

在StartUp.cs方法ConfigureServices中配置如下代码,用于Jwt验证

  public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);

            services.Configure<JwtSettings>(Configuration.GetSection("JwtSettings"));
            var jwtSetting =  new JwtSettings();
            Configuration.Bind("JwtSettings",jwtSetting);

            services.AddAuthentication(options=>{
                options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
                options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
            })
            .AddJwtBearer(jwtOption=>{
                jwtOption.TokenValidationParameters=new Microsoft.IdentityModel.Tokens.TokenValidationParameters{
                    ValidIssuer = jwtSetting.Issure,
                    ValidAudience = jwtSetting.Audience,
                    IssuerSigningKey = new Microsoft.IdentityModel.Tokens.SymmetricSecurityKey(
                        System.Text.Encoding.UTF8.GetBytes(jwtSetting.SecretKey)
                    )
                };
            });
        }

为了让受权生效,需要在Configure启用授权

技术分享图片

 

接下来测试授权有没有生效

需要在要授权的类或方法上加下[Authorize]特性

技术分享图片

 

 

通过测试器访问 http://localhost:5000/api/values/ ,会出出现401未授权错误

技术分享图片

 

以上是关于36-应用Jwtbearer Authentication的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET Core 中的混合身份验证(Windows 和 AAD JwtBearer)

在ASP.NET Core中轻松使用JwtBeare进行身份验证

在 NSwag SwaggerUi 中实现 JwtBearer 身份验证

JwtBearer TokenValidationParameters 似乎没有经过测试

ASP.Net Core 3 API 总是返回 401- JwtBearer

SignalR的JwtBearer认证