代码之家  ›  专栏  ›  技术社区  ›  bryantsai

为什么基于SOAP的Web服务不安全?

  •  45
  • bryantsai  · 技术社区  · 15 年前

    我知道RESTful是一种体系结构风格,但究竟是什么使得基于SOAP的Web服务不算RESTful呢?

    我不清楚下面哪一点 Wikipedia )不符合肥皂要求。

    1. 客户端服务器
    2. 无国籍的
    3. 可缓存的
    4. 分层系统
    5. 按需代码(可选)
    6. 均匀界面
      • 资源的确定
      • 通过这些表示来操纵资源
      • 自我描述信息
      • 超媒体

    编辑 :我刚遇到 this 总结得很好。

    其余的不是rpc,rpc说,“定义 一些方法可以做些什么” 而其他人则说,“定义一些 他们将拥有这些资源 方法“。 这是一个微妙但至关重要的区别, 当给定一个URI时,任何人都知道他们可以 通过预定义的 方法集和接收标准 HTTP响应作为回报。因此给出 http://www.peej.co.uk/ 我知道我能 发布一个GeT并接收 有意义的事。那时我可以 试着穿上它来改变它,然后 接收有意义的HTTP错误代码 因为我无权干涉 有了它。

    7 回复  |  直到 9 年前
        1
  •  46
  •   Trevor Johns    15 年前

    SOAP遵循RPC模式。SOAP API描述了一系列方法,以及它们的参数和返回值,您可以从代码中调用这些方法。有一个封送步骤可以将其转换为网络表示。

    休息永远不是RPC。RESTAPI描述了一系列资源,以及一组可以对其执行操作的动词(通常是http的get、post、put、delete)。

    直接回答您的问题:SOAP主要违反了第6点(它没有跨API提供统一的动词集)。它还违反了第2点(服务器可以为每个客户机维护状态),结果也是第3点(状态阻止缓存)。

        2
  •  55
  •   Christian Hayter    12 年前

    REST和SOAP不是等价的概念。

    休息时间:

    • 取决于一个传输协议(HTTP)。
    • 充分利用该协议的特定功能(动词get、post、put、delete、caching、headers和预定义的错误代码)。
    • 对来回传递的消息的格式一无所知。但是,由于HTTP动词和URL已经定义了要采取的操作,因此消息正文必须只包含数据。
    • 消息安全性由传输协议(HTTPS)提供,并且仅限于点对点。如果你想保证消息的端到端安全,你必须自己去做。
    • 最初用于对对象进行简单的CRUD操作。

    肥皂:

    • 独立于传输协议(可以是http、ftp、tcp、udp、命名管道、共享内存甚至电子邮件)。
    • 只要求传输协议能够发送和接收文本(例如,在HTTP上,只使用post动词)。
    • 严格定义来回传递的消息的格式。SOAP消息包含数据、要对其执行的操作、头和失败时的错误详细信息。
    • 消息安全性由WS-*标准提供,并且是端到端的。
    • 最初用于任意RPC调用。

    以上列表中的第2项和第3项是不兼容的要点。

        3
  •  5
  •   Piotr Zolnierek    15 年前

    REST的目标之一是可计算性,因为资源需要由URI(查询字符串)标识。在SOAP中,请求被发布,因此对于不同的请求,您拥有相同的URI,因此资源不能由UR唯一标识。

        4
  •  4
  •   Pierreten    15 年前

    REST只符合HTTP协议。

        5
  •  2
  •   Android Genius    10 年前

    休息: REST是使用HTTP协议构建Web服务的体系结构样式,其中Web服务被视为资源,并使用一些基本的HTTP方法,如GET、POST、DELETE。 确定对资源的标准操作。 RESTfulWebAPI(也称为RESTfulWebService)是使用HTTP和REST原则实现的Web API。

    肥皂: SOAP最初定义为简单对象访问协议,是一种以XML形式交换结构化信息的协议规范。

        6
  •  2
  •   somya4 jain4    9 年前

    SOAP协议: SOAP是一个协议,这意味着它有一个定义的结构。

    1. post:SOAP请求总是需要一个HTTP主体,因此HTTP方法是post。关于HTTP方法的更多信息(这些方法在REST中非常相关),但是现在让我们假设在SOAP的情况下始终是POST。
    2. SOAP操作:空表示HTTP请求URI中的意图。
    3. 内容类型:SOAP使用XML作为通信语言,因此这始终是文本/XML
    4. 对于XML命名空间(xmlns),需要指示这是SOAP请求。
    5. 是描述请求和响应的根SOAP元素。

    RESTfulAPI设计涉及从资源方面破坏系统,并通过Web服务的基本URI上定义的端点(也称为操作)提供对这些资源的访问。访问是使用标准HTTP方法完成的,并由身份验证机制控制。资源的配置是通过请求和响应来提供和获取的,HTTP状态代码用于通信状态。 1。资源是指存在于系统中的被恢复的实体。例如,在博客网站的情况下,这些可以是博客、文章和评论。 2。终结点或操作提供了一种机制,通过该机制可以访问这些资源。例如,列出特定博客上所有博客文章的端点是get-on/blogs/blogid/posts。 三。基本URI定义Web URI位置,其中资源通过端点可用。举一个真实的例子,对于谷歌博客作者来说,基础用户是 https://www.googleapis.com/blogger/v3 . 4。HTTP方法就是REST的简单性所在。在RESTfulAPI设计中,对资源的操作是通过标准的HTTP方法完成的,主要是GET、POST、PUT和DELETE。其他HTTP方法-选项、头、补丁也在某些情况下使用。

        7
  •  1
  •   themoonraker13    10 年前

    SOAP与REST Web服务

    1)SOAP是一种协议,而REST是一种体系结构风格。

    2)SOAP不能使用REST,因为它是一个协议,而REST可以使用SOAP Web服务,因为它是一个概念,可以使用HTTP、SOAP等任何协议。

    3)SOAP使用服务接口公开业务逻辑,而REST使用URI公开业务逻辑。

    4)SOAP定义了要严格遵守的标准,而REST并没有像SOAP那样定义太多的标准。

    5)SOAP比REST需要更多的带宽和资源,而REST比SOAP需要更少的带宽和资源。

    6)SOAP定义了自己的安全性,而RESTfulWeb服务继承了底层传输的安全措施。

    7)SOAP只允许XML数据格式,而REST允许纯文本、HTML、XML、JSON等不同的数据格式。

    与SOAP Web服务相比,RESTful Web服务更受欢迎。