Заголовки безопасности WSSE с дайджестом (SOAP) в Android с использованием ksoap2

В программировании для Android я пытаюсь создать следующий заголовок мыла (безопасность WSSE с заголовком дайджеста пароля), используя ksoap2.

  <soap:Header>
    <wsse:Security soap:mustUnderstand="1">  
      <wsse:UsernameToken>
         <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">DbIekaN2kkkEHsC2dHVrWYj0Lj0=</wsse:Password>
         <wsse:Nonce>KCkqLywtiK8wMTIzND9N2e==</wsse:Nonce>
         <wsu:Created>2013-06-18T21:18:11Z</wsu:Created>
     </wsse:UsernameToken>
   </wsse:Security>
  </soap:Header>

Мой код для создания вышеуказанного заголовка:

    Element headers[] = new Element[1];
    headers[0]= new Element().createElement("http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd", "Security");
    headers[0].setAttribute(null, "soap:mustUnderstand", "1");

    Element to = new Element().createElement("http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd", "UsernameToken");


    Element action1 = new Element().createElement(null, "n0:Username");
    action1.addChild(Node.TEXT, "user");
    to.addChild(Node.ELEMENT,action1);

    Element action2 = new Element().createElement(null, "n0:Password");
    action2.setAttribute(null, "Type", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest");
    action2.addChild(Node.TEXT, "DbIekaN2kkkEHsC2dHVrWYj0Lj0=");
    to.addChild(Node.ELEMENT,action2);


    Element action3 = new Element().createElement(null, "n0:Nonce");
    action3.addChild(Node.TEXT, "KCkqLywtiK8wMTIzND9N2e==");
    to.addChild(Node.ELEMENT,action3);

    Element action4 = new Element().createElement(null, "wsu:Created");
    action4.addChild(Node.TEXT, "2013-06-18T13:18:11Z");
    to.addChild(Node.ELEMENT,action4);


    headers[0].addChild(Node.ELEMENT, to);

    soapEnvelope.headerOut = headers[0];
    // soapEnvelop is created using the following code
    // SoapSerializationEnvelope soapEnvelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);

Однако приведенный выше код дает HTTP 400 (Bad Request).

Кто-нибудь может мне помочь?


person Community    schedule 19.06.2013    source источник


Ответы (1)


Вы пытались посмотреть на запрос дампа, сделав httpTransport.debug = true

Я думаю, что wsu не имеет отношения к правильному пространству имен. Вместо этого Element action4 = new Element().createElement(null, "wsu:Created");

попробуйте Element action4 = new Element().createElement("http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd", "Создано");

person garnet    schedule 17.07.2013
comment
Я пробовал так, как вы упомянули (прежде чем взглянуть на этот ответ), и это сработало как шарм. Хотя спасибо за ответ :) - person ; 27.11.2013