2016-07-13 2 views
-1

PHP로 비누 헤더에 서명하는 방법을 모색 중입니다.wsf/php를 사용하지 않고 보내는 비누 요청을 서명하는 방법은 무엇입니까?

soap 서비스는 apache rampart에 의해 빌드되며 https://axis.apache.org/axis2/java/rampart/samples.html의 샘플 2와 완전히 동일합니다.

이제 저는 PHP를 사용하여 비누 클라이언트를 개발했습니다. 전체 머리글과 본문에 서명하는 방법을 모르겠습니다.

<?xml version="1.0" encoding="UTF-8" ?> 
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://ws.globesteel.com" xmlns:ns2="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" 
xmlns:ns3="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"> 
    <SOAP-ENV:Header> 
    <ns3:Security SOAP-ENV:mustUnderstand="1"> 
     <ns2:Timestamp> 
     <ns2:Created>2016-07-13T08:16:02Z</ns2:Created> 
     <ns2:Expires>2016-07-20T06:56:02Z</ns2:Expires> 
     </ns2:Timestamp> 
     <ns3:Signature> 
     <ns3:SignedInfo> 
      <Signature> 
      <SignedInfo> 
       <CanonicalizationMethod> 
       <Algorithm>http://www.w3.org/2001/10/xml-exc-c14n#</Algorithm> 
       </CanonicalizationMethod> 
       <SignatureMethod> 
       <Algorithm>http://www.w3.org/2000/09/xmldsig#rsa-sha1</Algorithm> 
       </SignatureMethod> 
       <Reference> 
       <SOAP-ENC:Struct> 
        <Transforms> 
        <SOAP-ENC:Struct> 
         <Algorithm>http://www.w3.org/2001/10/xml-exc-c14n#</Algorithm> 
        </SOAP-ENC:Struct> 
        </Transforms> 
        <DigestMethod> 
        <Algorithm>http://www.w3.org/2000/09/xmldsig#sha1</Algorithm> 
        </DigestMethod> 
        <DigestValue>8f6c3a934fc237673e9f1a12793f5507b8103e4a</DigestValue> 
        <URI>#_body</URI> 
        <Id/> 
       </SOAP-ENC:Struct> 
       <SOAP-ENC:Struct> 
        <Transforms> 
        <SOAP-ENC:Struct> 
         <Algorithm>http://www.w3.org/2001/10/xml-exc-c14n#</Algorithm> 
        </SOAP-ENC:Struct> 
        </Transforms> 
        <DigestMethod> 
        <Algorithm>http://www.w3.org/2000/09/xmldsig#sha1</Algorithm> 
        </DigestMethod> 
        <DigestValue></DigestValue> 
        <URI>#_control</URI> 
        <Id/> 
       </SOAP-ENC:Struct> 
       </Reference> 
      </SignedInfo> 
      <SignatureValue>Yu/DkCbKXAoalySGM2XdieRYhk1rnwhFKNcklXn5l+YgNk3AXEnpr4yDAlReYgU3FGOZh0XGUn8hGWwEs28S+xjrROgb3G/SYKVKbS3EmAU/vLBa+lABn/0NDoGdR/iIv9C7XAr/OBhE++cHA+lktZSS1SUPtfG5BAifN/RtfkE=</SignatureValue> 
      <KeyInfo>aqePjuZzE1lzwMMtquksvNJsbmI=</KeyInfo> 
      </Signature> 
     </ns3:SignedInfo> 
     </ns3:Signature> 
    </ns3:Security> 
    </SOAP-ENV:Header> 
    <SOAP-ENV:Body> 
    <ns1:GetAvailableSecurityQuestions/> 
    </SOAP-ENV:Body> 
</SOAP-ENV:Envelope> 

를 다음과 같이 내 비누 요청을 할 수 있습니다하지만 난 여전히 "메시지가 서명되지 않았습니다"오류 수익을 얻을.

답변

관련 문제