免费注册,打造高效身份管理
博客/开发者/jwt 单点登录和 cas 单点登录有什么区别?
jwt 单点登录和 cas 单点登录有什么区别?
Authing 官方2022.08.31阅读 1704

01

CAS - Central Authentication Server

CAS 全称 Central Authentication Server,也称作中央认证服务,是支持 JWT 的。
 
其分为两个部分:CAS 服务端(CAS Server) 和 CAS 客户端(CAS Client)。服务端负责认证工作,独立部署;客户端负责处理访问请求,需要登录时,重定向到服务端。

认证流程

  1. 浏览器向客户端请求提供某个受保护的资源。
  1. 重定向到服务端进行认证
  1. 用户进行身份认证
  1. 服务端生成票据
  1. 客户端向服务端验证票据
  1. 验证成功返回用户信息

02

JWT - JSON Web Token

JWT 是一种用于在两方之间安全地表示声明的方法,是 token 思想的一种实现方式。

组成部分

本质上就是一个字符串,但是其带有签名信息,接收后可以校验是否正确或是否被篡改等。JWT 组成分为三个部分,每个部分用点号连接,像是这样:

 
HEADER.PAYLOAD.SIGNATURE
 
  1. HEADER:用于声明 算法 和 token 类型,alg 表明算法是 HS256,typ 表明类型是 JWT,如下:
 
{
  "alg": "HS256",
  "typ": "JWT"
}
 
  1. PAYLOAD:存放所需传递的数据,有默认字段也可以自定义私有字段(这是未加密的,仅进行了编码,只能传递非敏感的信息),如下:
 
{
    // 自带的默认字段
    "iss": "发行人",
    "exp": "到期时间",
    "sub": "主题",
    "aud": "用户",
    "nbf": "在此之前不可用",
    "iat": "发布时间",
    "jti": "ID用于标识JWT",
    // 自定义的字段
    "name": "Tom",
    "admin": true
}
 
  1. VERIFY SIGNATURE:结构如下,将 HEADER 、PAYLOAD 、secret密钥 三个部分分别进行 base64UrlEncode 的操作(secret 可以不 encode),然后使用自己所选的算法(在 HEADER 中指定)进行计算,得出的结果便是此部分的内容。
 
HMACSHA256(
  base64UrlEncode(header) + "." +
  base64UrlEncode(payload) + "." +
  secret 或者 base64UrlEncode(secret)
) 
 

认证流程

1. 客户端(浏览器)向服务端发送账号密码请求登录

2. 服务端校验账号密码并生成 JWT Token 将其返回

3. 客户端(浏览器)保存 JWT Token,下次需要请求时将其携带

4. 服务端校验 JWT Token 信息(像 VERIFY SIGNATURE 部分一样进行相同操作,取出 header 和 payload 并加上 secret 一同进行 encode,然后比对此部分是否一致),然后验证有效性、是否过期等等,通过后返回业务数据

5. 客户端(浏览器)收到业务数据,进行处理并使用

文章作者

avatar

Authing 官方

0

文章总数

authing blog rqcode
关注 Authing 公众号
随时随地发现更多内容
authing blog rqcode
添加 Authing 小助手
加入 Authing 开发者大家庭
身份顾问在线解答
当前在线
如何打造完整的身份体系?
立即沟通
authing
添加企业微信,领取行业资料
authing
authing
下载 Authing 令牌,体验快速登录认证!
免费使用
在线咨询
电话咨询