【发布时间】:2018-02-21 23:38:13
【问题描述】:
我的问题主要围绕是否有可能在 Spring 应用程序中向同一用户提供两个具有不同身份验证来源的登录表单。
我希望根据选择的配置文件将不同的安全配置类(或same class with static inner config classes)添加到我的 Maven 构建中:UAT 或 Production。或者通过部署环境来控制它(参见下面的框架)。
在任何一种情况,应用程序都应该有自己的“特权”访问(如管理页面)的身份验证提示,我希望看到应用程序的登录页面。
但是,对于 UAT 配置文件,我希望在任何用户查看任何页面之前看到一个额外的登录页面,以及用于管理功能的登录页面(如果这些受保护页面)被访问。
这个想法是在 UAT 中显示应用程序,就像它在 生产 中操作一样,但不允许任何用户在没有先通过单独登录进行身份验证的情况下查看任何页面表格。
我愿意研究任何个想法,但我的理想情况是允许使用不同的 Spring Security 配置集。
我尝试过/考虑过的事情
动态过滤器 通过注册一个动态过滤器来实现这个想法,我很幸运地实现了这个想法,该过滤器捕获了任何请求并转发到一个 servlet,其唯一目的是处理显示不同的登录页面和处理外部身份验证(所有打包在构建时包含的 jar 中)对于 UAT),但那不是 Spring 应用程序,我相信调度 servlet 会否定这种方法。
框架(应用程序接收) 我考虑过在具有自己的安全性的外部“UAT Viewer”应用程序的框架内显示应用程序的想法,理论上可以分割 Spring Security 问题。但我不知道这是否会为外部和内部应用程序创建不同的 cookie(出于安全原因,我很少考虑框架)。理想情况下,我想拒绝 x-frame-options 标头中的所有框架以帮助防止点击劫持,但如果这种方法可行,我只需将框架策略更改为同源即可。
我想我会先尝试框架方法并反馈。
考虑到这一点,将在框架中呈现的内部应用程序仍然必须可供外部世界访问,以便客户端可以加载它,因此这种方法违背了隔离内部应用程序而对它的代码。
【问题讨论】:
标签: spring spring-mvc spring-security uat