Keycloak 正在从位置 header 中我的 redirect_uri 中剥离端口。为什么?
Keycloak is stripping the port from my redirect_uri in the Location header. Why?
我为我的客户端设置了以下允许的重定向 uri:exp://192.168.2.212:19000
使用以下 URL 进行代码交换后:
GET /auth/realms/xxxxx/protocol/openid-connect/auth?code_challenge=m71Cl...D4hw&redirect_uri=exp%3A%2F%2F192.168.2.212%3A19000&client_id=3B03...
X-Forwarded-For: 178.84.x.x
X-Forwarded-Host: oidc.production.my.domain.com
X-Forwarded-Port: 443
X-Forwarded-Proto: https
X-Forwarded-Server: 09918a799a23
X-Real-Ip: 178.84.x.x
我得到一个 HTTP/1.1 302 Found
,其中包含以下位置字段:
Location: exp://192.168.2.212?state=T0pvzPyHF6&session_state=b1cf16ad-b.....
缺少端口。 android 模拟器中的我的 (Expo) 客户端然后吐出无法连接到 192.168.2.212 port 80
。顺其自然。
我正在使用 docker 中心图像 11.0.0
我该如何防止这种情况发生?这是一个错误吗?
(我的应用程序的 iOS 版本使用不同的 redirect_uri
(exp://127.0.0.1:19000
),但是尽管 Keycloak 也剥离了那里的端口并且它收到了 Location: exp://127.0.0.1?state=T0p...
它 确实 连接到端口 19000 并且出于某种原因工作正常。)
编辑:请注意,身份验证在 iOS 上工作正常,我 运行 在 iOS 中的 Keycloak 设置与 Android 完全相同(这是一个 React Native 应用程序) .
Keycloak 没有记录错误,并且出现以下调试消息:
13:24:33,365 DEBUG [org.keycloak.events] (default task-47) type=LOGIN, realmId=neemop, clientId=3B03FD35, userId=28619cd3-c51d-4756-9d06-fb47********, ipAddress=178.84.x.x, auth_method=openid-connect, auth_type=code, response_type=code, redirect_uri=exp://192.168.2.212:19000, consent=no_consent_required, code_id=a0faa4d4-6826-4c2f-9243-*******, response_mode=query, username=ron.arts@mydomain.com, authSessionParentId=a0faa4d4-6826-4c2f-9243-*******, authSessionTabId=-Pn******
显示 redirect_uri 已正确解析。只是在实际的 HTTP 响应中 Location: header 省略了端口。哪个恕我直言不应该发生。
似乎是一个错误:https://issues.redhat.com/browse/KEYCLOAK-9405?_sscc=t
在 12.0.4 上测试过,仍然出现。这似乎是任何非 http(s) 协议的问题
另一个错误已提交给 keycloak 团队:
https://issues.redhat.com/browse/KEYCLOAK-17141
keycloak 版本 >= 13.0.0 中提供了修复程序
我为我的客户端设置了以下允许的重定向 uri:exp://192.168.2.212:19000
使用以下 URL 进行代码交换后:
GET /auth/realms/xxxxx/protocol/openid-connect/auth?code_challenge=m71Cl...D4hw&redirect_uri=exp%3A%2F%2F192.168.2.212%3A19000&client_id=3B03...
X-Forwarded-For: 178.84.x.x
X-Forwarded-Host: oidc.production.my.domain.com
X-Forwarded-Port: 443
X-Forwarded-Proto: https
X-Forwarded-Server: 09918a799a23
X-Real-Ip: 178.84.x.x
我得到一个 HTTP/1.1 302 Found
,其中包含以下位置字段:
Location: exp://192.168.2.212?state=T0pvzPyHF6&session_state=b1cf16ad-b.....
缺少端口。 android 模拟器中的我的 (Expo) 客户端然后吐出无法连接到 192.168.2.212 port 80
。顺其自然。
我正在使用 docker 中心图像 11.0.0
我该如何防止这种情况发生?这是一个错误吗?
(我的应用程序的 iOS 版本使用不同的 redirect_uri
(exp://127.0.0.1:19000
),但是尽管 Keycloak 也剥离了那里的端口并且它收到了 Location: exp://127.0.0.1?state=T0p...
它 确实 连接到端口 19000 并且出于某种原因工作正常。)
编辑:请注意,身份验证在 iOS 上工作正常,我 运行 在 iOS 中的 Keycloak 设置与 Android 完全相同(这是一个 React Native 应用程序) .
Keycloak 没有记录错误,并且出现以下调试消息:
13:24:33,365 DEBUG [org.keycloak.events] (default task-47) type=LOGIN, realmId=neemop, clientId=3B03FD35, userId=28619cd3-c51d-4756-9d06-fb47********, ipAddress=178.84.x.x, auth_method=openid-connect, auth_type=code, response_type=code, redirect_uri=exp://192.168.2.212:19000, consent=no_consent_required, code_id=a0faa4d4-6826-4c2f-9243-*******, response_mode=query, username=ron.arts@mydomain.com, authSessionParentId=a0faa4d4-6826-4c2f-9243-*******, authSessionTabId=-Pn******
显示 redirect_uri 已正确解析。只是在实际的 HTTP 响应中 Location: header 省略了端口。哪个恕我直言不应该发生。
似乎是一个错误:https://issues.redhat.com/browse/KEYCLOAK-9405?_sscc=t
在 12.0.4 上测试过,仍然出现。这似乎是任何非 http(s) 协议的问题
另一个错误已提交给 keycloak 团队:
https://issues.redhat.com/browse/KEYCLOAK-17141
keycloak 版本 >= 13.0.0 中提供了修复程序