【发布时间】:2018-12-09 19:11:41
【问题描述】:
在 keycloak 中遇到 redirect_uri 错误。发现在 JIRA KEYCLOAK-7237 上记录了相同的问题,只是想检查任何解决方法吗?任何人都可以帮忙吗?提前谢谢你。
2018-06-30 11:34:13,996 WARN [org.keycloak.events](默认任务 8)type=LOGIN_ERROR,realmId=Victz,clientId=portal,userId=null,ipAddress=,error=invalid_redirect_uri, redirect_uri=https://www.example.com:0/home
我正在使用在centos7 上运行的apache http 反向代理,wildly 10,keycloak 3.4.3。在下面的环境中也试过,但同样的错误。
试用过 狂野 10,狂野 11,jboss 7.1, Keycloak 3.4.3 和 keycloak 4.0
还尝试关闭 apache http 并直接访问 http://www.example.org:8080/home ,但似乎 return_uri 自动转换为端口 0 的 https。
请看下面的standalone.xml,尝试在proxy-peer 和request-dumper 配置下删除,但没有成功。
<subsystem xmlns="urn:jboss:domain:undertow:4.0">
<buffer-cache name="default"/>
<server name="default-server">
<http-listener name="default" socket-binding="http" proxy-address-forwarding="true" enable-http2="true"/>
<https-listener name="https" socket-binding="https" proxy-address-forwarding="true" security-realm="ApplicationRealm" enable-http2="true"/>
<host name="default-host" alias="localhost">
<location name="/" handler="welcome-content"/>
<location name="/drive" handler="drive"/>
<access-log pattern="%h %l %u %t "%r" %s %b "%{i,Referer}" "%{i,User-Agent}" "%{i,COOKIE}" "%{o,SET-COOKIE}" %S "%I %T"" prefix="access."/>
<filter-ref name="server-header"/>
<filter-ref name="x-powered-by-header"/>
<http-invoker security-realm="ApplicationRealm"/>
</host>
<host name="example1" alias="example.com1,www.example.com1" default-web-module=“example1-0.1.war">
<location name="/drive" handler="drive”/>
<filter-ref name="proxy-peer"/>
<filter-ref name="request-dumper" priority="30"/>
</host>
<host name="example2" alias="example.com2,www.example.com2" default-web-module="example2-0.1.war">
<location name="/drive" handler="drive"/>
<filter-ref name="proxy-peer"/>
<filter-ref name="request-dumper" priority="30"/>
</host>
<host name="example3" alias="example.com3,www.example.com3" default-web-module="example3-0.1.war">
<location name="/drive" handler="drive"/>
<filter-ref name="proxy-peer"/>
<filter-ref name="request-dumper" priority="30"/>
</host>
</server>
<servlet-container name="default">
<jsp-config/>
<websockets/>
</servlet-container>
<handlers>
<file name="welcome-content" path="${jboss.home.dir}/welcome-content"/>
<file name="drive" path="/app/drive"/>
</handlers>
<filters>
<response-header name="server-header" header-name="Server" header-value="JBoss-EAP/7"/>
<response-header name="x-powered-by-header" header-name="X-Powered-By" header-value="Undertow/1"/>
<filter name="proxy-peer" class-name="io.undertow.server.handlers.ProxyPeerAddressHandler" module="io.undertow.core"/>
<filter name="request-dumper" class-name="io.undertow.server.handlers.RequestDumpingHandler" module="io.undertow.core"/>
</filters>
</subsystem>
【问题讨论】:
-
我也有同样的问题。我不知道 :0 端口是来自 java 适配器(在我的情况下是 keycloak 代理)还是来自 keycloak 中配置错误的客户端。在 keycloak 侦听器中还有 proxy-address-forwarding="true" 选项,至少在 keycloak 代理中是 proxy-address-forwarding 参数。但这会影响主机转发的行为,而不是端口。 Keycloak 正在监听 https:8443,keycloakproxy 在 http:8080
-
@Shawn - 你明白了吗?我有同样的问题。我在 centos 7 上使用 nginx 反向代理。
标签: reverse-proxy keycloak wildfly-10 undertow wildfly-11