工作流程
应用将用户重定向到 Renaiss 确认授权。后端通过授权码和 PKCE 流程换取令牌,验证 ID 令牌后,读取用户授权的账户信息。接入前准备
- 向 Renaiss 注册应用,提供应用名称和每个回调的完整 URI。团队会通过安全渠道提供
client_id和client_secret。 - 在后端配置 OIDC 客户端。下方示例采用 Node.js 和 openid-client。
client_secret 保存在服务端的密钥管理器中,避免写入浏览器代码或代码仓库。若密钥泄露,请联系 Renaiss 更换。
配置
使用接入时获得的凭据和已注册的回调地址替换示例值。.env
${RENAISS_ISSUER}/.well-known/openid-configuration。将客户端指向该文档即可解析其他接口。
客户端设置
选择签发方
RENAISS_ISSUER 决定登录环境。使用接入团队为该环境提供的值。
只有
localhost 可使用明文 HTTP。已部署的签发方均使用 HTTPS。
注册回调地址
回调 URI 必须与应用实际发送的值完全相同,包括端口、路径和末尾斜杠。新增或更改地址时,需将新 URI 提交给团队注册。控制授权确认页
在授权请求中添加prompt=consent 可让用户每次登录都确认授权。省略它会复用已有授权。
快速接入
1
发现提供方
加载
${RENAISS_ISSUER}/.well-known/openid-configuration 来配置客户端。2
构建登录路由
生成 PKCE 的
code_verifier 和 code_challenge(S256),再生成随机 state 和 nonce,保存在会话中。将用户重定向到授权接口,指定 scope=openid profile email safe x,按需添加 prompt=consent。3
处理回调
在回调路径验证
state,使用令牌接口交换授权码,在请求体中发送客户端密钥。通过 JWKS 验证 id_token 的签名,并检查 iss、aud、exp 和 nonce。4
读取声明
使用已验证的
id_token 获取用户信息,也可以调用 userinfo 接口。openid-client 的完整参考实现。
返回的用户声明
id_token 和 userinfo 根据请求的权限范围返回相应声明。
始终验证
id_token 的签名及 iss、aud、exp、nonce。符合标准的 OIDC 客户端库可以执行这些验证。
测试令牌交换
获得授权码code 及对应的 code_verifier 后,可直接发送以下请求验证配置。
access_token 和 id_token,如已请求,还会返回 refresh_token。