【问题标题】:Implementing Security for Java Web Services with Spring and Apache CXF使用 Spring 和 Apache CXF 实现 Java Web 服务的安全性
【发布时间】:2012-06-08 18:02:10
【问题描述】:

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

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

PS:我使用的是 Apache-CXF。

【问题讨论】:

    标签: java authentication spring-security cxf


    【解决方案1】:

    两种可能的方式:

    1. 在你的 CXF Servlet 前面放一个BasicAuthenticationFilter or DigestAuthenticationFilter

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2016-02-02
        • 1970-01-01
        • 1970-01-01
        • 2014-08-08
        • 1970-01-01
        • 2010-09-20
        • 1970-01-01
        • 1970-01-01
        • 2013-01-13
        相关资源
        最近更新 更多