登出
用户登出是终端用户流程中的重要环节。Code Bird Cloud 通过 OIDC 标准的结束会话端点(End Session Endpoint)实现用户登出功能,确保用户的会话被安全地终止。
概述
用户登出涉及以下操作:
- 清除客户端本地存储的会话信息和令牌
- 吊销服务端的令牌(可选但推荐)
- 结束用户在 Code Bird Cloud 的 OIDC 会话
- 重定向用户到指定的登出后页面
结束会话端点
Code Bird Cloud 提供标准的 OIDC 结束会话端点,用于终止用户在 Code Bird Cloud 的会话。
GET /oidc/end-session?
id_token_hint=eyJhbGciOiJFUzI1NiIs...&
post_logout_redirect_uri=https://your-app.com&
state=RANDOM_STATE_STRING参数说明
| 参数 | 必填 | 说明 |
|---|---|---|
id_token_hint | 否 | 用户的 ID Token,用于标识要登出的用户。虽然非必填,但强烈建议提供以确保正确的用户会话被终止 |
post_logout_redirect_uri | 否 | 登出完成后重定向的目标地址。该地址需要在应用的配置中预先注册 |
state | 否 | 随机字符串,重定向时会原样返回,可用于客户端状态保持 |
请求示例
GET /oidc/end-session?
id_token_hint=eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9...&
post_logout_redirect_uri=https://your-app.com/logged-out&
state=abc123登出完成后,Code Bird Cloud 会将用户重定向到:
https://your-app.com/logged-out?state=abc123令牌吊销
在跳转到结束会话端点之前,建议先吊销用户的 Access Token 和 Refresh Token,确保令牌立即失效。
POST /oidc/revoke
Content-Type: application/x-www-form-urlencoded
token=eyJhbGciOiJFUzI1NiIs...&
token_type_hint=access_token| 参数 | 必填 | 说明 |
|---|---|---|
token | 是 | 要吊销的令牌(Access Token 或 Refresh Token) |
token_type_hint | 否 | 令牌类型提示:access_token 或 refresh_token |
无论令牌是否有效或是否已过期,吊销请求始终返回 HTTP 200。建议同时吊销 Access Token 和 Refresh Token。
客户端登出流程
完整的客户端登出流程推荐按以下步骤执行:
第 1 步:吊销令牌
在客户端后端调用令牌吊销端点,吊销 Access Token 和 Refresh Token:
POST /oidc/revoke
token={refresh_token}&token_type_hint=refresh_tokenPOST /oidc/revoke
token={access_token}&token_type_hint=access_token第 2 步:清除本地会话
清除客户端本地存储的所有会话信息,包括:
- Access Token
- Refresh Token
- ID Token
- 用户信息缓存
- Session 或 Cookie 中的认证状态
第 3 步:重定向到结束会话端点
将用户重定向到 Code Bird Cloud 的结束会话端点,结束 OIDC 会话:
GET /oidc/end-session?
id_token_hint={id_token}&
post_logout_redirect_uri={your_logout_page}最佳实践
- 始终吊销令牌:在登出时主动吊销令牌,而不是仅依赖令牌过期。即使 Access Token 有效期较短(默认 1 小时),主动吊销可以防止令牌在过期前被滥用
- 提供 id_token_hint:调用结束会话端点时尽量提供
id_token_hint,确保正确的用户会话被终止 - 注册 post_logout_redirect_uri:在应用配置中预先注册登出后的重定向地址,提供流畅的用户体验
- 处理登出失败:即使令牌吊销或会话结束请求失败,客户端也应该清除本地会话信息,确保用户在客户端层面已登出
- 前端框架集成:如果使用 OIDC 客户端库(如
oidc-client-ts),库通常提供内置的登出方法,会自动处理上述流程
相关文档
- 注册与登录 -- 用户认证方式
- 传统 Web 应用集成 -- OIDC 端点与授权码流程的完整说明
- 应用集成指南 -- 在应用中集成登录和登出
