在NODEJS中使用passport-ci-oidc库时,间歇性地获取错误'状态不匹配'

jogvjijk  于 2022-11-29  发布在  Node.js
关注(0)|答案(2)|浏览(156)

我们使用NODEJS中的passport-ci-oidc库通过云身份服务对用户进行身份验证。
验证时出现间歇性问题,错误为...

Error: state does not match
       at Strategy.authenticate (/media/cb-core-auth/node_modules/passport-ci-oidc/lib/strategy.js:359:23)
       at attempt (/media/cb-core-auth/node_modules/passport/lib/middleware/authenticate.js:348:16)
       at authenticate (/media/cb-core-auth/node_modules/passport/lib/middleware/authenticate.js:349:7)
       at exports.sso_callback (/media/cb-core-auth/authentication/passport-ibmidci/callback.js:77:7)
       at Layer.handle [as handle_request] (/media/cb-core-auth/node_modules/express/lib/router/layer.js:95:5)
       at next (/media/cb-core-auth/node_modules/express/lib/router/route.js:137:13)
       at Route.dispatch (/media/cb-core-auth/node_modules/express/lib/router/route.js:112:3)
       at Layer.handle [as handle_request] (/media/cb-core-auth/node_modules/express/lib/router/layer.js:95:5)
       at /media/cb-core-auth/node_modules/express/lib/router/index.js:281:22

你们能帮助我们解决这个间歇性的问题吗?
注意:我们不会将state作为我们策略的一部分发送。

xuo3flqw

xuo3flqw1#

这是一个错误,用于解释应该在会话中保留的状态应该与从OIDC提供程序回调请求中返回的状态查询参数相匹配。请检查会话信息,确保它保留在服务器上,并且会话Cookie正在被传回

ffvjumwh

ffvjumwh2#

@Lucifer007@SDRP我找到了临时的解决方案,它不工作,因为你可能有快速会话配置。这个配置不工作与nginx代理。

cookie: {
  secure: true
}

在我的例子中,这就是原因,注解这一行解决了我的问题。虽然不是一个理想的解决方案。一些其他的解决方案指出使用cookie会话而不是express会话来解决这个问题。没有尝试过,但似乎工作。

相关问题