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

如何解决Casdoor OIDC集成Directus时的RPError: nonce mismatch错误

Casdoor集成Directus时OpenID Connect登录的Nonce问题

我已通过OpenID Connect将Casdoor登录集成到Directus中,但登录流程存在问题:用户在Casdoor端完成认证后,会携带code和state查询参数重定向到redirect_url;回调阶段,Directus解码JWT时发现payload中不存在nonce,抛出错误:

nonce mismatch, expected xxxxxxxxxxx , got: undefined

修改Directus镜像禁用nonce检查后可正常运行,但此举存在安全风险,并非合理解决方案。因此想了解Casdoor为何未在payload中添加nonce。

我的登录请求如下:

https://casdoor.local/login/oauth/authorize?client_id=<CLIENT_ID>&scope=openid%20email%20profile&response_type=code&redirect_uri=https%3A%2F%2Fdirectus.local%2Fauth%2Flogin%2Fcasdoor%2Fcallback&access_type=offline&code_challenge=<CODE_CHALLENGE>&code_challenge_method=S256&state=GqOMoe4GOjBlFxCBPpKb0GAzzshZVNH_NHpZcO1lTiw&nonce=GqOMoe4GOjBlFxCBPpKb0GAzzshZVNH_NHpZcO1lTiw

回调请求如下:

https://directus.local/auth/login/casdoor/callback?code=<CODE>&state=GqOMoe4GOjBlFxCBPpKb0GAzzshZVNH_NHpZcO1lTiw

我解码回调返回的JWT后,发现其中不含nonce值。请问这是登录请求未正确要求返回nonce导致,还是Casdoor的bug?

注:我使用的是Casdoor和Directus的最新版本,Directus集成Casdoor的环境变量如下:

PUBLIC_URL: ${PUBLIC_URL}
AUTH_PROVIDERS: ${AUTH_PROVIDERS}
AUTH_CASDOOR_DRIVER: ${AUTH_CASDOOR_DRIVER}
AUTH_CASDOOR_CLIENT_ID: ${AUTH_CASDOOR_CLIENT_ID}
AUTH_CASDOOR_CLIENT_SECRET: ${AUTH_CASDOOR_CLIENT_SECRET}
AUTH_CASDOOR_SCOPE: ${AUTH_CASDOOR_SCOPE}
AUTH_CASDOOR_ISSUER_URL: ${AUTH_CASDOOR_ISSUER_URL}
AUTH_CASDOOR_AUTHORIZE_URL: ${AUTH_CASDOOR_AUTHORIZE_URL}
AUTH_CASDOOR_ACCESS_URL: ${AUTH_CASDOOR_ACCESS_URL}
AUTH_CASDOOR_PROFILE_URL: ${AUTH_CASDOOR_PROFILE_URL}
AUTH_CASDOOR_ALLOW_PUBLIC_REGISTRATION: ${AUTH_CASDOOR_ALLOW_PUBLIC_REGISTRATION}
AUTH_CASDOOR_DEFAULT_ROLE_ID: ${AUTH_CASDOOR_DEFAULT_ROLE_ID}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 13:07:48