---
title: "会话与退出 - QiSSO"
description: "区分 SSO 会话、业务会话与应用授权，处理退出、撤销、刷新和密钥轮换。"
canonical_url: "https://docs.mcent.cn/qisso/sessions-and-logout"
---
# 会话与退出 - QiSSO

> 区分 SSO 会话、业务会话与应用授权，处理退出、撤销、刷新和密钥轮换。

统一登录包含多层状态。先明确每一层由谁管理，再设计“退出”“切换账号”“撤销授权”的实际行为。

## 状态归属

<table>
<thead>
  <tr>
    <th>
      状态
    </th>
    
    <th>
      管理方
    </th>
    
    <th>
      失效对业务的影响
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      QiSSO SSO 会话
    </td>
    
    <td>
      QiSSO 与浏览器 Cookie
    </td>
    
    <td>
      影响统一账号是否需要重新验证；不自动等同于清除全部业务会话
    </td>
  </tr>
  
  <tr>
    <td>
      应用授权关系
    </td>
    
    <td>
      QiSSO
    </td>
    
    <td>
      记录用户是否授权当前客户端，撤销后受信重新核验拒绝通过
    </td>
  </tr>
  
  <tr>
    <td>
      Access / Refresh Token
    </td>
    
    <td>
      QiSSO 签发，BFF 保存
    </td>
    
    <td>
      到期、撤销或轮换影响后续资源调用与刷新
    </td>
  </tr>
  
  <tr>
    <td>
      本地业务会话
    </td>
    
    <td>
      业务 BFF
    </td>
    
    <td>
      控制浏览器能否继续访问业务系统
    </td>
  </tr>
</tbody>
</table>

用户成功完成授权码换码后，QiSSO 持久记录用户与客户端的授权关系。该关系不依赖短期令牌是否仍存在，也不由 `client_credentials` 创建。旧历史登录没有足够授权证据时，需要重新完成 OIDC 登录才能建立关系。

## 本地退出

业务端的退出操作至少完成：

1. 在服务端删除本地会话及其保存的令牌，结束与本会话关联的后台刷新。
2. 用同样的名称、Domain、Path 清除浏览器 Cookie。
3. 清除页面中的用户资料和权限状态，返回明确的退出结果。

退出使用受保护的写操作，校验 Origin 或使用业务框架的 CSRF 机制。不要通过任意 GET 链接执行业务退出。

如果 QiSSO 的 SSO 会话仍有效，再次发起登录时可能无需重新输入密码，这是统一登录的正常行为。产品文案应明确“退出当前系统”与“退出统一账号”的区别。

## 统一退出

正式 Discovery 当前提供 `end_session_endpoint`。客户端按其 OIDC 库支持的 RP-Initiated Logout 方式构造请求，并使用已登记的退出后回调。常见字段包括 `id_token_hint`、`post_logout_redirect_uri` 与用于校验退出返回的 `state`；适用字段及验证要求以接入库和服务器实际支持为准。

先清理本地业务会话，再跳转统一退出。只有登记了退出后地址并启用相应能力的应用才能使用该回跳；不能把任意 URL 当作退出后跳转目标。

不要假定环境已经为所有应用配置前通道或后通道退出。没有经过端到端验证的机制，不能宣称“一处退出立即清除所有系统会话”。

## 撤销应用授权

用户在 QiSSO 账号中心撤销某个应用后，QiSSO 会标记该授权关系已撤销，并删除属于该用户、该客户端的已存储 Access Token、Refresh Token 和同意记录。

已签发且仅离线验证的 JWT 不会因此自动变成签名无效，业务 BFF 中的本地会话也需要由业务系统清理。当前受信授权重新核验返回 `APPLICATION_AUTHORIZATION_REVOKED` 后，BFF 应终止该用户会话，要求重新授权。

不要在重新核验失败后自动以服务身份替用户重建授权；重新授权需要用户走正常登录流程。

## 账号禁用、设备退出与权限变化

- **账号禁用**：受信重新核验会拒绝非活动账号。BFF 按结果终止本地访问。
- **角色或权限变更**：读取新的授权上下文与 `authz_ver`，刷新本地权限缓存。
- **QiSSO 设备会话结束**：不能仅凭应用授权关系仍有效推断原设备会话有效。若产品要求设备退出同步影响业务会话，需单独约定并验证会话联动机制。

授权重新核验检查账号和应用授权，不能替代对所有 `sid` 生命周期的同步协议。

## 令牌期限与刷新

当前服务端默认用户 Access Token 为 15 分钟、机器 Access Token 为 5 分钟、Refresh Token 为 8 小时、授权码为 5 分钟。这些是当前配置，不是永久协议常量；客户端以真实响应和令牌有效期为准。

刷新任务按会话或令牌串行协调，避免同一旧 Refresh Token 被多个请求同时消费。响应提供新 Refresh Token 时安全替换；刷新失败时停止使用失效凭据，按产品策略重新登录。不要通过延长本地 Cookie 掩盖令牌或授权失效。

## 客户端密钥轮换

管理端轮换 Secret 会立即替换当前密钥摘要，并删除该客户端已存储的 Access Token 与 Refresh Token。当前没有自动双密钥宽限期。

切换前确认所有 BFF 和机器任务的配置位置及更新顺序；轮换后验证新的服务令牌、用户重新登录和旧凭据失效。不要把生产 Secret 放在工单、文档或提交记录中。参见[应用注册](https://docs.mcent.cn/qisso/application-registration)。


## Sitemap

See the full [sitemap](https://docs.mcent.cn/sitemap.md) for all pages.
