OIDC 常见问题
了解 OIDC 包含的常见问题,在开发时可以查阅此文档。
OIDC 在后端如何处理
请参考 Github 上的示例:oidc-demo
OIDC 三种认证流程的特征对比
特性
授权码流程
隐式流程
混合流程
所有 token 全部从授权路由返回
no
yes
no
所有 token 都从 token 路由返回
yes
no
no
token 不会暴露给前端
yes
no
no
客户端可以被 AP 认证
yes
no
yes
可以刷新 token
yes
no
yes
一次交互
no
yes
no
必须服务器-服务器通信
yes
no
varies
不同 response_type 对应的授权流程
"response_type" value
Flow
code
Authorization Code Flow(授权码流程)
id_token
Implicit Flow(隐式流程)
id_token token
Implicit Flow(隐式流程)
code id_token
Hybrid Flow(混合流程)
code token
Hybrid Flow(混合流程)
code id_token token
Hybrid Flow(混合流程)
如何验证 Token 合法性
请参考:使用 OIDC 应用的密钥验证 Token 合法性。
scope 参数对应的用户信息
scope 名称
对应信息
address
address
email,email_verified
phone
phone_number, phone_number_verified
profile
birthdate,family_name,gender,given_name,locale,middle_name,name,nickname,picture,preferred_username,profile,updated_at,website,zoneinfo
offline_access
如果存在此参数,token 接口会返回 refresh_token 字段
unionid
unionid
authing_token
用户信息中的 Authing Token
用户信息字段含义
字段名
翻译
sub
唯一标识
openid
openid
unionid
unionid
name
姓名
given_name
名字
family_name
姓氏
middle_name
中间名
nickname
昵称
preferred_username
希望被称呼的名字
profile
基础资料
picture
头像
website
网站链接
电子邮箱
email_verified
认证邮箱
gender
性别
birthdate
生日
zoneinfo
时区
locale
区域
phone_number
手机号
phone_number_verified
认证手机号
address
地址
formatted
详细地址
street_address
街道地址
locality
城市
region
省
postal_code
邮编
country
国家
updated_at
信息更新时间
id_token、access_token 和 token 之间的区别
当你需要向你自己的服务器请求资源时,应该携带 id_token,同时你的服务器应该检验此 token 的合法性,然后再返回相应资源。id_token 相当于终端用户的身份证,用于认证用户身份。
当你需要向 Authing 服务器请求属于该用户的资源时,需要携带 access_token,拥有 access_token,你就能够以终端用户的身份,访问位于 Authing 服务器上属于他的资源。
当你需要向 Authing 服务器请求属于该用户的资源时,也可以携带 token。终端用户完成登录后,你的应用前端通过 AuthingSSO SDK 中的 trackSession 函数能够直接获取到用户信息,其中的 token 字段,相当于 Authing 与该终端用户维持内部会话状态的 Cookie;使用 OIDC 协议授权时,如果发起授权请求时的 scope 包含 authing_token
,在用户信息接口获取到的用户信息中会包含 token 字段,相当于 Authing 与该终端用户维持内部会话状态的 Cookie。
Last updated