You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Directus对接Keycloak SSO登录失败问题求助

解决Directus 11.1.0对接Keycloak 25.0.4的SSO登录问题

已确认的前置问题修复(算法不匹配)

  • 确保Keycloak领域级别和客户端级别的签名算法均设置为RS256:
    • 领域设置:Realm Settings -> Keys -> Provider Settings -> Default Signature Algorithm 选择RS256
    • 客户端设置:Clients -> directus -> Settings -> Advanced -> Signing Algorithm 选择RS256
  • Directus配置中OIDC_ALG设为RS256,保持两端完全一致。

核心问题:OpenID Cookie验证失败、用户不存在、Cookie消失的解决方案

1. 修正OIDC基础URL配置

  • 确保Directus的OIDC_ISSUER完全匹配Keycloak领域的OpenID issuer地址,可从Keycloak的Realm Settings -> Endpoints -> OpenID Endpoint Configuration中复制issuer字段,不要添加末尾斜杠。
  • 检查Directus的PUBLIC_URL配置为完整访问地址(如https://mydirectussite),该值直接影响回调地址生成和Cookie的域设置。

2. 调整Cookie跨域/安全设置

  • 若Directus与Keycloak为不同域名:
    • Keycloak客户端设置:Access Type设为confidential
    • Directus配置:
      • OIDC_COOKIE_SAME_SITE = None
      • OIDC_COOKIE_SECURE = true(必须使用HTTPS,否则浏览器会拒绝SameSite=None的Cookie)
  • 若为同域名:OIDC_COOKIE_SAME_SITE可设为Lax或Strict,OIDC_COOKIE_SECURE根据是否启用HTTPS调整。

3. 处理用户匹配/自动注册问题

  • 开启自动注册(推荐):在Directus配置中设置OIDC_AUTO_REGISTER = true,首次登录时Directus会自动创建对应Keycloak用户的账号。
  • 手动同步用户:若关闭自动注册,需在Directus中提前创建与Keycloak用户标识字段完全匹配的账号,可通过OIDC_IDENTIFIER_KEY指定匹配字段(如email或sub)。
  • 确保Keycloak客户端已添加email、profile等必要的Client Scopes,让Directus能获取到用户标识信息。

4. 调试辅助步骤

  • 开启Directus调试日志:设置LOG_LEVEL = debug,查看OIDC流程的详细日志,定位回调时的令牌解析、用户信息获取、Cookie设置问题。
  • 使用Keycloak的Token Inspector工具,检查生成的JWT令牌的算法、声明字段是否符合预期。

内容的提问来源于stack exchange,提问作者bandungeuy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 04:02:09