没有表单登录的Spring Security
我已经在我的应用程序Spring控制器中实现了Spring Security Expression:
@Controller@RequestMapping("init")
public class InitController {
@PreAuthorize("hasRole('ROLE_ADMIN')")
@RequestMapping(value = "/", method = RequestMethod.GET)
public @ResponseBody String home(){
return "This is the init page";
}
}
使用此安全配置:
<http auto-config="true" create-session="stateless" use-expressions="true"> <intercept-url pattern="/_ah*" access="permitAll" />
<intercept-url pattern="/init/*" access="hasRole('ROLE_ADMIN')"/>
<intercept-url pattern="/init*" access="hasRole('ROLE_ADMIN')"/>
</http>
当访问该资源时,将显示默认的Spring登录表单(http://localhost:8888/spring_security_login
),但是我不希望这种情况发生,并且我只想将凭据插入到请求标头中,例如“
x-authorization-key”或任何其他内容。适合的情况。
有什么可能的解决方案?
- 仅将x-authorization-key包含在请求中是件好事
- 如果是这样,它如何与Spring安全机制配合,即如何与“ hasRole”表达式配合
- 我的Web服务是无状态的,并且每个请求都必须经过身份验证,这一点很重要
- 最后,如何处理Spring安全性而不必处理Spring登录表单
标头
回答:
你可能必须阅读有关说明什么auto-config
没有,然后将其删除禁用form-login
。如果您专门配置要使用的内容,则配置将更加清晰。
从您的问题尚不清楚要在x-authorization-
key标题中包含什么。如果您仅使用客户端ID和共享密钥进行身份验证,则不妨使用基本身份验证,因为它已被开箱即用地支持,您可以将其添加<http-
basic />到您的配置中。如果您有更多定制的想法,那么您可能必须实现一个定制过滤器,并将其添加到Spring
Security过滤器链中以提取凭证并对其进行处理。
身份验证机制的适合方式还取决于其实际组成。通常,您的用户将具有分配的角色,这些角色通常在某种数据库中进行身份验证时加载。该hasRole
表达式仅检查当前用户是否具有指定角色。通常,您只需要创建一个UserDetailsService
即可以易于插入框架的标准格式加载用户信息。这在其他地方有详细介绍。如果您确实需要更多定制的内容,则有关GAE集成的博客文章包括有关如何与更复杂的系统集成的详细信息。
如果使用,Spring Security将不会创建或使用会话create-session='stateless'
。
PS您实际上并不需要在URL级别和处理相同URL的控制器上都包含相同的安全属性。
以上是 没有表单登录的Spring Security 的全部内容, 来源链接: utcz.com/qa/423428.html