您好,我们有一个使用 pac4j 的 java 应用程序来处理使用 AWS Cognito 的 OIDC 登录。
使用 AWS Cognito 从一些外部 IdP 登录时,似乎有 5 分钟的限制才能完成所有操作,否则会出现错误(请参阅本页注释https://docs.amazonaws.cn/en_us/cognito/latest /developerguide/cognito-user-pools-oidc-flow.html)。
我们遇到了这个问题,无法从中恢复。进一步的调查表明,pac4j 还向 Cognito 发送了一个状态和一个 nonce 作为回调 URL 中的参数,以便 pac4j 可以验证响应来自同一请求。
问题是,当登录过程花费超过 5 分钟并且 Cognito 显示错误时,如果用户再次登录,外部 IdP 将立即响应(因为用户之前成功登录),因此 Cognito 也会重定向到回调 URL 没有任何问题。但是,这次 Cognito 以某种方式移除了回调 URL 中的 state 和 nonce 参数,而 pac4j 将失败并显示org.pac4j.core.exception.TechnicalException: Missing state parameter.
关于如何解决这个问题的任何建议?Cognito 中是否有可以延长 5 分钟限制的配置?或者我们可以绕过 pac4j 验证状态和随机数吗?如果我们绕过它,从安全的角度来看会有什么影响?
谢谢你。