01
CAS - Central Authentication Server
CAS 全称 Central Authentication Server,也称作中央认证服务,是支持 JWT 的。
其分为两个部分:CAS 服务端(CAS Server) 和 CAS 客户端(CAS Client)。服务端负责认证工作,独立部署;客户端负责处理访问请求,需要登录时,重定向到服务端。
认证流程
-
浏览器向客户端请求提供某个受保护的资源。
-
重定向到服务端进行认证
-
用户进行身份认证
-
服务端生成票据
-
客户端向服务端验证票据
-
验证成功返回用户信息
02
JWT - JSON Web Token
JWT 是一种用于在两方之间安全地表示声明的方法,是 token 思想的一种实现方式。
组成部分
本质上就是一个字符串,但是其带有签名信息,接收后可以校验是否正确或是否被篡改等。JWT 组成分为三个部分,每个部分用点号连接,像是这样:
HEADER.PAYLOAD.SIGNATURE
-
HEADER:用于声明 算法 和 token 类型,alg 表明算法是 HS256,typ 表明类型是 JWT,如下:
{
"alg": "HS256",
"typ": "JWT"
}
-
PAYLOAD:存放所需传递的数据,有默认字段也可以自定义私有字段(这是未加密的,仅进行了编码,只能传递非敏感的信息),如下:
{
// 自带的默认字段
"iss": "发行人",
"exp": "到期时间",
"sub": "主题",
"aud": "用户",
"nbf": "在此之前不可用",
"iat": "发布时间",
"jti": "ID用于标识JWT",
// 自定义的字段
"name": "Tom",
"admin": true
}
-
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. 客户端(浏览器)收到业务数据,进行处理并使用

关于 Authing
Authing 是国内首款以开发者为中心的全场景身份云产品,为企业和开发者提供完善安全的用户认证和访问管理服务。作为云原生架构下的身份云产品,Authing 在产品创建初期,目标就是服务亿级的企业和个人开发者客户,轻量级、易部署、低消耗、技术栈成熟,运维易的云原生技术产品架构,成为了 Authing 的首选。
点击此处了解更多行业身份管理
「解决方案」以及「最佳实践案例」