安全认证之JWT令牌

一、使用JWT的思路

1.1、使用JWT的思路

用户认证通过会得到一个JWT令牌,JWT令牌中已经包括了用户相关的信息,客户端只需要携带
JWT访问资源服务,资源服务根据事先约定的算法自行完成令牌校验,无需每次都请求认证服务完成授权。

安全认证之JWT令牌_第1张图片

1.2、JWT简介

JSON Web Tokens are an open, industry standard  method for representing claims securely between two parties。JWT.IO allows you to decode, verify and generate JWT。JSON Web令牌是一种开放的行业标准方法,用于在双方之间安全的表示声明。JWT.IO允许你节码,验证和生成JWT。

JWT它定义了一种简介的、自包含的协议格式,用于在通信双方传递json对象,传递的信息经过数字签名可以被验证和信任。JWT可以使用HMAC算法或使用RSA的公钥/私钥对来签名,防止被篡改。

官网:https://jwt.io/

详细简介:https://jwt.io/introduction/

1.3、JWT令牌的优缺点

优点:

  • Jwt基于json,非常方便解析
  • 可以在令牌中自定义丰富的内容,易扩展
  • 通过非对称加密算法及数字签名技术,JWT防止篡改,安全性高
  • 资源服务使用JWT可不依赖认证服务即可完成授权

缺点:

  • JWT令牌较长,占存储空间比较大

1.4、令牌结构

安全认证之JWT令牌_第2张图片

 1.5、令牌如何工作

 二、JWT入门

2.1、生成公钥和私钥

JWT令牌生成采用非对称加密算法

1、生成密钥证书

//采用RSA算法生成证书包含公钥和私钥
keytool -genkeypair -alias waggagkey -keyalg RSA -keypass waggag -keystore waggag.keystore -storepass waggagkeystore

Keytool 是一个java提供的证书管理工具

  • alias:          密钥的别名
  • keyalg:       使用的hash算法
  • keypass:    密钥的访问密码
  • keystore:    密钥库文件名,xc.keystore保存了生成的证书
  • storepass:  密钥库的访问密码

安全认证之JWT令牌_第3张图片

2、查询证书信息

//查询证书信息
keytool -list -keystore waggag.keystore

安全认证之JWT令牌_第4张图片

3、删除别名

//删除别名
keytool -delete -alias waggagkey -keystore waggag.keystore

注意:密钥删除并不能删除文件

2.2、导出公钥

安装OpenSSL: http://slproweb.com/products.html

配置OpenSSL的PATH环境变量

//使用OpenSSL生成密钥
keytools -list -rfc --keystore waggag.keystore | openssl x509 -inform pem -pubkey

安全认证之JWT令牌_第5张图片

 下面一段就是公钥内容

-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAn7/6W8BXEtfOr1GfNbue
lFC91NoBuO/j7I5Mnsr81d6M+s2AnOCxxX68+q9MI2Q5ZhBOueRxRuiE4lmbQij6
36MzIWGUybc7xSM6B5lk5CpuxzupffUTLVll2tjb4/8nXMlLHqAia3IM0ZdmvB09
JFHDomWjQycAYWVtsMedOW7eXaBVVqYIkLAPwnBk7npBQhjFBJ1c/d5YkwsM5WP5
+yt+I16T3bbadCAyC38rFlJZfoIgSPSvnadAuyH7JULwiSAZgMXYpqxBq00yppcw
KdNfE2e+Ncci7PlhXniUJ5D0HKqQCR+gpTS8roBve8HiTqQ9aD0hGeqlaFM6XKTM
tQIDAQAB
-----END PUBLIC KEY-----

 

你可能感兴趣的:(基础,SpringBoot)