学习ASP.NET Core的身份认证(基于JwtBearer的身份认证2)

  根据参考文献8中的介绍,JWT Token主要分为3个部分:
  1)标题(Header):主要记录令牌类型、签名算法(加密算法)类型,格式为Json字符串,然后使用Base64编码字符串;
  2)有效负载(Payload):包括账号、姓名、颁发者等信息的声明集合,格式为Json字符串,然后使用Base64编码字符串。该部分为Token的关键内容,从中可以获取所用用户账号信息,但由于仅用Base64处理,没有什么安全性可言,最好不要在其中放置密码等敏感数据。参考文档8中将声明信息分为3类:已注册声明(参考文献10)、公共声明(参考文献9)、自定义声明(约定好的、在各个系统之间传递的数据);
  3)签名(Signature):该部分内容的产生方式是用标题中指定的加密算法,使用密钥对标题和有效负载加密或签名(如下图所示)。签名部分的数据起到防篡改的作用,只要密钥未泄露,接收JWT Token的一方根据标题和有效负载,使用相同的算法及密钥应该也能生成相同的签名(非对称算法应该是完成验签),只要和Token中的签名一致即表明Token未被篡改,是可信的。

  分析参考文献1-7,生成JWT Token主要使用Claim、SigningCredentials、JwtSecurityToken和JwtSecurityTokenHandler类:
  1)Claim:与之前基于Cookie、Session认证中的声明类一样,保存各类用户信息,Token中有效负载部分的主体内容即为Claim对象实例;
  2)SigningCredentials:加密类,该类的构造函数可以接收密钥及加密算法类型,以支持签名/验签操作;
  3)JwtSecurityToken:该类为Token的结构化数据类,如下图所示,通过该类可以设置Token中的有效负载、加密方式、过期时间等数据;

  4)JwtSecurityTokenHandler:该类的WriteToken函数基于JwtSecurityToken实例生成Token字符串。
  上一篇文章中的测试程序使用参考文献4的代码创建Token,将Token字符串放到参考文献8提供的Token解析页面,可以看到能正确的从Token中将标题和有效负载中的内容还原。

  找了个在线解析Base64字符串的页面,将Token中的有效负载内容解码,可以看到原始内容,因此最好不要在其中放置敏感内容,以防数据泄露。

参考文献:

1https://www.jianshu.com/p/a2804e72d296

2https://blog.csdn.net/sD7O95O/article/details/85043160

3https://www.cnblogs.com/qiongkangle/p/13347283.html

4https://www.cnblogs.com/xbhp/p/17401507.html

5https://www.cnblogs.com/superstar/p/16491428.html

6https://blog.csdn.net/weixin_44877917/article/details/140609294

7https://blog.csdn.net/qq_40287041/article/details/143368882

8https://jwt.io/introduction

9https://www.iana.org/assignments/jwt/jwt.xhtml

10https://tools.ietf.org/html/rfc7519#section-4.1

相关推荐
FungLeo1 天前
成为全栈·Go 后端篇·跨语言认证兼容:Node 与 Go 如何互认 JWT 和密码
golang·go·jwt·身份认证·成为全栈·bcrypt
FungLeo14 天前
成为全栈·Flutter App 篇·会员中心:资料、密码、通知与私有数据缓存
flutter·dart·身份认证·数据隔离·成为全栈·会员中心
安当加密030115 天前
动态口令认证如何选型
身份认证·mfa·双因素认证·动态口令认证如何选型·动态口令认证
安当加密-焱垚16 天前
身份认证凭据管理系统
身份认证·凭据管理·身份认证凭据管理系统·登录认证中如何应用凭据管理系统·身份认证中如何应用凭据管理系统
躺柒16 天前
读数据安全架构设计与实践03身份认证(上)
网络安全·信息安全·数据安全·安全架构·身份认证
FungLeo17 天前
成为全栈·Flutter App 篇·Refresh Token 旋转与并发 401:安全存储与会话代次
flutter·jwt·移动安全·身份认证·token刷新·成为全栈
安当加密03011 个月前
动态口令认证实施案例
身份认证·国密算法·双因素认证·动态口令·实施落地
安当加密03011 个月前
动态口令认证排行榜
数据加密·身份认证·国密算法·动态口令·采购人选型
2601_962297252 个月前
JumpServer使用OpenID对接Azure AD身份认证
堡垒机·jumpserver·身份认证·openid·azuread
安当加密03012 个月前
矿山智能化身份认证与煤安合规解读:信息系统安全建设到认证落地
身份认证·密钥管理·ukey·矿山智能化·煤安合规