14

我们有一个简单的要求: PS : https:// === https://

当用户点击https:/company_landing.company.com时,他们应该被重定向到 keycloak 登录页面(在https:/ourcompany-keycloak.company.com)。用户输入他/她的 keycloak 登录凭据。成功登录 keycloak 后,它们将显示到 company_landing 页面。

问题是:

当用户类型 - https://company_landing.company.com

Keycloak 尝试打开登录页面,但给出 500 内部服务器错误并显示“重定向 uri 不正确”,在浏览器中我看到了这个:

https://ourcompany-keycloak.company.com/auth/realms/realm1/tokens/login?client_id=company_dev&state=aaaafffff-559d-4312-a8be-123412341234&redirect_uri=http%3A%2F%2Fcompany_landing.company.com%3A8081% _ 2F%3Fauth_callback%3D1

如果您观察上面的重定向 uri,我认为问题在于重定向 uri 不是以 http 开头,而是 http:/company-landing.company.com 不存在。

设置: keycloak 设置: -

领域 --> 设置 --> 登录:需要 SSL = 所有请求(也尝试使用“外部”)

应用程序-->realm1-->设置-->重定向 URI = https://company_landing.company.com/ *

AWS 负载均衡器: 端口配置:443(https) 转发到 8443

我对它为什么要剥离 SSL 感到困惑?以上在本地环境中测试时工作正常(可能是因为它的http://localhost),但是当尝试访问任何经过 ssl 加密的链接时,这总是会给出无效的重定向 url。

-毫米

4

2 回答 2

8

您必须在代理配置 json 文件中添加以下属性(默认为 proxy.json)作为应用程序属性(与“adapter-config”相同的级别):

"proxy-address-forwarding" : true,

此配置属性未记录在案,但存在于代理配置的来源中:https ://github.com/keycloak/keycloak/blob/master/proxy/proxy-server/src/main/java/org/keycloak/proxy /ProxyConfig.java

于 2016-07-12T11:27:12.850 回答
4

您不需要安装证书或使用适配器配置中的更改。

这需要在您的standalone.xmlstandalone-hadomain.xml视情况而定)中完成,如 Keycloak 文档反向代理部分https://www.keycloak.org/docs/latest/server_installation/index.html#_setting-up-a中所述-负载平衡器或代理

假设您的反向代理不使用端口 8443 进行 SSL,您还需要配置 HTTPS 流量重定向到的端口。

<subsystem xmlns="urn:jboss:domain:undertow:4.0">
    ...
    <http-listener name="default" socket-binding="http"
        proxy-address-forwarding="true" redirect-socket="proxy-https"/>
    ...
</subsystem>

将 redirect-socket 属性添加到 http-listener 元素。该值应该是 proxy-https,它指向您还需要定义的套接字绑定。

然后在 socket-binding-group 元素中添加一个新的 socket-binding 元素:

<socket-binding-group name="standard-sockets" default-interface="public"
    port-offset="${jboss.socket.binding.port-offset:0}">
    ...
    <socket-binding name="proxy-https" port="443"/>
    ...
</socket-binding-group>
于 2018-08-16T15:59:28.147 回答