在Docker / Cloud Foundry上运行的Keycloak是否可以进行通用路由转发?

问题描述

我们设法建立了Keycloak的独立HA集群,以在IMB Cloud(Cloud Foundry)上运行。 我们最初使用Thomas Darimont的Spring-Boot POC项目对其进行了测试部署,该项目还允许添加自定义内容,例如使用胡椒的BCrypt密码加密以及针对主要领域的某些路由转发。

事实证明,加密模块很容易作为.jar模块打包到Docker映像中的/ standalone / deployments /中,但是我担心添加此路由完全是另一回事。至少要在Keycloak本身,Docker映像,Wildfly或CF环境中进行设置。 当然,我们总是可以设置一个单独的网关来处理此问题,但这将是另一个需要维护的部署,因此,如果不这样做,那就太好了。

在Spring-Boot容器中,我们通过添加一个单独的Controller类来实现这些路由转发来实现此目的:

GET  /login                         => /auth/realms/{realm}/account
GET  /oidc/certs                    => /auth/realms/{realm}/protocol/openid-connect/certs
GET  /oidc/login-status-iframe.html => /auth/realms/{realm}/protocol/openid-connect/login-status-iframe.html
GET  /oidc/logout                   => /auth/realms/{realm}/protocol/openid-connect/logout
POST /oidc/auth                     => /auth/realms/{realm}/protocol/openid-connect/auth
POST /oidc/token                    => /auth/realms/{realm}/protocol/openid-connect/token
POST /oidc/token/introspect         => /auth/realms/{realm}/protocol/openid-connect/logout
POST /oidc/userinfo                 => /auth/realms/{realm}/protocol/openid-connect/userinfo

一种控制器方法

@GetMapping({BASE_PATH_OIDC + "/certs",BASE_PATH_OIDC + "/login-status-iframe.html",BASE_PATH_OIDC + "/logout"})
 public void forwardOidcGet(HttpServletRequest request,HttpServletResponse response) {
     String path = request.getRequestURI().substring(
                request.getRequestURI().lastIndexOf(BASE_PATH_OIDC) + BASE_PATH_OIDC.length() + 1);
     forward(forwardTokenPath + path,request,response);
 }

...没有什么比这更复杂了。

但是,在新情况下,我们在Cloud Foundry上将Keycloak作为docker映像运行,到目前为止,我还没有弄清楚如何实现这一目标。

我要补充一点,我对JBoss / Wildfly不太熟悉。 我们总是与部署在Tomcat(或云环境)上的Spring MVC或Spring Boot一起工作,因此我特别好奇是否存在像我们在Spring Boot中一样添加一个控制器的JBoss。如果能够以与现在部署该额外BCrypt模块类似的方式来执行此操作,那就太好了。

谢谢! 卢西亚

(我也在一个月前将这个问题发布在Keycloak话语小组中,但没有得到答案,所以我在这里重新发布)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)