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

使用WS-UsernameToken验证的SOAP请求示例

  •  20
  • che  · 技术社区  · 14 年前

    我尝试使用WS-UsernameToken规范对SOAP请求进行身份验证,但是目标设备总是拒绝访问。我的非工作请求是这样的(我要破解的密码是 system .)

    <?xml version="1.0" encoding="UTF-8"?>
    <Envelope xmlns="http://www.w3.org/2003/05/soap-envelope">
     <Header>
      <Security xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
        <UsernameToken>
          <Username>root</Username>
          <Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest">EVpXS/7yc/vDo+ZyIg+cc0fWdMA=</Password>
          <Nonce>tKUH8ab3Rokm4t6IAlgcdg9yaEw=</Nonce>
          <Created xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">2010-08-10T10:52:42Z</Created>
        </UsernameToken>
      </Security>
     </Header>
      <Body>
        <SomeRequest xmlns="http://example.ns.com/foo/bar" />
      </Body>
    </Envelope>
    

    我要找的是一个类似的请求示例,但是有一个真正有效的身份验证令牌。例如,如果您有使用这些令牌的gSOAP应用程序,并且可以生成一个请求并在这里发布结果,我将非常感激。

    4 回复  |  直到 8 年前
        1
  •  19
  •   ZXX    8 年前

    standard do

    确保在通过XML发送之前检查生成的令牌是否正确,并且不要忘记wsse:Password is Base64(SHA-1(nonce+created+password))和日期时间wsu:Created can 很容易把你搞砸。因此,一旦您修复了前缀和名称空间,并验证您的SHA-1在没有XML的情况下工作正常(想象一下您正在验证请求并执行SHA-1计算的服务器端),您还可以执行创建的真实wihtout,甚至不使用Nonce。Oh和Nonce可以有不同的编码,所以如果您真的想强制另一种编码,您必须进一步研究wsu名称空间。

    <S11:Envelope xmlns:S11="..." xmlns:wsse="..." xmlns:wsu= "...">
      <S11:Header>
      ...
        <wsse:Security>
          <wsse:UsernameToken>
            <wsse:Username>NNK</wsse:Username>
            <wsse:Password Type="...#PasswordDigest">weYI3nXd8LjMNVksCKFV8t3rgHh3Rw==</wsse:Password>
            <wsse:Nonce>WScqanjCEAC4mQoBE07sAQ==</wsse:Nonce>
            <wsu:Created>2003-07-16T01:24:32</wsu:Created>
          </wsse:UsernameToken>
        </wsse:Security>
      ...
      </S11:Header>
    ...
    </S11:Envelope>
    
        2
  •  9
  •   Bill the Lizard    12 年前

    这个 Hash Password Support and Token Assertion Parameters in Metro 1.2 很好地解释了带有摘要密码的UsernameToken的外观:

    摘要密码支持

    这个 WSS 1.1 Username Token Profile 允许摘要密码 被送去 wsse:UsernameToken 的 SOAP消息。另外两个可选 元素包含在 wsse:UsernameToken 在这种情况下: wsse:Nonce wsse:Created nonce是 发件人创建要包含在每个 它发送的用户名令牌。A 计算方式:

    Password_Digest = Base64 ( SHA-1 ( nonce + created + password ) )
    

    这就是UsernameToken 摘要密码如下所示:

    <wsse:UsernameToken wsu:Id="uuid_faf0159a-6b13-4139-a6da-cb7b4100c10c">
       <wsse:Username>Alice</wsse:Username>
       <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest">6S3P2EWNP3lQf+9VC3emNoT57oQ=</wsse:Password>
       <wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">YF6j8V/CAqi+1nRsGLRbuZhi</wsse:Nonce>
       <wsu:Created>2008-04-28T10:02:11Z</wsu:Created>
    </wsse:UsernameToken>
    
        3
  •  4
  •   Ladislav Mrnka    14 年前

    选中此项(密码应为Password):

    <wsse:UsernameToken xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="SecurityToken-6138db82-5a4c-4bf7-915f-af7a10d9ae96">
      <wsse:Username>user</wsse:Username>
      <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest">CBb7a2itQDgxVkqYnFtggUxtuqk=</wsse:Password>
      <wsse:Nonce>5ABcqPZWb6ImI2E6tob8MQ==</wsse:Nonce>
      <wsu:Created>2010-06-08T07:26:50Z</wsu:Created>
    </wsse:UsernameToken>
    
        4
  •  1
  •   James Matt    11 年前

    Secure Metro JAX-WS UsernameToken Web Service with Signature, Encryption and TLS (SSL) )提供更多见解。正如他们提到的“记住,除非密码文本或摘要密码在安全通道上发送,或者令牌被加密,否则密码摘要和明文密码都不能提供真正的额外安全性。”