问题描述
我们设法建立了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 (将#修改为@)