# 业级 SSO（AD → Keycloak → RAGFlow）完整生产方案

下面给你一套**企业级 SSO（AD → Keycloak → RAGFlow）完整生产方案**，目标是：

> ✔ AD账号即开即用登录  
> ✔ 自动创建RAGFlow用户  
> ✔ AD组 → 角色 → 权限全映射  
> ✔ 支持离职禁用、权限收敛  
> ✔ 可扩展多系统统一SSO

我按“可落地生产标准”给你拆 4 层架构。

---

# 一、企业级最终架构（标准模型）

```text
            ┌────────────────────────┐
            │ Windows AD             │
            │ 192.168.0.5            │
            └─────────┬──────────────┘
                      │ LDAP/LDAPS
                      ▼
            ┌────────────────────────┐
            │ Keycloak (SSO中台)     │
            │ 192.168.4.16:8081      │
            │                        │
            │ ✔ 用户同步             │
            │ ✔ Group管理           │
            │ ✔ Token签发           │
            └─────────┬──────────────┘
                      │ OIDC
      ┌───────────────┼────────────────┐
      ▼               ▼                ▼
 RAGFlow         其他AI系统        运维平台
 (你的系统)

```

---

# 二、整体能力设计（企业级必须具备）

## ✔ 身份层（Identity）

- AD 作为唯一身份源
- Keycloak 做统一身份中心

## ✔ 认证层（Authentication）

- OIDC（标准 OAuth2）
- Token JWT

## ✔ 授权层（Authorization）

- AD Group → Keycloak Role
- Role → RAGFlow 权限

## ✔ 用户生命周期（关键）

- 自动创建用户
- 自动禁用离职账号
- 自动同步组织架构

---

# 三、Keycloak 企业级配置（核心）

---

## 1️⃣ LDAP 接入 AD（生产级配置）

```text
User Federation → LDAP

```

### 核心参数

<table id="bkmrk-%E9%A1%B9%E7%9B%AE-%E5%80%BC-vendor-active-d"><thead><tr><th>项目</th><th>值</th></tr></thead><tbody><tr><td>Vendor</td><td>Active Directory</td></tr><tr><td>Connection URL</td><td>ldap://192.168.0.5:389</td></tr><tr><td>Bind DN</td><td>CN=ldapbind,OU=ServiceAccounts,DC=shuncom,DC=local</td></tr><tr><td>Users DN</td><td>DC=shuncom,DC=local</td></tr><tr><td>Import Users</td><td>✔ ON</td></tr><tr><td>Sync Registrations</td><td>✔ ON</td></tr><tr><td>Edit Mode</td><td>READ\_ONLY</td></tr></tbody></table>

---

## 2️⃣ 用户同步策略（企业关键）

```text
Periodic Full Sync: 1h
Periodic Changed Users Sync: 10min

```

---

## 3️⃣ 必须开启：用户自动导入

```text
Import Users = ON

```

---

# 四、AD Group → 权限体系（核心设计）

---

## 3️⃣ AD组织结构示例

```text
IT_Admins
AI_Users
AI_ReadOnly
Security_Team

```

---

## 4️⃣ Keycloak Group 映射

LDAP Mapper：

- group-ldap-mapper
- memberOf

---

## 5️⃣ 映射关系设计

<table id="bkmrk-ad-group-keycloak-ro"><thead><tr><th>AD Group</th><th>Keycloak Role</th><th>RAGFlow权限</th></tr></thead><tbody><tr><td>IT\_Admins</td><td>ragflow-admin</td><td>全权限</td></tr><tr><td>AI\_Users</td><td>ragflow-user</td><td>创建/查询</td></tr><tr><td>AI\_ReadOnly</td><td>ragflow-reader</td><td>只读</td></tr></tbody></table>

---

# 五、Keycloak → Token 设计（非常关键）

---

## 6️⃣ Client Mapper（必须配置）

Client：ragflow

### Mapper 1：email（用户唯一ID）

```text
email → email

```

---

### Mapper 2：groups（关键）

```text
groups → groups

```

---

### Mapper 3：roles

```text
realm roles → roles

```

---

### Token最终结构：

```json
{
  "email": "8108@shuncom.local",
  "groups": ["AI_Users"],
  "roles": ["ragflow-user"]
}

```

---

# 六、RAGFlow 企业级配置（核心）

---

## 7️⃣ docker-compose 关键配置

你必须统一成下面结构：

```yaml
environment:
  - AUTH_TYPE=oauth2
  - OAUTH2_ENABLE=True
  - OAUTH2_TYPE=oidc

  - OAUTH2_AUTHORIZATION_URL=http://192.168.4.16:8081/realms/shuncom/protocol/openid-connect/auth
  - OAUTH2_TOKEN_URL=http://192.168.4.16:8081/realms/shuncom/protocol/openid-connect/token
  - OAUTH2_USERINFO_URL=http://192.168.4.16:8081/realms/shuncom/protocol/openid-connect/userinfo

  - OAUTH2_CLIENT_ID=ragflow
  - OAUTH2_CLIENT_SECRET=xxxx

  - OAUTH2_REDIRECT_URI=http://192.168.4.16/oauth/callback

  # ⭐关键
  - OAUTH2_USER_ID_CLAIM=email
  - REGISTER_ENABLED=1
  - AUTO_CREATE_USER=true

```

---

# 七、RAGFlow 权限模型设计（企业级重点）

---

## 8️⃣ 权限结构

RAGFlow 用户：

```text
User
 ├── role
 │    ├── admin
 │    ├── user
 │    └── reader
 ├── group
 │    ├── AI_Users
 │    └── IT_Admins

```

---

## 9️⃣ 绑定规则

<table id="bkmrk-keycloak%E5%AD%97%E6%AE%B5-ragflow%E6%98%A0%E5%B0%84"><thead><tr><th>Keycloak字段</th><th>RAGFlow映射</th></tr></thead><tbody><tr><td>groups</td><td>role group</td></tr><tr><td>roles</td><td>permission</td></tr><tr><td>email</td><td>user identity</td></tr></tbody></table>

---

# 八、自动用户创建机制（核心能力）

---

## 10️⃣ 登录流程

```text
AD登录
 ↓
Keycloak认证
 ↓
返回JWT
 ↓
RAGFlow解析 email
 ↓
查用户表
 ↓
不存在 → 自动创建
 ↓
绑定 role/group

```

---

# 九、企业级增强能力（强烈建议）

---

## ✔ 1. 离职自动禁用

Keycloak LDAP：

```text
User Disabled = AD disabled

```

---

## ✔ 2. 权限自动收敛

用户离开 AD group → 自动降权

---

## ✔ 3. 多系统SSO扩展

同一 Keycloak：

- RAGFlow
- Jenkins
- GitLab
- 运维平台
- 内部AI Agent

---

## ✔ 4. HTTPS（必须）

生产必须加：

```text
Nginx + SSL

```

---

# 十、推荐生产部署拓扑（最终版）

```text
                ┌──────────────┐
                │  Nginx HTTPS │
                └──────┬───────┘
                       │
        ┌──────────────┴──────────────┐
        │                             │
   RAGFlow UI                    Keycloak
   192.168.4.16                 192.168.4.16:8081
        │                             │
        └──────────────┬──────────────┘
                       │ LDAP
                 Windows AD
              192.168.0.5

```

---

# 十一、你当前系统升级完成后能力

你会得到：

## ✔ 企业统一账号登录

## ✔ AD账号即开即用

## ✔ 自动用户创建

## ✔ AD组自动权限映射

## ✔ 多系统SSO统一

## ✔ 无本地账号维护

## ✔ 支持组织架构同步

---

# 十二、如果你下一步要继续升级（我可以帮你做）

我可以继续帮你做更高级企业能力：

### ✔ AD组织架构自动同步到RAGFlow空间

### ✔ 多租户隔离（部门级AI空间）

### ✔ API级RBAC权限控制

### ✔ 审计日志 + 登录追踪

### ✔ LDAP双向同步（写回AD）

只要你说一句：

> “升级多租户+权限审计”

我可以帮你把这一套直接升级成**完整企业AI平台身份体系**。