oidc-gateway-demo/de.md

74 lines
2.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 系统交互图与设计说明
## 1. 交互时序图
```mermaid
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中体现其多系统能力。
---
如需扩展更多业务场景或权限模型,可在此架构基础上灵活调整。