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 似乎没有经过测试