如何在 pac4j 中配置正确的状态传输

问题描述 投票:0回答:1

我寻求与 pac4j 实现 OIDC 连接(在客户端) 我遇到了另一个障碍。看来通过 URL 进行状态传输是 不工作或配置不正确:

授权请求:

https://authserver.com/mini-sinai/auth?scope=openid profile email&response_type=code&
redirect_uri=https://client.com/jee-pac4j-demo/callback?client_name=MiniSinai&
state=e8e3b77123&nonce=vvDVEE3hv70GLUvDVG5IyaU30S6EJqsAjGHEyuUg_NA&
client_id=9d9a41d95b4907ca13ac60b0568aa3

正在返回:

302 https://client.com/jee-pac4j-demo/callback?client_name=MiniSinai&
code=TrCQCp02fodz071SdKTXisZseJFcNwWJcFs7z3772tw&state=e8e3b77123

但是客户报告了这一点:

org.pac4j.oidc.exceptions.OidcMissingSessionStateException: State cannot be determined
    org.pac4j.oidc.credentials.extractor.OidcCredentialsExtractor.lambda$extract$0(OidcCredentialsExtractor.java:118)
    java.base/java.util.Optional.orElseThrow(Optional.java:403)
    org.pac4j.oidc.credentials.extractor.OidcCredentialsExtractor.extract(OidcCredentialsExtractor.java:118)
    org.pac4j.core.client.BaseClient.getCredentials(BaseClient.java:74)
    org.pac4j.core.engine.DefaultCallbackLogic.perform(DefaultCallbackLogic.java:83)
    org.pac4j.demo.jee.DemoConfigFactory$MyCallbackLogic.perform(DemoConfigFactory.java:126)
    org.pac4j.jee.filter.CallbackFilter.internalFilter(CallbackFilter.java:63)
    org.pac4j.jee.config.AbstractConfigFilter.doFilter(AbstractConfigFilter.java:92)

这让我很恼火,因为回调中存在状态。 (主机上的两个服务都工作得很好,因此我假设状态来自 tomcat 会话)。我是否必须以特殊方式配置 pac4j 才能允许通过 URI 进行状态传输?

java openid-connect pac4j
1个回答
0
投票

生成的状态被发送到授权端点并保存到 Web 会话中。

将回调 URL 上检索到的状态与从 Web 会话中检索到的状态进行比较。

错误:“无法确定状态”是指您无法从 Web 会话中检索保存的状态。因此,您的网络会话可能存在问题。您在 HTTP 请求中看到什么 JSESSIONID cookie?

© www.soinside.com 2019 - 2024. All rights reserved.