企业级 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
例如:
-
ragflow-admin
-
ragflow-user
-
ragflow-reader
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)。
No Comments