春季安全无形体登录
我在申请春季控制器实现Spring Security的表达:春季安全无形体登录
@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>
当这种资源被访问的默认春天登录表单(http://localhost:8888/spring_security_login
)但是我不希望发生这种情况,我只是想要将凭据插入请求标头,如“x-authorization-key”或任何适合该场景的内容。
这有什么可能的解决方案?
- 它是一个很好的,只是让X-授权密钥是在请求
- 如果是这样,它是如何适应与Spring的安全机制,即如何,它正好与“hasRole “表达
- 这是重要的我的Web服务是无状态的,并且每个请求通过认证
- 最后,如何做处理春季安全,而无需处理与Spring登录表单
头
您应该阅读关于what auto-config
does的描述,然后将其删除以禁用form-login
。如果你专门配置你想使用的配置,你的配置会更清晰。
从您的问题中不清楚您希望包含在x-authorization-key
标头中的内容。如果您只是使用客户端ID和共享密钥进行身份验证,那么您最好使用基本身份验证,因为它已经支持开箱即用,您可以将<http-basic />
添加到您的配置中。如果您有更多定制的内容,那么您可能不得不实施自定义过滤器并提取证书并对其进行处理。
您的身份验证机制如何适用也取决于它实际组成的内容。通常情况下,你的用户会分配在他们进行身份验证时加载的角色,通常来自某种数据库。 hasRole
表达式仅检查当前用户是否具有指定的角色。通常,您只需创建一个UserDetailsService
即可将您的用户信息加载到可轻松插入框架的标准格式中。这在其他地方已有详尽报道。如果你真的需要更多定制的东西this blog article GAE集成包括你如何可能会与更复杂的系统集成的细节。
如果您使用create-session='stateless'
,Spring Security将会not create or use a session。
P.S.您并不需要在URL级别和处理相同URL的控制器上包含相同的安全属性。