通过反向代理保护不同类型的不安全应用程序

Secure different types of unsecured applications by a reverse proxy

我目前正在从事一个要求复杂的项目,我对正在考虑的解决方案感到不满意。

主要思想是在不修改现有应用程序的情况下保护它们(它们本身不包括安全性)。这些应用程序无法从外部访问,只能通过反向代理 (OpenResty) 访问。

用户无法访问所有应用程序,识别用户的解决方案是 Keycloak。

主要成分是:

this schema explain it

想法是:

我知道这不是在应用程序之间执行某些 SSO 的正确方法,但这里的要求是不能编辑不受保护的应用程序,但必须由前期系统保护(反之-这里是代理)

我的问题是:好的,这将适用于第一次调用,因为用户在门户上有他的 JWT 令牌并第一次使用它访问应用程序,但之后用户将单击 link 在这个应用程序中..没有更多的令牌。这种架构可以很好地保护 Web 应用程序的 REST API bu,听起来有点不确定。

尝试使用github.com/gambol99/keycloak-proxy。它在 cookie 中存储令牌,这是网络应用程序的更好选择。

!!!警告:我想任何身份验证代理只能使用 授权代码流 ,但是 隐式流 推荐用于单页应用程序(Angular ).这真的取决于您的 Angular 应用是什么。分析秒。先正后反,稳妥。

一般情况下,您会使用反向代理服务器来处理用户身份验证,而不是先登录到 keycloak。

流程是这样的:

  1. 用户访问门户。
  2. 门户通过反向代理将用户重定向到应用程序。
  3. 反向代理首先将用户重定向到keycloak 身份验证,并在浏览器和 反向代理服务器。
  4. 反向代理转发请求到你的应用 服务器。
  5. 对于所有后续请求,用户始终通过反向代理服务器。