![](/img/trans.png)
[英]Export users with credential in keycloak with Admin Console API
[英]Hide Keycloak admin console from public access
我们正在考虑为我们的公共 REST API(主要是 Spring 启动应用程序)使用 Keycloak 来授权和验证我们的用户。
为了不让管理 UI 公开可用,我们想对其进行限制。 我们的想法是创建两个实例但访问同一个数据库。
公共 Keycloak 实例,它只发布必要的内容,例如管理路径不可访问。 在这种情况下,只能访问此处推荐的路径: https://www.keycloak.org/server/reverseproxy#_exposed_path_recommendations 。
私有 Keycloak 实例,只能从 internal.network 访问,但提供管理 UI(控制台)。 然后可以用它来管理用户/权限。
这是具有两个不同实例但具有相同数据库的有效解决方案,还是这里有其他最佳实践不发布管理用户界面/路径?
是的,这绝对是一个常见的设置。 根据您的要求,出于可用性原因,始终建议在同一数据库上拥有多个 Keycloak 实例。 Keycloak在一个Infinispan Cache中共享memory中的一些数据(如session),在一个或多个Keycloak实例(一般称为集群)之间共享
然后,您将使用负载均衡器(如 haproxy、nginx、apache,选择实际上是无穷无尽的)并将其配置为将请求发送到实际的 Keycloak 实例。
可能的设置如下:在 4 个服务器上使用 4 个 Keycloak 实例:
然后您可以添加 2 个负载均衡器:
在此示例中,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.