JWT学习心得
JWT学习心得
JWT含义:
jwt是json web token 的缩写,是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准(RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外的其它业务逻辑所必须的声明信息,该token也可直接被用于认证,也可被加密。
- API保护
- 为什么要保护API
1) 防泄漏
2) 防攻击
- 设计原则
1) 轻量级
2) 易于开发、测试和部署
3) 适合于异构系统,跨操作系统,多语言简易实现
4) 所有写操作接口增、删、改操作
5) 非公共的读接口,如:涉密、敏感、隐私等
- 加密算法
1) ES
2) RSA
3) Base64
4) MD5
- 有哪些保护方式
1) 非登陆:自约定数据加密
2) 登陆:登陆session+cookie
3) 登陆:JWT
- JWT核心知识
- 什么是claim
Claim 本意有
vt.声称;索取;断言;需要
vi.提出要求
n.索赔;声称;(根据权利而提出的)要求;断言
断言是比较准确的释义,另外可以理解成声明,每一条claim 都代表了一条票据的信息,比如示例票据上的姓名等等。claim 的基本组成是 type和value,上面票据中左侧的就是type右面就是value在 .net core 基础类库中是含有Claim的实现类的,它的位置是
System.Security.Claims.Claim
- 什么是jwt
- httpContext是如何通过claim鉴权?--Bearer认证(持票人)
- 注册JwtBearer认证
- JWT 的好处
1) 服务无状态
2) 解决跨域问题:这种基于Token的访问策略可以克服cookies的跨域问题。
3) 服务端无状态可以横向扩展,Token可完成认证,无需存储Session。
4) 系统解耦,Token携带所有的用户信息,无需绑定一个特定的认证方案,只需要知道加密的方法和密钥就可以进行加密解密,有利于解耦。
5) 防止跨站点脚本攻击,没有cookie技术,无需考虑跨站请求的安全问题。
- 如何使用JWT
- 授权(AddAuthorization
1) 无状态授权: [Authorize]
2) 有状态授权:[Authorize("Permission")]
- 认证(AddAuthentication)
1) 开启 Bearer 认证
2) 注册 JwtBearer或者 IdentityServerAuthentication
- 中间件(UseAuthentication)
app.UseAuthentication();
- 小技巧
- 监视运行命令:dotnet watch run 代码修改了会自动退出,监控文件修改,启动开始监听。
- 查看token令牌,https://jwt.io
Chrom命令: atob