我的问题主要围绕是否可以在Spring应用程序中向同一用户提供两个具有单独的身份验证来源的登录表单。
我希望将不同的安全配置类(或same class with static inner config classes)添加到我的Maven构建中,具体取决于所选的配置文件: UAT ,或生产。或者使用部署环境控制它(请参阅下面的框架)。
在无论如何中,应用程序应该有自己的“特权”访问权限验证提示(如管理页面),我希望看到应用程序的登录页面。
但是,对于 UAT 配置文件,我希望在任何用户可以查看任何页面之前看到一个额外的登录页面,以及管理员功能的登录页面(如果这些受保护的页面)被访问。
我们的想法是在 UAT 中完全按照在生产中操作的方式显示应用程序,但不允许任何用户在没有首先通过单独登录进行身份验证的情况下查看任何页面形式。
我愿意研究任何想法,但我的理想情况是允许使用不同的Spring Security配置集。
我尝试/考虑的内容
动态过滤器 通过注册捕获任何请求并转发到servlet的动态过滤器来实现这个想法,我有一些运气,它的唯一目的是处理显示不同的登录页面并处理外部认证(所有包装在构建时包含在jar中)对于UAT而言,但这不是一个Spring应用程序,我相信调度servlet会否定这种方法。
框架(应用程序) 我已经考虑过在外部“UAT Viewer”应用程序框架内显示应用程序的想法,该应用程序具有自己的安全性,从理论上分割出Spring安全性问题。但我不知道是否会为外部和内部应用程序创建不同的cookie(出于安全原因,我很少考虑帧)。理想情况下,我想拒绝x-frame-options标题中的所有框架以帮助防止点击,但如果这种方法可行,我会很高兴只需要将框架策略更改为同源。
我想我会首先尝试框架方法并报告回来。
考虑到这一点,将在框架中呈现的内部应用程序仍然必须可以被外部世界访问,以便客户端可以加载它,因此这种方法违背了隔离内部应用程序的目的,对最小的影响它的代码。