我们有一个spring mvc rest api和一个登录控制器。
这是通过多个客户端消费的 - 移动(cordova /角度)和webapp(角度)。
我们为某些类型的用户分配了角色(春季安全性),即 RoleA 可以管理 RoleB 中的用户。
目前,在我们的移动应用中,我们只支持 RoleB 中的人员。
是否有最佳做法限制 RoleA 中的用户登录移动应用,同时仍保持其在网络应用上的当前访问级别?
我考虑过的事情:
- 以某种方式检测登录请求的来源,可能使用新的security.xml拦截和限制。
- 有一个单独的登录方法。
- 做一些客户方。
TIA。
答案 0 :(得分:1)
当我想为JavaScript单页面应用程序和移动应用程序使用单独的安全设置来进行身份验证机制时,我遇到了类似的问题(基于csrf的cookie与没有会话的纯基本身份验证)。
我找到了一些技术来通过引导由某些url模式选择的不同安全配置来拆分安全配置。我只能通过对@RequestMapping
别名来重用我的控制器。可能这个设置可以帮助你:
Multiple Spring Security configurations for REST via BasicAuth vs. Session with CSRF
对我而言,设置最终并不起作用,因为它不允许真正独立的孤岛(在一个链中获得的会话也可以在另一个链上使用)。但是,如果您只想根据网址限制访问权限,这可能对您有用。有关更多详细信息,请参阅spring security docs:
请直接在antMatcher
对象上注明http
以确定链 - 这不是.authorizeRequests()
上定义的角色的常规设置。