IIS (443) 后面的 Tomcat (8080) 与 Keycloak (8443) 身份验证 : tomcat redirects to keycloak on 443 port instead of 8443

标签 tomcat keycloak iis-arr

用例: 由于具体限制,我需要配置如下配置:

  • Tomcat 配置为使用端口 8080
  • IIS 配置为使用端口 443 (SSL)
  • IIS 通过 ARR + URL 重定向规则重定向到 Tomcat
  • Keycloak 独立配置为使用端口 8443 (SSL)
  • 通过公共(public)域而不是 IP 地址访问应用程序(即:www.myserver.com)

将使用 IIS 代理访问 Tomcat 应用程序: https://server/myapp

Keycloak 身份验证将直接使用 keycloak URL 进行访问: https://server:8443/auth/ ....

问题: 当我直接使用 8443 安全端口访问 keycloak 时效果很好,但是当我通过 IIS 代理 (443) 访问 Java 应用程序时,IIS/Tomcat 将 keycloak 身份验证重定向到端口 443 而不是端口 8443。

问题: IIS、Tomcat 或 Keycloak 上是否缺少任何设置,使 tomcat 重定向到正确的 keycloak 8443 端口以进行身份​​验证?

即: 添加到浏览器时 https://server/myapp URL,tomcat 应用程序正在重定向(用于身份验证)到 https://server/auth/而不是 https://server:8443/auth/

IIS ARR 配置截图: IIS ARR settings

IIS重定向规则配置截图 IIS Redirect rule

部署用例截图 Deployment use case diagram

最佳答案

but when I access the Java application via IIS proxy (443), the IIS/Tomcat is redirecting for the keycloak authentication to port 443 instead of port 8443.

Java 应用程序的请求来自哪里,它将去往哪里。如果您要访问该域名,它将首先在 443 上访问您的 IIS 代理。

尝试在 IIS 中为 keycloak 添加 8443 重写规则

关于IIS (443) 后面的 Tomcat (8080) 与 Keycloak (8443) 身份验证 : tomcat redirects to keycloak on 443 port instead of 8443,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51460576/

相关文章:

java - 在tomcat中部署后无法访问spring boot应用程序

tomcat - Windows Jenkins Slave 和 ssh-agent

java - Tomcat 7 : How do I specify Database resource when making connection to Microsoft Access

heap-memory - 如何在独立配置中通过 CLI 更改 keycloak jvm 参数

routes - 应用程序请求路由不路由到同一台计算机

spring - 服务器到客户端 SSL 加密,不带 SSL 身份验证 - Tomcat 和 Spring

oauth-2.0 - keycloak 中的单点注销原则

iis - 向 ARR 请求添加自定义 header

java - 如何在 spring-boot 应用程序中配置多个 Keycloak sso 客户端?