我为我的客户设置了以下允许的重定向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
我得到一个带有以下Location字段的HTTP/1.1 302 Found
:
Location: exp://192.168.2.212?state=T0pvzPyHF6&session_state=b1cf16ad-b.....
端口缺少。我的(世博)客户端在安卓仿真器中,然后就开始抱怨不能连接到192.168.2.212 port 80
。这很自然。
我使用的是码头枢纽图像11.0.0
我怎么才能阻止这一切?是虫子吗?
(我的应用程序的iOS版本使用的是一个不同的redirect_uri
(exp://127.0.0.1:19000
),但是虽然Keycloak也剥离了那里的端口,并接收了一个Location: exp://127.0.0.1?state=T0p...
,但它确实连接到端口19000,并且由于某种原因工作正常。)
编辑:请注意,身份验证在iOS上运行得很好,我在iOS中运行的密钥披风设置与Android完全相同(这是一个Resive原住民应用程序)。
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忽略了端口。这是不应该发生的。
发布于 2021-07-29 13:06:08
发布于 2021-05-18 11:28:22
似乎是个bug:https://issues.redhat.com/browse/KEYCLOAK-9405?_sscc=t
在12.0.4上测试,现在仍在发生。这似乎是任何非http协议的问题。
https://stackoverflow.com/questions/63437976
复制相似问题