2016-07-26 1 views
0

저는 SP로 일하고 있으며 최근에는 IDP와 통합해야합니다. IDP의 문서에서, 그것은 나에게 http 포스트 응답을 보낼 것이다. 응답에는 ds : SignatureValue 및 ds : X509Certificate가 있습니다. 이 SAML: Why is the certificate within the Signature?과 같은 스레드가 있습니다. 스레드는 메시지가 누구인지 확인하는 방법 만 응답합니다.SAML 신뢰 확인

1) ds : SignatureValue 및 ds : X509Certificate의 의미는 무엇입니까?

2) 내 IDP의 응답을 보장하는 방법은 무엇입니까? 내 말은 해커가 내 http 게시물 주소를 알고 있다면 내 응용 프로그램에 비슷한 http 게시물 요청을 쉽게 보낼 수 있다는 뜻입니다. http 요청 헤더에 리퍼러가 있다는 것을 발견했습니다. IDP의 요청을 확인하는 것이 안전합니까?

3) IDP가 SP 공용 서명 인증서를 보내달라고 요청한 경우이 형식은 DER로 인코딩 된 이진 X.509 (* .CER)로 인코딩되어야합니다. 공개 공개 서명 인증을 만드는 방법은 무엇입니까?

<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> 
<ds:SignedInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> 
    <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" xmlns:ds="http://www.w3.org/2000/09/xmldsig#"/> 
    <ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" xmlns:ds="http://www.w3.org/2000/09/xmldsig#"/> 
    <ds:Reference URI="#_2152811999472b94a0e9644dbc932cc3" xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> 
    <ds:Transforms xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> 
    <ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" xmlns:ds="http://www.w3.org/2000/09/xmldsig#"/> 
    <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> 
    <ec:InclusiveNamespaces PrefixList="ds saml samlp xs" xmlns:ec="http://www.w3.org/2001/10/xml-exc-c14n#"/> 
    </ds:Transform> 
    </ds:Transforms> 
    <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" xmlns:ds="http://www.w3.org/2000/09/xmldsig#"/> 
    <ds:DigestValue xmlns:ds="http://www.w3.org/2000/09/xmldsig#">bW1Os7+WykqRt5h0mdv9o3ZF0JI=</ds:DigestValue> 
    </ds:Reference> 
</ds:SignedInfo> 
<ds:SignatureValue xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> 
SignatureValue </ds:SignatureValue> 
<ds:KeyInfo> 
    <ds:X509Data> 
    <ds:X509Certificate>X509 certification</ds:X509Certificate> 
    </ds:X509Data> 
</ds:KeyInfo> 
</ds:Signature> 

답변

1
  1. 모두 XML 디지털 서명의 요소입니다. ds:SignatureValue 요소에는 Base64로 인코딩 된 SAML 응답의 실제 서명이 들어 있습니다. ds:X509Certificate 요소는 Base64로 인코딩 된 서명 인증서 (공개 키 및 기타 IdP 정보 포함)입니다. 자세한 내용은 XML Digital Signature specification을 확인하십시오.
  2. 메타 데이터에서 IdP 인증서가있을 수 있습니다. IdP 인증서를 사용하여 수신 SAML 응답에 서명하고 IdP에서 을 ds:SignatureValue과 비교하십시오. 이 두 서명 값이 일치하면 IdP가 실제로 보낸 SAML 응답을 확인할 수 있습니다. OpenSAML 구현을 사용하여 SP가 IdP에서 보낸 응답을 확인하는 방법은 code을 확인하십시오. (참고 : 이것은 OpenSAML을 사용하여 SAML2.0 구현을 구현 한 나의 레포입니다.)
  3. 인증서를 생성하려면 다양한 도구와 라이브러리가 필요합니다. Java의 도구 중 하나가 Keytool입니다. Google에 체크인하면 이에 대한 자습서가 많이 있습니다.
+0

@ Study Hard : 답변을 주셔서 감사합니다. 이것이 올바른 것으로 보이는 경우 사람들이 질문과 답변을 읽기 쉽도록 최선의 답변으로 받아들입니다. – Zeigeist

+0

IdP 인증서를 사용하여 들어오는 SAML 응답에 서명하고받은 ds와 비교하는 방법을 궁금합니다. IdP의 SignatureValue. 나는 OpenSAML을 사용하고 있으며 응답으로부터 서명을 얻을 수있다. –

+0

포인트 2에 코드 참조를 추가했습니다. 확인하십시오. – Zeigeist