JSON Web Token

JSON Web Token(JWT) 是一个基于JSON的开放标准(RFC 7519),用于创建拥有身份属性的令牌。 例如,服务器可以生成一个令牌,该令牌具有“以管理员身份登录”的属性并将其提供给客户端,客户端可以使用该令牌来证明它以管理员身份登录。 令牌由服务器的密钥签名,因此客户端和服务器都能够验证该令牌是否合法。 令牌被设计成紧凑,URL安全和可用的特点,尤其是在Web浏览器单点登录(SSO)中被广泛使用。 JWT 的声明字段通常可用于身份提供商和服务提供商之间的身份验证,或业务流程所要求的其他类型的声明。

JWT 字符串结构分为三部分,用 “.” 分割

  • Header 头部
  • Payload 负载
  • Signature 签名

形式为 HHHH.PPPP.SSSS

身份令牌

身份令牌( ID Token )类似由 OP 签署的标准 JWT 格式“身份证”。 RP 站点将用户跳转到 OP 站点进行认证,从而获取到身份令牌。

{
  "sub"       : "alice",
  "iss"       : "https://accounts.cloudtrust.com.cn",
  "aud"       : "client-12345",
  "nonce"     : "n-0S6_WzA2Mj",
  "auth_time" : 1311280969,
  "acr"       : "cloudtrust.loa.hisec",
  "iat"       : 1311280970,
  "exp"       : 1311281970,
}

身份令牌有以下属性:

sub: 在 OpenID 中用来断言用户身份。

iss: 令牌的发行方。

aud: 令牌特定的接受方。

nonce: 将客户端会话与身份令牌关联起来的随机字符串。

auth_time: 用户身份验证的时间点。

acr: 认证强度方式。

iat: 发行时间。

exp: 到期时间。

同时:

身份令牌也可以包括相关请求的其它信息,例如姓名和电子邮件地址。

身份令牌经过数字签名,所以可以被接受方验证。

身份令牌可以选择加密。

此外:

在身份令牌头部, 声明了令牌格式和签名算法。

令牌被编码为base 64 格式的 URL 安全字符串,方便在 URL 上传递。

eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9
.eyJzdWIiOiJhbGljZSIsImlzcyI6Imh0dHB
zOi8vYWNjb3VudHMuY2xvdWR0cnVzdC5jb20
uY24iLCJhdWQiOiJjbGllbnQtMTIzNDUiLCJ
ub25jZSI6Im4tMFM2X1d6QTJNaiIsImF1dGh
fdGltZSI6MTMxMTI4MDk2OSwiYWNyIjoiY2x
vdWR0cnVzdC5sb2EuaGlzZWMiLCJpYXQiOjE
zMTEyODA5NzAsImV4cCI6MTMxMTI4MTk3MH0
.O8lB_ij70i0f1m-tbM--KD6WNUAM2DiWIYl
3yuJ1jLOjiAzs3qB6-IfFDpC7f2gxcsJymPY
h8S7t96gO7m-ngl2MAufWbqcEkiYSp6nkwOl
pvUy3XdEg7qLq1im7ZNoikk7bPNpcYJZfqSI
IuSS7sVi4LI3bD5KYHs3EHUGakbk

results matching ""

    No results matching ""