欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

基于JSON Web Tokens的单点登录(SSO)或通行证(Passport)系统方案

发布时间:2024/2/28 66 豆豆
生活随笔 收集整理的这篇文章主要介绍了 基于JSON Web Tokens的单点登录(SSO)或通行证(Passport)系统方案 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

首先简要介绍一下什么JWT(JSON Web Token)。

JWT是一种开放的,工业标准的规范,用于在两个应用之间安全地传输信息。

JWT由3个部分组成,分别是头部、载荷、签名。

头部部分

{
  "alg": "HS256",
  "typ": "JWT"
}

alg描述的是签名算法。


载荷部分

{
  "iss": "发行者",
  "sub": 主题",
  "aud": “观众”,

  "exp":"过期时间",

  "iat":"签发时间"

以下可以添加自定义数据

    "userid":"11111",

    “realname":"真实姓名",

    "email":"",
}

Base64算法是可逆的,不可以在载荷部分保存用户密码等敏感信息。如果业务需要,也可以采用对称密钥加密。


签名部分

HMACSHA256(Base64(Header) + "." + Base64(Payload),  secret)

签名的目的是用来验证头部和载荷是否被非法篡改。

验签过程描述:读取Header部分并Base64解码,得到签名算法。根据以上方法算出签名,如果签名信息不一致,说明是非法的。


JWT的基本原理介绍完毕,接下来描述如何基于JWT设计单点登录系统。

假设现在有系统www.example.com, passport.example.com.

用户首先访问passport.example.com,在表单输入用户名和密码,通过HTTPS Post提交请求到后端认证服务,后端认证服务查询用户数据库完成用户认证。

用户 认证成功后,假设只在Payload部分保存userid,生成Token ( Base64(header) + "." + Base64(payload) + "." + Base64(sign) ),作为cookie返回给客户端,

cookie保存在根域example.com。

用户访问www.example.com,会自动带上Token cookie。

后端服务需要完成Token的验签,过期时间判断等操作。验证成功就可以读取Payload信息完成接下来的业务功能。



参考资料

https://jwt.io/


总结

以上是生活随笔为你收集整理的基于JSON Web Tokens的单点登录(SSO)或通行证(Passport)系统方案的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。