企业级 AD + Keycloak + RAGFlow 完整闭环

很好,这一步就是企业级 AD + Keycloak + RAGFlow 完整闭环了,我给你一套可以直接落地的标准方案(生产可用)。


一、目标架构(最终形态)

Windows AD (192.168.0.5)
        │ LDAP / LDAPS
        ▼
   Keycloak(身份中台)
        │ OIDC
        ▼
   RAGFlow(自动建用户 + 角色映射)

二、你要实现的3个能力

必须同时完成:

✔ 1. AD用户自动同步

✔ 2. 首次登录自动创建RAGFlow用户

✔ 3. AD Group → RAGFlow Role 映射


三、Keycloak 配置(核心)

1️⃣ LDAP 接入 AD

进入:

User Federation → LDAP

配置:

参数
Vendor Active Directory
Connection URL ldap://192.168.0.5:389
Bind DN CN=ldapbind,OU=ServiceAccounts,DC=shuncom,DC=local
Bind Credential ******
Users DN DC=shuncom,DC=local
Import Users ✔ ON
Edit Mode READ_ONLY

四、关键:开启“自动用户导入”

在 LDAP 设置中:

✔ 必须开启:

Import Users = ON

否则不会同步 AD 用户


五、Keycloak Role / Group 映射(关键步骤)


2️⃣ 创建 Mapper(重点)

进入:

LDAP → Mappers

新增:


✔ Mapper 1:用户名

Name value
ldap attribute sAMAccountName
user attribute username

✔ Mapper 2:邮箱

| LDAP | mail |
| RAGFlow | email |


✔ Mapper 3:AD Group → Keycloak Group

Mapper Type group-ldap-mapper
Groups DN OU=Groups,DC=shuncom,DC=local
Membership attribute member

六、Keycloak → RAGFlow 角色映射


3️⃣ 在 Keycloak 创建 Realm Roles

例如:


4️⃣ Group → Role 映射

Keycloak:

Group → Role Mapping

示例:

AD Group RAGFlow Role
IT_Admin ragflow-admin
AI_User ragflow-user

七、RAGFlow 配置(关键修改)

你现在 docker-compose 需要改这几个:


✔ 1. 改用户ID来源(非常关键)

OAUTH2_USER_ID_CLAIM=email

❗不要用 sub


✔ 2. 开启自动注册(关键)

REGISTER_ENABLED=1

✔ 3. 保留 OIDC

OAUTH2_ENABLE=True
OAUTH2_TYPE=oidc

✔ 4. 建议补充(重要)

OAUTH2_AUTO_CREATE_USER=true

(如果版本支持)


八、RAGFlow 角色映射方式(核心)

RAGFlow 本身是靠 OIDC claims:

你需要在 Keycloak 加:


5️⃣ Client Mapper(重点)

进入:

Client → ragflow → Mappers

添加:


✔ Mapper 1:roles

Name roles
Mapper Type User Realm Role
Token Claim Name roles
Add to ID token ON
Add to access token ON

✔ Mapper 2:groups

Name groups
Mapper Type Group Membership
Token Claim groups

九、RAGFlow 侧角色识别

RAGFlow 会读取:

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

十、用户自动创建逻辑(关键机制)

当用户第一次登录:

Keycloak 登录成功
        ↓
RAGFlow 收到 email
        ↓
检查用户是否存在
        ↓
不存在 → 自动创建
        ↓
绑定 role/group

十一、你必须改的最终配置(直接可用)

docker-compose.yml(最终建议)

environment:
  - OAUTH2_ENABLE=True
  - OAUTH2_TYPE=oidc
  - OAUTH2_DISPLAY_NAME=AD域账号登录

  - 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

十二、最终效果(你会得到)

✔ AD账号登录RAGFlow

✔ 首次登录自动创建用户

✔ AD组自动映射权限

✔ Keycloak统一身份中心

✔ RAGFlow无需本地维护账号


十三、如果你要更进一步(推荐升级)

我可以帮你再升级成:

✔ AD组 → RAGFlow菜单权限控制

✔ 多租户隔离(部门级权限)

✔ 自动禁用离职AD用户

✔ LDAP双向同步

✔ HTTPS + 企业SSO统一入口

只需要说一句:

“升级成企业级SSO完整方案”

我可以给你一套生产环境标准架构(含Keycloak导入模板 + LDAP配置 + RAGFlow最终docker-compose)


Revision #1
Created 29 June 2026 07:45:03 by Admin
Updated 29 June 2026 07:45:28 by Admin