将 Keycloak 用作 REST API 并同时避免使用 Keycloak 形式的安全隐患?

Security implications of using Keycloak as an REST API and avoiding Keycloak forms all together?

我目前正在开发一个项目,我们使用 OpenID Connect 和 Oauth2 以及 Keycloak 的默认表单。

我们有实施 2FA 的要求。在一个理想的世界中,我们会把 keycloak 表单全部废弃,只使用 keycloak 作为无头 API 并在主应用程序本身中构建登录表单。

原因是

经过研究,我发现不推荐使用 keycloak 作为 API,因为客户端和第 3 方登录之间的重定向充当额外的安全层,并且是 OAuth2 的一部分。 0 模型。我们正在存储用户的医疗信息,因此安全是个问题。

你们有什么建议?

您是对的,不建议通过 API 使用 OAuth 服务器。重定向是 OAuth 流程安全性的重要组成部分。这当然会产生您提到的所有缺点 - 必须维护具有相同功能的多个代码库。

此问题的解决方案是使用具有强大安全机制的超媒体 API,可用于执行 OAuth 流程。不幸的是,这还不是一个标准,它是一个新兴的特性。您可以阅读这样的 API 是如何工作的 here and here 您可以找到我们在 Curity 所做的实施的安全功能的深入描述。

目前在 Keycloak 中实现它绝对不是一件容易的事,但很可能没有其他选项可以解决这个问题——正如你所说的你需要 2FA,没有 2FA 的一个选项是使用 Resource所有者密码流程。