oidc-gateway-demo/de.md

2.9 KiB
Raw Permalink Blame History

系统交互图与设计说明

1. 交互时序图

sequenceDiagram
    participant 用户
    participant 前端A
    participant 前端B
    participant 网关
    participant OIDC
    participant 资源服务

    用户->>前端A: 访问 a.local.com
    前端A->>用户: 检查本地token
    alt token无效或无token
        前端A->>OIDC: 跳转/oauth2/authorize (client_id=a-client)
        OIDC->>用户: 登录页/授权页
        用户->>OIDC: 输入账号、密码、租户
        OIDC->>前端A: 跳转回/callback?code=xxx
        前端A->>OIDC: 用code换token
        OIDC->>前端A: 返回access_token (含租户、clientId、用户名等)
    end
    前端A->>网关: 携带token访问API
    网关->>OIDC: 校验token
    网关->>资源服务: 转发请求
    资源服务->>网关: 返回数据
    网关->>前端A: 返回数据

    用户->>前端B: 访问 b.local.com
    前端B->>用户: 检查本地token
    alt token无效或无token
        前端B->>OIDC: 跳转/oauth2/authorize (client_id=b-client)
        OIDC->>用户: 登录页/授权页
        用户->>OIDC: 输入账号、密码、租户
        OIDC->>前端B: 跳转回/callback?code=xxx
        前端B->>OIDC: 用code换token
        OIDC->>前端B: 返回access_token (含租户、clientId、用户名等)
    end
    前端B->>网关: 携带token访问API
    网关->>OIDC: 校验token
    网关->>资源服务: 转发请求
    资源服务->>网关: 返回数据
    网关->>前端B: 返回数据

2. 设计说明

多租户与多系统

  • 支持多租户如tenant-a、tenant-b每个租户可绑定多个client如a-client、b-client
  • 用户登录时需输入租户信息系统根据租户和client校验用户权限。

OIDC认证与Token定制

  • OIDC服务端支持标准OAuth2/OIDC认证流程。
  • 登录成功后生成的JWT token中包含用户名、clientId、租户代码等自定义字段。
  • 支持根据用户类型动态定制token有效期。

网关权限控制

  • 网关自动校验JWT token的合法性。
  • 网关通过解析token中的租户、clientId、用户类型等字段实现细粒度的权限控制。
  • 可根据访问的host如a.local.com、b.local.com和token内容做多系统隔离和授权。

前后端交互

  • 前端负责本地token管理token失效或无token时自动跳转OIDC认证。
  • 前端携带token访问网关API网关校验并转发到后端资源服务。
  • 支持SSO和强制登录通过prompt=login参数或后端策略控制

典型场景

  • 用户A登录a.local.com获取a-client的token只能访问A系统资源。
  • 用户B登录b.local.com获取b-client的token只能访问B系统资源。
  • 超级管理员可配置为多租户多client权限token中体现其多系统能力。

如需扩展更多业务场景或权限模型,可在此架构基础上灵活调整。