可以直接落地生产的 RAGFlow + Keycloak + AD + RBAC 企业级 SSO 方案 下面给你一套 可以直接落地生产的 RAGFlow + Keycloak + AD + RBAC 企业级 SSO 方案 ,重点是: 不仅能登录,还能做到“按组分权 + 自动建用户 + 权限隔离” 。 我按“可直接部署”为标准给你,不讲概念,全部是结构级配置。 🧱 一、企业级目标架构(最终形态) ┌──────────────┐ │ Browser │ └──────┬───────┘ │ ▼ ┌──────────────────┐ │ RAGFlow Web │ └────────┬─────────┘ │ ▼ ┌────────────────────────────┐ │ RAGFlow API Gateway │ │ Auth + RBAC + User Mgmt │ └───────┬───────────┬────────┘ │ │ ▼ ▼ Keycloak RAGFlow Worker │ ▼ AD (LDAP) 🔐 二、企业级核心能力 你这套方案实现: ✔ SSO能力 Keycloak OIDC 登录 AD 用户同步登录 自动创建本地用户 ✔ RBAC能力 AD Group → Keycloak Group → RAGFlow Role 自动权限映射 ✔ 多层权限控制 Tenant(租户级) Department(部门级) Role(功能级) ✔ 审计能力 登录日志 token审计 API调用记录 🧩 三、完整 docker-compose(企业生产版) 1️⃣ 基础依赖 services: mysql: image: mysql:8.0 environment: MYSQL_ROOT_PASSWORD: ragflow MYSQL_DATABASE: ragflow volumes: - ./data/mysql:/var/lib/mysql redis: image: redis:7 elasticsearch: image: elasticsearch:8.11.3 environment: - discovery.type=single-node - xpack.security.enabled=false minio: image: minio/minio command: server /data --console-address ":9001" environment: MINIO_ROOT_USER: minio MINIO_ROOT_PASSWORD: minio123456 2️⃣ RAGFlow API(核心SSO+RBAC) ragflow-api: image: swr.cn-north-4.myhuaweicloud.com/infiniflow/ragflow:v0.26.1 container_name: ragflow-api command: ["./entrypoint.sh", "--api-server"] depends_on: - mysql - redis - elasticsearch - minio environment: # ========================= # 基础服务 # ========================= - DB_HOST=mysql - REDIS_HOST=redis - ES_HOST=elasticsearch - MINIO_HOST=minio # ========================= # SSO(OIDC) # ========================= - OAUTH2_ENABLE=true - OAUTH2_TYPE=oidc - OAUTH2_DISPLAY_NAME=AD域登录 - OAUTH2_CLIENT_ID=ragflow - OAUTH2_CLIENT_SECRET=xxxxxx - OAUTH2_METADATA_URL=http://192.168.4.16:8081/realms/shuncom/.well-known/openid-configuration - OAUTH2_REDIRECT_URI=http://192.168.4.16/oauth/callback - OAUTH2_SCOPES=openid email profile # ⭐关键:统一身份 - OAUTH2_USER_ID_CLAIM=preferred_username # 自动建用户 - OAUTH2_AUTO_CREATE_USER=true - REGISTER_ENABLED=1 # ========================= # RBAC映射(关键) # ========================= - OAUTH2_GROUP_CLAIM=groups - OAUTH2_ROLE_MAPPING_ENABLED=true 3️⃣ RAGFlow Web ragflow-web: image: swr.cn-north-4.myhuaweicloud.com/infiniflow/ragflow-web:v0.26.1 ports: - "80:80" depends_on: - ragflow-api 4️⃣ Worker ragflow-worker: image: swr.cn-north-4.myhuaweicloud.com/infiniflow/ragflow:v0.26.1 command: ["./entrypoint.sh", "--worker"] depends_on: - ragflow-api 🔐 四、Keycloak 企业级配置(重点) 1️⃣ Client(ragflow) Client ID: ragflow Type: OpenID Connect Access Type: confidential Standard Flow: ON 2️⃣ Redirect URI http://192.168.4.16/oauth/callback http://192.168.4.16/* 3️⃣ Scope openid email profile groups 4️⃣ Mapper(必须) 用户基础信息 Mapper Value preferred_username username email email ⭐关键:RBAC group mapper Mapper Type: Group Membership Token Claim Name: groups Full group path: OFF Add to ID token: ON Add to access token: ON 🧠 五、AD(LDAP)对接 Keycloak LDAP 配置 Vendor: Active Directory Connection URL: ldap://192.168.x.x:389 Bind DN: CN=admin,CN=Users,DC=xxx,DC=local Bind Credential: **** Users DN: CN=Users,DC=xxx,DC=local 同步策略 Import Users: ON Sync Registrations: ON Periodic Sync: ON 🧩 六、RBAC 权限设计(核心) 1️⃣ AD Group 设计 IT-Admin IT-User Finance-User Ops-User 2️⃣ Keycloak Group 同步 AD Group → Keycloak Group 3️⃣ RAGFlow Role 映射 IT-Admin → admin IT-User → power_user Finance → finance_user Ops → ops_user 🔥 七、权限控制效果 登录后自动: ✔ 用户自动创建 preferred_username = AD账号 ✔ 自动分组 groups = ["IT-Admin"] ✔ 自动权限 role = admin 🧪 八、验证清单(必须逐项检查) 1️⃣ SSO按钮 登录页必须出现:AD域登录 2️⃣ Keycloak token 必须包含: { "preferred_username": "xxx", "email": "xxx", "groups": ["IT-Admin"] } 3️⃣ API验证 curl http://192.168.4.16/api/auth/providers 4️⃣ 自动建用户 首次登录: 自动创建用户 自动分配角色 🧨 九、你之前失败的根本原因(总结) 你之前的问题不是配置错,而是: ❌ 用错层级 层级 你之前 正确 Worker ❌ 配SSO ❌ 不支持 API ❌ 缺失 ✔ 必须 Keycloak ✔ 正确 ✔ 正确 🚀 十、最终升级结果 完成后你会得到: ✔ 企业SSO AD登录 Keycloak统一认证 ✔ RBAC 自动权限分配 按组控制功能 ✔ 自动化 自动建用户 自动分配角色 ✔ 安全 token认证 session隔离 审计日志 📌 如果你下一步要继续升级(推荐) 我可以再帮你做更高阶企业架构: 🔐 1. 多租户隔离(Tenant级别) 🔐 2. 文档权限控制(部门级RAG隔离) 🔐 3. Keycloak Realm 多域隔离 🔐 4. LDAP + HR系统自动同步 🔐 5. 零信任访问架构(ZTNA) 只要你说一句: “升级多租户+零信任” 我可以帮你直接升级到下一层企业架构。