Keycloak 客户端 URL 配置重定向 URLs

Keycloak client URL configuration of redirectURLs

我在尝试找出 'Valid Redirect URIs'、'Base URL'、'Backchannel Logout URL' 的值时遇到了问题。 我正在使用 Keycloak 15.02 以及 10 个 Spring 引导应用程序和 2 个领域。应用程序套件和 Keycloak 部署到我们的客户站点,在某些情况下可能有 2 个以上的领域。

在我们的开发环境中,我们有两个主机(api.dev 和 web.dev),它们是 运行 Keycloak 和客户端应用程序。一切都是 运行 Docker 个容器。

“有效重定向 URI”的客户端配置,'Backchannel Logout URL' 当前包括主机名 web.dev。我希望能够删除该主机名以使 Realm 配置在环境之间可移植。必须在每个领域中配置每个客户端会导致大量重复且容易出错的工作。

但是当我删除主机名时,出现错误:Invalid parameter: redirect_uri

Keyloak 在请求参数中显示的重定向 URL 对于两种配置看起来都一样,所以我真的不明白为什么它告诉我它无效。

这个有效:

该配置会产生在以下请求中看到的 redirect_uri 值:

http://api.dev.etisoftware.local:8080
/auth/realms/OSS/protocol/openid-connect/auth
?response_type=code
&client_id=launchpad
&scope=openid%20profile%20email%20roles
&state=E-8VBZUc1CbsIUi5HdPG68pNK1IVNB8bzDT3Aengx9Q%3D
&redirect_uri=http://web.dev.etisoftware.local/launchpad/login/oauth2/code/OSS
&nonce=3OUMxVmrglSC0KK-WGWDjG4yB9TOuvqBO5TMnDk4R-A    

但这不是:

该配置会产生在以下请求中看到的 redirect_uri 值:

http://api.dev.etisoftware.local:8080
/auth/realms/OSS/protocol/openid-connect/auth
?response_type=code
&client_id=launchpad
&scope=openid%20profile%20email%20roles
&state=cGh1zZ3et0ssogIsNclL2sHcrfDxNePaHf5UXxw0aR8%3D
&redirect_uri=http://web.dev.etisoftware.local/launchpad/login/oauth2/code/OSS
&nonce=Qm846RYZZnU3fG4Cj75e8lBejupf24VbV1WjDVW1NJA

如您所见,请求参数中 redirect_uri 的值对于请求和客户端配置都是相同的,因此(对我而言)不清楚 Keycloak 试图告诉我什么。

我也碰巧在 K3s 集群中有 Keycloak 和客户端应用程序 运行。由于某种原因,在该环境中,我不必在有效重定向 URI 中包含主机名,而且它工作得很好。难道只是侥幸?

重定向 URI 工具提示:

"浏览器在成功登录或注销后可以重定向到的有效 URI 模式。允许使用简单的通配符,例如 'http://example.com/'。也可以指定相对路径,例如 /my/relative/path/。相对路径是相对于客户端根 URL,或者如果指定了 none,则使用身份验证服务器根 URL。对于 SAML,您必须设置有效的 URI 模式,如果您依赖于登录请求中嵌入的消费者服务 URL

因此,如果您想在重定向 URI 中使用相对路径,请正确配置 Root URL,而不是 Base URL。

我在 Keycloak 的网站上得到了这个答案,但是 Jangaraj。 https://keycloak.discourse.group/t/trouble-with-configuring-client-valid-redirect-uris/13251