我正在研究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
吗?
答案 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连接。
(提醒我,请找到此答案的文档链接)...我现在没有时间。