使用Spring和Apache CXF实现Java Web服务的安全性

我有一个应用程序在
Java Spring 3上运行.我的应用程序使用RESTful服务和Spring Security来实现安全性.它有一个用户表,并从中检查用户凭据.我为我的应用程序实现了Web服务功能(客户需要的Web服务之一,而不是RESTful服务).如果可能,我想要相同的身份验证机制,并希望查找该数据库,并只允许一个用户(现在为管理员)与我的Web服务服务器进行通信.

我应该遵循与RESTful身份验证相同的方式,还是在Spring上有Java Web Services的任何身份验证和安全机制(即如何处理注销,如何为客户端 – 服务器Web服务通信启用注销机制)

PS:我使用的是Apache-CXF.

最佳答案 两种可能的方式:

>将一个BasicAuthenticationFilter or DigestAuthenticationFilter放在CXF Servlet前面.
> Use a WS-Security UsernamePasswordToken使用CXF并编写一个CallbackHandler,a)创建UsernamePasswordAuthenticationToken,b)调用authenticationManager.authenticate()和c)将身份验证存储在SecurityContextHolder中.

请注意,上述内容并未涵盖注销的概念,因为登录会话通常使用cookie实现,而上述操作是无状态方法.如果您确实需要注销,那么您应该考虑使用OAuth,因为您可以通过使访问令牌无效来实现注销.

点赞