首页 > 解决方案 > Keycloak需要数据库吗

问题描述

我已将 Keycloak 设置为 SAML 代理,身份验证由当局提供的外部 IdP 完成。使用此 IdP 登录的用户都被接受,我们从 Keycloak 需要的只是一个 OAuth 令牌来访问我们的系统。我已经尝试了使用 H2 的默认设置和使用外部 MariaDB 运行。

外部 IdP 为我们提供了用户的全名和个人 ID。GDPR 涵盖了这两个数据,我真的不喜欢将这些数据存储在 DMZ 中运行的数据库中的声音。为 Keycloak 开放以访问后端的数据库也不是一个好的解决方案,尤其是当我不需要存储用户时。

在没有数据库的情况下运行的好处是我有一个更简单的 DMZ 设置,因为我真的不需要在后端存储任何关于用户的信息。

我需要一个数据库吗?如果没有,我如何运行 Keycloak?

标签: keycloakkeycloak-services

解决方案


我需要一个数据库吗?如果没有,我如何运行 Keycloak?

是的,但是,开箱即用的 Keycloak 无需部署任何外部数据库即可运行。从 Keycloak 官方文档部分Relational Database Setup可以阅读:

Keycloak 带有自己的嵌入式基于 Java 的关系数据库,称为 H2。这是 Keycloak 将用于持久化数据的默认数据库,并且实际上仅存在以便您可以开箱即用地运行身份验证服务器。

所以开箱即用你不能在没有数据库的情况下运行 Keycloak。

从相同的文档中可以阅读:

我们强烈建议您将其替换为更适合生产的外部数据库。H2数据库在高并发情况下不太可行,也不应该在集群中使用。

所以关于这个:

没有数据库运行的好处是我有一个更简单的 DMZ 设置,因为我真的不需要存储关于用户的任何内容,而是在后端。

您最好还是部署另一个数据库,因为 Keycloak 在数据库中存储的不仅仅是用户信息(例如,领域信息、组、角色等)。

外部 IdP 为我们提供了用户的全名和个人 ID。GDPR 涵盖了这两个数据,我真的不喜欢将这些数据存储在 DMZ 中运行的数据库中的声音。为 Keycloak 开放以访问后端的数据库也不是一个好的解决方案,尤其是当我不需要存储用户时。

您可以配置 IDP 和 Keycloak,即只要这些用户进行身份验证,用户就不会被导入 Keycloak。


推荐阅读