【问题标题】:How to authenticate by user name and password in an Axis2 WebService?如何在 Axis2 WebService 中通过用户名和密码进行身份验证?
【发布时间】:2011-07-13 19:26:36
【问题描述】:

我已经通过 Axis2 在 Java 中构建了一个 Web 服务并将其上传到服务器上。一切正常,工作正常。但我没有考虑任何身份验证方法。如何为我的方法设置用户名和密码?

【问题讨论】:

    标签: java web-services authentication passwords axis2


    【解决方案1】:

    您可以创建一个接受用户名和密码的 Web 服务方法。
    如果用户名和密码正确,则创建会话令牌(最好使用凭据创建)并将其发送回 Web 服务客户端。
    每次 Web 服务调用的客户端都必须连同请求参数一起发送令牌。
    由于请求具有有效令牌,因此客户端被视为已通过身份验证,您继续进行 Web 服务调用。

    【讨论】:

    • 我一直在考虑 Axis2 中的内置解决方案,但由于我的 web 服务非常简单,而且它不涉及很多用户,所以我按照你说的做了。我刚刚在我的方法中添加了用户名和密码参数。
    • 至少传输HTTPS吗?如果没有,那么任何嗅探器都可以看到用户和密码。
    【解决方案2】:

    如果您使用的是 servlet(而不是定制的独立服务器应用程序),您可以只使用 servlet 过滤器进行身份验证。

    根据您使用的 Web 框架,您可以为此使用标准安全性。就像保护页面一样。

    或者您可以使用 http BASIC 或 DIGEST 身份验证来保护资源。

    对于容器而言,Web 服务仅是网页,因此它们可以以所有标准方式受到保护。

    【讨论】:

    • Axis2 基于基本类创建 WebService,而不是继承的 Servlet。因此我们不能使用 Servlet 特性来访问 HTTP。
    【解决方案3】:

    Web 服务身份验证的标准是WS-Security。 Axis2 实现称为Rampart

    【讨论】:

      【解决方案4】:

      您可以成功使用现有的 Axis2 模块之一:Rampart。

      查看网站 (http://axis.apache.org/axis2/java/rampart/) 了解设置/配置说明以及客户端和服务器示例。

      通过 Rampart,我设法通过 WCF 服务器和 Java 客户端使用 UsernameAndPassword 身份验证。

      【讨论】:

        猜你喜欢
        • 2018-12-19
        • 2013-10-15
        • 1970-01-01
        • 2012-11-15
        • 2020-12-23
        • 1970-01-01
        • 2013-09-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多