前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【OIDC】补充概念

【OIDC】补充概念

原创
作者头像
tonglei0429
修改2022-10-05 23:26:26
3090
修改2022-10-05 23:26:26
举报

JWT (JSON Web Token)

一种 JSON 的编码规范。

JWT 通常的获得及使用流程:

  1. 【用户】 --请求认证-->【认证服务器】
  2. 【认证服务器】--要求用户登录-->【认证服务器】
  3. 【认证服务器】--签发 JWT --> 【用户】
  4. 【用户】--存储 JWT-->【用户】 ——————
  5. 【用户】--携带JWT请求-->【资源服务器】
  6. 【资源服务器】--验证JWT-->【资源服务器】
  7. 【资源服务器】--提供资源-->【用户】

Bearer Token

一段加密字符串(可以是 JWT),包含授权范围、有效期等信息。持有它,就可以无差别的访问资源。特殊写法 "Bearer TOKEN字符串",即在 Token 前面加上单词 Bearer 和空格。

Bearer Token 种的 Token,通常使用 JWT 形式。

ID Token

本质是包含了用户信息的 JWT。

代码语言:json
复制
{
   "iss": "签发者,https://server.example.com",
   "sub": "用户 ID",
   "aud": "接受者,对应认证服务器中的 Client ID",
   "nonce": "Session ID",
   "exp": 1311281970,
   "iat": 1311280970,
   "auth_time": 1311280969,
   "acr": "urn:mace:incommon:iap:silver"
}

ID Token 的字段(参考 Authing.cnOIDC 规范

字段名

翻译

sub

subject 的缩写,唯一标识,一般为用户 ID

name

姓名

given_name

名字

family_name

姓氏

middle_name

中间名

nickname

昵称

preferred_username

希望被称呼的名字

profile

基础资料

picture

头像

website

网站链接

email

电子邮箱

email_verified

邮箱是否被认证

gender

性别

birthdate

生日

zoneinfo

时区

locale

区域

phone_number

手机号

phone_number_verified

认证手机号

address

地址

formatted

详细地址

street_address

街道地址

locality

城市

region

postal_code

邮编

country

国家

updated_at

信息更新时间

Access Token

Access Token 用来授权访问资源。

Access Token 有随机字符串形式和 JWT 形式,随机字符串形式的一切解析工作都由认证中心来完成,JWT 形式可以在本地完成验证。通常我们都会使用 JWT 形式。

使用 JWT 形式,资源服务器会校验 AccessToken 的合法性,以及其 Scope 的是否包含特定项目。

JWT Access Token 不保存 除 用户 ID 之外的其他信息。

代码语言:json
复制
{
  "jti": "JWT ID",
  "sub": "用户 ID",
  "iat": 签发时间戳,
  "exp": 到期时间戳,
  "scope": "openid email message",
  "iss": "签发者,http://xxx",
  "aud": "接受方"
}

Refresh Token

Access Token,ID Token 的有效期很短,为了避免频繁要求用户登录,所以出现了 Refresh Token。

用户初次完成认证是,同时获得 Access Token、ID Token 和 Refresh Token,前两个的有效期很短,后一个很长。

当 Access Token 或 ID Token 快到期的时候,应用需要携带 Refresh Token 到认证中心获得新的 Access Token 和 ID Token,

此事认证中心会返回新的 Access Token 和 ID Token 及 旧的 Refresh Token,直到 Refresh Token 过期。

代码语言:json
复制
{
  "access_token": "jwt加密内容",
  "expires_in": 3600,
  "id_token": "jwt加密内容",
  "refresh_token": "随机字符串",
  "scope": "openid profile offline_access phone email",
  "token_type": "Bearer"
}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • JWT (JSON Web Token)
  • Bearer Token
  • ID Token
  • Access Token
  • Refresh Token
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档