2013-01-15 4 views
1

저는 Federated Security, 특히 Siteminder와 통합하려고하는 애플리케이션이 있습니다. 여기에있는 PHP-SAML 툴킷을 사용하고 있습니다. https://github.com/onelogin/php-samlPHP로 SAML을 어떻게 해독 할 수 있습니까?

Siteminder 환경에서 암호화가 켜질 때까지 x509 인증서가 응용 프로그램에 포함되어 있고 모든 것이 잘 작동합니다. 이 메시지가 켜지면 더 이상 로그인 할 수 없습니다. 다음 메시지가 나타납니다. SAML 응답이 잘못되었습니다. 서명 노드를 찾을 수 없습니다.

SAML 어설 션이 Siteminder의 응용 프로그램은 암호화되어 있습니다. 나는 주장 (아래에 포함 된 견본)을 볼 수있다. 불행히도, 나는 그 메시지를 해독하는 방법을 이해할 수 없으므로, 애플리케이션에서 구문 분석하고 사용할 수 있습니다.

<Response xmlns="urn:oasis:names:tc:SAML:2.0:protocol" 
     Destination="{VALUE HERE}" 
     ID="_076e8f69ec4adb3b72f0cc76570527222e37" 
     IssueInstant="2013-01-15T18:18:48Z" 
     Version="2.0" 
     > 
<ns1:Issuer xmlns:ns1="urn:oasis:names:tc:SAML:2.0:assertion" 
      Format="urn:oasis:names:tc:SAML:2.0:nameid-format:entity" 
      >{VALUE HERE}</ns1:Issuer> 
<Status> 
    <StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success" /> 
</Status> 
<ns2:EncryptedAssertion xmlns:ns2="urn:oasis:names:tc:SAML:2.0:assertion"> 
    <xenc:EncryptedData xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" 
         Type="http://www.w3.org/2001/04/xmlenc#Element" 
         > 
     <xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes256-cbc" /> 
     <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> 
      <xenc:EncryptedKey xmlns:xenc="http://www.w3.org/2001/04/xmlenc#"> 
       <xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5" /> 
       <xenc:CipherData> 
        <xenc:CipherValue>{VALUE HERE}</xenc:CipherValue> 
       </xenc:CipherData> 
      </xenc:EncryptedKey> 
      <ds:X509Data> 
       <ds:X509Certificate> 
{CERTIFICATE HERE} 
</ds:X509Certificate> 
      </ds:X509Data> 
     </ds:KeyInfo> 
     <xenc:CipherData> 
      <xenc:CipherValue>{VALUE HERE}</xenc:CipherValue> 
     </xenc:CipherData> 
    </xenc:EncryptedData> 
</ns2:EncryptedAssertion> 
</Response> 

누구든지 도움을받을 수 있다면 놀라운 것입니다.

+0

안녕. xml 해독 할 수 있었습니까? – gkalikapersaud

+0

@ GK123512648 타사 라이브러리가 옵션입니까? 서버에 확장 기능을 설치할 수있는 경우 PHP 용 SecureBlackbox 라이브러리가 해당 작업을 수행합니다. –

답변

0

이것이 Onelogin PHP 코드의 문제라고 생각됩니다. 유사한 문제가 logged이고 Ruby 구현과 동일한 문제가 있습니다.

업데이트 :

이 극복하려는 경우, 당신은 즉, 당신이 IP로 전송되는 sp.xml 메타 데이터에있어 하나의 인증서로이 암호를 해독 할 필요가있다.

Onlelogin을 사용하지 않았지만 SimpleSAMLphp 코드에 예제가 있습니다.

+0

이것은 주석이어야합니다. –

+0

댓글이 너무 길어서 너무 자세합니다. 또한 솔루션이 포함 된 것처럼 보입니다. :) – duskwuff

+0

고맙습니다. 인증서로 암호 해독하는 걸 언급합니다 ... 제가 어떻게 그 일을 할 것인지 생각해보십시오. 또는 SimpleSAMLphp 코드를 어디에서 볼 것인가? 정말 고마워! – Topher

1

SAML 메시지의 암호를 해독하려면 simplesamlphp 라이브러리의 일부 코드를 추출 할 수 있습니다.

함수의 헤더 :

함수 _decryptElement (DOMElement $의 EncryptedData, XMLSecurityKey $ inputKey

함수 LIB의 _decryptElement은// Utils.php SAML2는 메세지 엘리먼트를 복호화 배열 & $ 블랙리스트)

합니다 ($ 블랙리스트에 대한 하늘의 배열을 사용하여)

체크인시 :

formatXMLStringformatDOMElement

http://code.google.com/p/simplesamlphp/source/browse/trunk/lib/SimpleSAML/Utilities.php#1577 :

http://code.google.com/p/simplesamlphp/source/browse/trunk/lib/SAML2/Utils.php#356

가 DOMElement를 구축하기 위해 당신이 lib 디렉토리/SimpleSAML/Utilities.php이 기능을 사용할 수 있습니다

관련 문제