如何在Directus应用中配置Keycloak实现SSO授权?附配置截图及登录报错
Directus配置Keycloak SSO授权步骤及常见问题修复
一、基础配置流程
1. Keycloak端设置
- 新建客户端,协议选
openid-connect,访问类型设为confidential - 配置有效重定向URI:
https://你的Directus域名/auth/login/keycloak/callback(本地测试用http://localhost:8055/auth/login/keycloak/callback) - 保存后,复制客户端ID和密钥(在「凭据」标签页获取)
- 确保Keycloak用户有对应角色,且客户端范围包含
openid、profile、email这些必要作用域
2. Directus端环境变量配置
在Directus的.env文件(或Docker环境变量)中添加以下配置:
AUTH_KEYCLOAK_DRIVER=openid AUTH_KEYCLOAK_CLIENT_ID=你的Keycloak客户端ID AUTH_KEYCLOAK_CLIENT_SECRET=你的Keycloak客户端密钥 AUTH_KEYCLOAK_ISSUER=https://你的Keycloak域名/realms/你的领域名 AUTH_KEYCLOAK_IDENTIFIER_KEY=email AUTH_KEYCLOAK_SCOPE="openid profile email" AUTH_KEYCLOAK_ICON=keycloak
二、常见错误修复(对应你截图中的问题场景)
结合Keycloak+Directus SSO的高频问题,你遇到的情况大概率是以下几种:
- 重定向URI不匹配:检查Keycloak客户端的重定向URI是否和Directus回调地址完全一致,包括HTTP/HTTPS、端口、路径,不能有任何差异
- Issuer地址错误:确认
AUTH_KEYCLOAK_ISSUER指向正确的Keycloak领域元数据地址,比如https://keycloak.example.com/realms/my-realm,可以访问该地址+/.well-known/openid-configuration验证是否能正常返回元数据 - 客户端密钥/ID错误:核对Keycloak凭据页的信息,确保没有复制错字符或多空格
- 作用域缺失:Keycloak客户端必须包含
openid作用域,否则无法完成OpenID Connect授权流程 - PUBLIC_URL配置错误:如果Directus运行在反向代理后,必须设置
PUBLIC_URL=https://你的Directus域名,否则回调地址会生成错误的内部地址
三、验证配置
重启Directus服务后,登录页面会出现Keycloak登录按钮,点击后跳转至Keycloak登录页,登录成功后应自动返回Directus完成授权。
内容的提问来源于stack exchange,提问作者Mikhail Plekhov
相关产品推荐
相关产品推荐

