Redirect 为什么keydape要删除重定向uri中的SSL?

Redirect 为什么keydape要删除重定向uri中的SSL?,redirect,ssl,amazon-web-services,https,keycloak,Redirect,Ssl,Amazon Web Services,Https,Keycloak,我们有一个简单的要求,其中: PS:https://==https:// 当用户点击https:/company\u landing.company.com时,他们应该被重定向到keydrope登录页面(在https:/ourcompany keydrope.company.com)。用户输入他/她的KeyClope登录凭据。成功登录到Key斗篷后,它们将显示在公司登录页上 问题是: 当用户键入-https:/company\u landing.company.com Key斗篷试图打开登录页,

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

当用户点击https:/company\u landing.company.com时,他们应该被重定向到keydrope登录页面(在https:/ourcompany keydrope.company.com)。用户输入他/她的KeyClope登录凭据。成功登录到Key斗篷后,它们将显示在公司登录页上

问题是:

当用户键入-https:/company\u landing.company.com

Key斗篷试图打开登录页,但显示500个内部服务器错误,并显示“不正确的重定向uri”,在浏览器中我看到:

https:/ourcompany keydove.company.com/auth/realms/realm1/tokens/login?client_id=company_dev&state=aaaaaafff-559d-4312-a8be-123412341234&重定向_uri=http%3A%2F%2F company_landing.company.com%3A8081%2F%3Fauth_回调%3D1

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

设置: 钥匙斗篷设置:-

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

应用程序-->realm1-->设置-->重定向URI=*

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

我不明白为什么要剥离SSL?当在本地环境上进行测试时,上面的方法可以很好地工作(可能是因为它),但是当尝试访问任何ssl加密的链接时,这总是会给出一个无效的重定向url


-mm

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


此配置属性没有文档记录,但是存在于代理配置的源中:

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

这需要在您的
standalone.xml
standalone ha
domain.xml
(视情况而定)中完成,如keydove文档反向代理部分所述

假设您的反向代理未将端口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>

...
...
将重定向套接字属性添加到http侦听器元素。该值应该是代理https,它指向您还需要定义的套接字绑定

然后向套接字绑定组元素添加新的套接字绑定元素:

<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>

...
...

您是否解决了此问题?很抱歉,忘记更新此问题。我认为问题在于AWS负载平衡器设置不正确。我通过为负载平衡器侦听器设置选择以下选项解决了这个问题:443和https用于负载平衡器端口和协议,80和https用于实例端口和协议。端口80和https?好的,那么您也在ELB后面的实例上安装了证书?是的,我们也在ELB后面的实例上初始化了证书,所以您现在已经开始工作了?我也有同样的问题。我使用nginx作为负载平衡器/反向代理这样你就可以将https/ssl/tls处理卸载到负载平衡器/反向代理上,并且仍然使用https/ssl
redirect socket=“proxy https”
trickI是否使用kubernetes的helm图表进行设置,而我仍然错过了“https”中的“s”。有办法检查吗?
<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>