2013-10-14 4 views
0

Я пытаюсь использовать веб-службу SOAP, которая использует WS-Security для аутентификации в PL/SQL, однако у меня плохое время, так как я не нахожу ничего хорошего информацию об этом. Поэтому я хотел бы просить, как я могу использовать службу Сопа EWB с помощью ws_security в PL/SQL (Oracle)Использовать мыльный веб-сервис с использованием ws-security в PL/SQL

С наилучшими пожеланиями, Alexandre

ответ

2

я имел такую ​​же проблему. Однако это возможно. Как вы, наверное, узнали, очень просто настроить вызов в Java или даже SoapUI, потому что все WS-Security либо встроены, либо доступны в библиотеке. Когда вы делаете это из PL/SQL, вы должны вручную создавать заголовки WS-Security. Однако это очень просто, если ваша конечная точка ожидает аутентификации Token Authentication.

Пример

Этот пример является фрагмент из функции, которую я использовал для создания SOAP Envelope, чтобы сделать вызов веб-службы в конечной точке в WSO2 ESB.

FUNCTION getSoapRequest RETURN CLOB 
IS 
    lUserName VARCHAR2(100) := 'myuser'; 
    lPassword VARCHAR2(100) := 'mypassword'; 
    lSoapRequest CLOB; 
BEGIN 
    --Get your Created and Expiration Timestamps for the Token (In this case it is 3 minutes) 
    SELECT TO_CHAR(SYSDATE + (4/24), 'YYYY-MM-DD')||'T'||TO_CHAR(SYSDATE + (4/24), 'HH24:MI:SS')||'Z' 
      ,TO_CHAR(SYSDATE + (3/1440) + (4/24), 'YYYY-MM-DD')||'T'||TO_CHAR(SYSDATE + (3/1440) + (4/24), 'HH24:MI:SS')||'Z' 
    INTO lCreateTimestampString, 
      ,lExpireTimestampString 
    FROM dual; 

     lSoapRequest :='<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:Cisco_IncidentCreateWS_ext"> 
          <soapenv:Header> 
          <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"> 
           <wsu:Timestamp xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="Timestamp-14"> 
            <wsu:Created>'||lCreateTimestampString||'</wsu:Created> 
            <wsu:Expires>'||lExpireTimestampString||'</wsu:Expires> 
           </wsu:Timestamp> 
           <wsse:UsernameToken xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="UsernameToken-13"> 
           <wsse:Username>'||lUserName||'</wsse:Username> 
           <wsse:Password Type="wsse:PasswordText">'||lPassword||'</wsse:Password> 
           </wsse:UsernameToken> 
           </wsse:Security> 
          </soapenv:Header> 
          <soapenv:Body> 
          … 
          </soapenv:Body> 
         </soapenv:Envelope>'; 

    RETURN lSoapRequest; 
END getSoapRequest; 

 Смежные вопросы

  • Нет связанных вопросов^_^