3

Java/Axis クライアント (制御できない) によって消費される usernameToken 認証を使用する WCF4 サービスを開発しました。

入ってくるリクエストの本文がこのようになっていることがわかります...

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
  <soapenv:Header>
    <wss:Security xmlns:wss="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
      <wss:UsernameToken>
        <wss:Username>username</wss:Username>
        <wss:Password>password</wss:Password>
      </wss:UsernameToken>
    </wss:Security>
  </soapenv:Header>
  <soapenv:Body>
    {snipped}
  </soapenv:Body>
</soapenv:Envelope>

返される応答は次のようになります...

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
  <s:Header>
    <o:Security s:mustUnderstand="1" xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
      <u:Timestamp u:Id="_0">
        <u:Created>2012-05-02T01:23:12.711Z</u:Created>
        <u:Expires>2012-05-02T01:28:12.711Z</u:Expires>
      </u:Timestamp>
    </o:Security>
  </s:Header>
  <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    {snipped}
  </s:Body>
</s:Envelope>

問題は、応答の s:mustUnderstand="1" 属性です。これにより、Java/Axis クライアントで「理解すべきチェックに失敗しました」というエラーが発生します。

この s:mustUnderstand 属性を削除するか、少なくとも「1」ではなく「0」に設定するように WCF を構成する方法を知っている人はいますか?

4

1 に答える 1

1

この相互運用の問題を解決するために私たちが思いついた解決策は、カスタム バインディングに変更し、includeTimestamp="false" 属性を指定することでした。これを行うと、タイムスタンプ (Created および Expired) が応答に追加されないため、すべての問題の原因であった mustUnderstand 属性を含むセキュリティ ヘッダー全体が消失しました。

<customBinding>
    <binding name="customBindingConfig">
        <security authenticationMode="UserNameOverTransport" includeTimestamp="false" />
         <textMessageEncoding messageVersion="Soap11" />
         <httpTransport />
   </binding>
</customBinding>

したがって、応答は次のようになります...

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
    <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
        {snipped}
    </s:Body>
</s:Envelope>
于 2012-05-24T00:50:36.953 に答える