lat*_*ell 7 keycloak oauth2-proxy
我有一个应用程序通过 oauth2-proxy 连接到 Keycloak,通常一切运行正常。
有时我会在 oauth2-proxy 日志文件中看到以下错误:
unable to redeem refresh token: failed to get token: oauth2: cannot fetch token: 400 Bad Request
Response: {"error":"invalid_grant","error_description":"Session doesn't have required client"},
removing session.
Run Code Online (Sandbox Code Playgroud)
Keycloak日志文件中相应的消息是这样的:
org.keycloak.events
type=REFRESH_TOKEN_ERROR, realmId=xxx, clientId=xxx, userId=f:ce9d954a-de51-48a4-a70b-xxx:xxx, ipAddress=x.x.x.x, error=invalid_token, grant_type=refresh_token, refresh_token_type=Refresh, refresh_token_id=bb77d7aa-c061-45d4-b2f7-fe938d5537cb, client_auth_method=client-secret
Run Code Online (Sandbox Code Playgroud)
我在例如“会话没有所需的客户端”意味着什么?中发现了相同的错误消息。但这个问题是针对 Keycloak 4.x 的,而我使用的是最新的 16.1.1。此外,我不使用“记住我”会话。
源代码仅在 oidc/TokenManager.java 中包含此消息,其中建议存在“跨 DC 环境”问题,但我们没有跨数据中心环境,只有同一 Kubernetes 命名空间中的三个实例安装了最新的 Helm 图表。
还有什么可能导致这个问题?
小智 3
原因之一可能如下(使用 keycloak 20.0):如果您启用了“撤销刷新令牌”选项,并且您的应用程序中存在错误,则您的应用程序可能会尝试使用旧的刷新令牌进行刷新。该调用将收到错误代码 400 以及错误描述“Stale token”。(在我的例子中,我忽略了这个错误。)然后会话将被撤销。如果您的应用程序使用最新且最初有效的刷新令牌,则该调用只会得到错误描述:“会话没有所需的客户端”
归档时间: |
|
查看次数: |
1939 次 |
最近记录: |