我有一个在Java Spring 3上运行的应用程序。我的应用程序使用RESTful服务和Spring Security来提高安全性。它有一个用户表,并从中检查用户凭据。我为我的应用程序实现了Web服务功能(客户需要的Web服务之一,而不是RESTful服务)。如果可能,我想要相同的身份验证机制,并希望查找该数据库,并只允许一个用户(现在为管理员)与我的Web服务服务器进行通信。
我应该遵循与RESTful身份验证相同的方式,还是在Spring上有Java Web Services的任何身份验证和安全机制(即如何处理注销,如何为客户端 - 服务器Web服务通信启用注销机制)
PS:我使用的是Apache-CXF。
答案 0 :(得分:2)
两种可能的方式:
将BasicAuthenticationFilter or DigestAuthenticationFilter放在CXF Servlet前面。
Use a WS-Security UsernamePasswordToken使用CXF编写一个CallbackHandler,a)创建UsernamePasswordAuthenticationToken,b)调用authenticationManager.authenticate()和c)将身份验证存储在SecurityContextHolder中。
请注意,上述内容并未涵盖注销的概念,因为登录会话通常使用cookie实现,而上述内容是无状态方法。如果您真的需要注销,那么您应该考虑使用OAuth,因为您可以通过使访问令牌无效来实现注销。
答案 1 :(得分:0)
您可以将安全令牌放入要发送到REST的HTTP标头中,REST解析并验证它来自管理位置。