通过反向代理保护不同类型的不安全应用程序
Secure different types of unsecured applications by a reverse proxy
我目前正在从事一个要求复杂的项目,我对正在考虑的解决方案感到不满意。
主要思想是在不修改现有应用程序的情况下保护它们(它们本身不包括安全性)。这些应用程序无法从外部访问,只能通过反向代理 (OpenResty) 访问。
用户无法访问所有应用程序,识别用户的解决方案是 Keycloak。
主要成分是:
- angular 门户:入口点
- 在所选应用程序上重定向用户的反向代理
- IAM:Keycloak
- 所有可用的应用程序
this schema explain it
想法是:
- 用户在 Keycloak 上单击登录并使用包含他的角色(他有权访问的应用程序)的访问令牌 (JWT) 返回门户
- 用户点击门户上的一个应用程序,他通过反向代理被重定向到目标应用程序
- 反向代理检查令牌(exp、iss和角色)的有效性
我知道这不是在应用程序之间执行某些 SSO 的正确方法,但这里的要求是不能编辑不受保护的应用程序,但必须由前期系统保护(反之-这里是代理)
我的问题是:好的,这将适用于第一次调用,因为用户在门户上有他的 JWT 令牌并第一次使用它访问应用程序,但之后用户将单击 link 在这个应用程序中..没有更多的令牌。这种架构可以很好地保护 Web 应用程序的 REST API bu,听起来有点不确定。
尝试使用github.com/gambol99/keycloak-proxy。它在 cookie 中存储令牌,这是网络应用程序的更好选择。
!!!警告:我想任何身份验证代理只能使用 授权代码流 ,但是 隐式流 推荐用于单页应用程序(Angular ).这真的取决于您的 Angular 应用是什么。分析秒。先正后反,稳妥。
一般情况下,您会使用反向代理服务器来处理用户身份验证,而不是先登录到 keycloak。
流程是这样的:
- 用户访问门户。
- 门户通过反向代理将用户重定向到应用程序。
- 反向代理首先将用户重定向到keycloak
身份验证,并在浏览器和
反向代理服务器。
- 反向代理转发请求到你的应用
服务器。
- 对于所有后续请求,用户始终通过反向代理服务器。
我目前正在从事一个要求复杂的项目,我对正在考虑的解决方案感到不满意。
主要思想是在不修改现有应用程序的情况下保护它们(它们本身不包括安全性)。这些应用程序无法从外部访问,只能通过反向代理 (OpenResty) 访问。
用户无法访问所有应用程序,识别用户的解决方案是 Keycloak。
主要成分是:
- angular 门户:入口点
- 在所选应用程序上重定向用户的反向代理
- IAM:Keycloak
- 所有可用的应用程序
this schema explain it
想法是:
- 用户在 Keycloak 上单击登录并使用包含他的角色(他有权访问的应用程序)的访问令牌 (JWT) 返回门户
- 用户点击门户上的一个应用程序,他通过反向代理被重定向到目标应用程序
- 反向代理检查令牌(exp、iss和角色)的有效性
我知道这不是在应用程序之间执行某些 SSO 的正确方法,但这里的要求是不能编辑不受保护的应用程序,但必须由前期系统保护(反之-这里是代理)
我的问题是:好的,这将适用于第一次调用,因为用户在门户上有他的 JWT 令牌并第一次使用它访问应用程序,但之后用户将单击 link 在这个应用程序中..没有更多的令牌。这种架构可以很好地保护 Web 应用程序的 REST API bu,听起来有点不确定。
尝试使用github.com/gambol99/keycloak-proxy。它在 cookie 中存储令牌,这是网络应用程序的更好选择。
!!!警告:我想任何身份验证代理只能使用 授权代码流 ,但是 隐式流 推荐用于单页应用程序(Angular ).这真的取决于您的 Angular 应用是什么。分析秒。先正后反,稳妥。
一般情况下,您会使用反向代理服务器来处理用户身份验证,而不是先登录到 keycloak。
流程是这样的:
- 用户访问门户。
- 门户通过反向代理将用户重定向到应用程序。
- 反向代理首先将用户重定向到keycloak 身份验证,并在浏览器和 反向代理服务器。
- 反向代理转发请求到你的应用 服务器。
- 对于所有后续请求,用户始终通过反向代理服务器。