【发布时间】:2014-04-06 05:04:04
【问题描述】:
假设我的应用处理两个特定的 url 模式
- /foo/* -> 只有 FooUser 可以访问,在 FooUserRealm 中进行身份验证
- /bar/* -> 只有 BarUser 可以访问,在 BarUserRealm 中进行身份验证
我可以通过为这些 url 模式分配两个单独的身份验证过滤器并创建两个不同的身份验证令牌实例来处理正确领域的选择,然后领域只需声明它们支持的令牌类型。
但是,我无法实现的是,经过身份验证的 FooUser 将可以访问 /bar/* url,反之亦然。我真正想要实现的是每个领域有两个单独的 cookie,当 FooUser 尝试访问 /bar/* url时,她被重定向到 BarUser 登录页面。只有在用户同时通过 FooUser 和 BarUser 领域进行身份验证后(凭据不必相同,因此身份验证策略在这里没有帮助,如果用户想要访问 /foo/* 和 /bar/*,则必须看到两个单独的登录页面)
我只能考虑创建两个单独的安全管理器,为这些领域和 url 模式创建不同的 cookie。
有没有更好的方法?
【问题讨论】:
-
听起来像是两个应用程序?我不会创建两个 SecurityManagers - 整个世界都很痛苦,因为它们基于 ThreadLocals。
-
也许可以扩展您关于领域是什么的问题,我也许可以提供解决方案。
标签: java security jakarta-ee shiro