如何解决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
相关产品推荐
相关产品推荐

