4

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

我是否应该像我的 RESTful 身份验证一样遵循相同的方式,或者 Spring 是否有任何 Java Web 服务的身份验证和安全机制(即如何处理注销,如何为客户端-服务器 Web 服务通信启用注销机制)

PS:我使用 Apache-CXF。

4

2 回答 2

2

两种可能的方式:

  1. BasicAuthenticationFilter 或 DigestAuthenticationFilter放在 CXF Servlet 前面。

  2. 将 WS-Security UsernamePasswordToken与 CXF 一起使用并编写一个 CallbackHandler,它 a) 创建一个 UsernamePasswordAuthenticationToken,b) 调用 authenticationManager.authenticate(),c) 将身份验证存储在 SecurityContextHolder 中。

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

于 2012-06-04T22:11:31.323 回答
0

您可以在发送到 REST 的 HTTP 标头中放置一个安全令牌,REST 会对其进行解码并验证它是否来自管理位置。

于 2012-06-04T18:26:18.147 回答