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



我目前正在处理一个有复杂需求的项目,我对正在考虑的解决方案感到不舒服。

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

用户不能访问所有的应用程序,识别用户的解决方案是Keycloft。

主要组件有:

  • 一个棱角分明的入口:入口点
  • 重定向所选应用程序上的用户的反向代理
  • IAM:钥匙斗篷
  • 所有可用的应用程序

这个模式解释它

想法是:

  • 用户单击Keycloft登录,然后使用包含其角色(他可以访问的应用程序(的访问令牌(JWT(返回门户
  • 用户单击门户上的应用程序,然后通过反向代理重定向到目标应用程序
  • 反向代理检查令牌(exp、iss和角色(的有效性

我知道这不是在应用程序之间进行SSO的正确方法,但这里的要求是,未受保护的应用程序不能编辑,必须由前端系统(此处为反向代理(保护

我的问题是:好吧,这对第一次调用有效,因为用户在门户网站上有他的JWT令牌,第一次用它点击应用程序,但之后用户会点击该应用程序中的链接。。没有更多的象征了。这种体系结构可以很好地保护web应用程序的REST API bu,这听起来有点过时。

通常,您将使用反向代理服务器来处理用户身份验证,而不是首先登录到keycapture。

流程如下:

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

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

警告:我猜任何身份验证代理都只能使用授权代码流,但建议将隐式流

相关内容

最新更新