0
我正嘗試使用WS-Security在PL/SQL中進行身份驗證的SOAP Web服務,但是由於我沒有找到任何好的有關它的信息。所以我想請我怎麼能消耗PL/SQL(Oracle)的在PL/SQL中使用ws-security使用soap web服務
最好的問候, 亞歷山大
我正嘗試使用WS-Security在PL/SQL中進行身份驗證的SOAP Web服務,但是由於我沒有找到任何好的有關它的信息。所以我想請我怎麼能消耗PL/SQL(Oracle)的在PL/SQL中使用ws-security使用soap web服務
最好的問候, 亞歷山大
使用ws_security一個SOPA EWB服務我有同樣的問題。然而,這是可能的。正如您可能已經發現的那樣,使用Java甚至SoapUI設置調用非常容易,因爲所有的WS-Security都是內置的或者在庫中可用的。從PL/SQL執行此操作時,必須手動構建WS-Security標題。但是,如果您的端點需要用戶名令牌身份驗證,則這非常簡單。
例
這個例子是我用來建立SOAP信封使Web服務調用的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;