0

我正在研究一个 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会导致 COR 问题。

我添加了这个属性来尝试强制 https:

keycloak.ssl-required=all

但是随后它将redirect_uri传递给keycloak登录的参数更改为https://2886795315-8080-ollie02.environments.katacoda.com:0/v1/todos

有谁知道为什么 url 路径:0附加到前面?

4

1 回答 1

0

这可能是这个答案的副本。

这是 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 中的非标准端口使用单独的代理传递指令,该指令将处理客户端 SSL 连接到 Keycloak 后端。

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

于 2020-08-25T14:55:01.983 回答