安全认证之JWT令牌

本文深入讲解JWT(JSON Web Tokens)认证机制,介绍JWT的工作原理、优缺点及令牌结构。阐述了JWT如何简化用户认证过程,通过自包含的令牌实现资源服务的安全访问。同时,提供了生成公钥和私钥的方法,以及如何导出公钥的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、使用JWT的思路

1.1、使用JWT的思路

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

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、令牌结构

 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:  密钥库的访问密码

2、查询证书信息

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

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

 下面一段就是公钥内容

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值