尝试使用SSL将Spring-Boot应用程序连接到Keycloak

时间:2020-06-23 15:12:52

标签: spring-boot keycloak katacoda

我正在研究Katacoda方案,其中将spring-boot应用程序连接到KeyCloak。我想使它最小化,所以这是我的配置:

pom.xml

    <dependency>
        <groupId>org.keycloak</groupId>
        <artifactId>keycloak-spring-boot-starter</artifactId>
        <version>10.0.1</version>
    </dependency>
    </dependencies>

应用程序属性

#Keycloak Properties
#Katcoda Url
keycloak.auth-server-url=https://2886795315-8444-ollie02.environments.katacoda.com/auth
keycloak.realm=todoRealm
#Client
keycloak.resource=openid-login-client
keycloak.public-client=true

我的问题是,当我在应用程序上命中一个端点时,它会正确重定向到登录页面。但是问题是它传递的redirect_uri不是ssl,因此http://2886795315-8080-ollie02.environments.katacoda.com/v1/todos会导致CORs问题。

我添加了此属性以尝试强制使用https:

keycloak.ssl-required=all

但是随后它会将传递到密钥斗篷登录中的redirect_uri参数更改为https://2886795315-8080-ollie02.environments.katacoda.com:0/v1/todos

有人知道为什么在URL路径的前面附加:0吗?

1 个答案:

答案 0 :(得分:0)

这可能是this answer的副本。

这是Keycloak安全性默认设置的一部分,其中使用非标准端口进行SSL连接进行升级。例如,可以在Keycloak环境中使用KEYCLOAK_HTTPS_PORT=4443进行设置。

对于应用程序(客户端),这可能会要求(例如,在设置ssl-required=all时),应用程序将需要知道此端口(即,将KEYCLOAK_HTTPS_PORT设置为什么)。要在应用程序中显式设置此端口,以使其不默认为:0,请使用keycloak.confidential-port=4443属性。

因为您使用的是nginx,所以当然可以通过代理通过指令来处理,在这种情况下,只需将keycloak.confidential-port属性设置为SSL的标准443。

不会过于复杂,但是您当然可以对NginX中的非标准端口使用单独的proxy-pass指令,该指令将处理与Keycloak后端的客户端SSL连接。

(提醒我,请找到此答案的文档链接)...我现在没有时间。