繁体   English   中英

从公共访问中隐藏 Keycloak 管理控制台

[英]Hide Keycloak admin console from public access

我们正在考虑为我们的公共 REST API(主要是 Spring 启动应用程序)使用 Keycloak 来授权和验证我们的用户。

为了不让管理 UI 公开可用,我们想对其进行限制。 我们的想法是创建两个实例但访问同一个数据库。

  1. 公共 Keycloak 实例,它只发布必要的内容,例如管理路径不可访问。 在这种情况下,只能访问此处推荐的路径: https://www.keycloak.org/server/reverseproxy#_exposed_path_recommendations

  2. 私有 Keycloak 实例,只能从 internal.network 访问,但提供管理 UI(控制台)。 然后可以用它来管理用户/权限。

这是具有两个不同实例但具有相同数据库的有效解决方案,还是这里有其他最佳实践不发布管理用户界面/路径?

是的,这绝对是一个常见的设置。 根据您的要求,出于可用性原因,始终建议在同一数据库上拥有多个 Keycloak 实例。 Keycloak在一个Infinispan Cache中共享memory中的一些数据(如session),在一个或多个Keycloak实例(一般称为集群)之间共享

然后,您将使用负载均衡器(如 haproxy、nginx、apache,选择实际上是无穷无尽的)并将其配置为将请求发送到实际的 Keycloak 实例。

可能的设置如下:在 4 个服务器上使用 4 个 Keycloak 实例:

  • public-keycloak-1.internal.example.com
  • public-keycloak-2.internal.example.com
  • 私钥斗篷-1.internal.example.com
  • private-keycloak-2.internal.example.com

然后您可以添加 2 个负载均衡器:

  • keycloak.example.com(发送请求到 public-keycloak-*)
  • keycloak.internal.example.com(向private-keycloak-*发送请求)

在此示例中,keycloak.internal.example.com 将是您连接到的实例,以便通过管理控制台或 Admin API 在 Keycloak 中执行管理任务,而 keycloak.example.com 将是您使用的主机用于您的应用程序的 Auth{n,z}。

可以在负载均衡器级别限制对 Admin API 和 Admin Console 的访问(限制对这些路径的请求),但是从 Keycloak 20 开始,也可以完全禁用 Admin API 和 Admin Console。 这是通过禁用文档中显示的相应功能来完成的。 这样,您就可以禁用功能“admin-api”、“admin”和“admin2”。 如果您在 public-keycloak-* 实例上执行此操作,那么对公共负载均衡器的请求永远不会触及 Admin API 或控制台,因为 Keycloak 配置为根本不首先处理这些请求。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM