SOAP 문서에 시도하고 서명하는 데 xmlseclibs을 사용하고 있지만 서명 또는 유효성 검사 여부에 따라 같은 방식으로 표준화하지는 않습니다.올바른 XML 전용 정규화는 무엇입니까?
예를 들어 설명해 드리겠습니다. 이것은 내가 서명하는 것을 시도하고있는 XML입니다 :
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header/>
<soapenv:Body>
<samlp:Response xmlns:samlp="urn:oasis:names:tc:SAML:1.0:protocol" xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion" MajorVersion="1" MinorVersion="1" IssueInstant="2010-02-04T15:27:43Z" ResponseID="pfxe85313e6-e688-299a-df06-30f55e24f65a">
<samlp:Status>
<samlp:StatusCode Value="samlp:Requester"/>
</samlp:Status>
</samlp:Response>
</soapenv:Body>
</soapenv:Envelope>
내가 PHP에서 일하는 일부 코드는 공개 키와 개인 키 인증서의 조합을 사용하여 서명을 얻고, 그것을 작동하는 것 같았다. 그것은 모든 적절한 것들을 가진 <ds:Signature>
요소를 추가했으며, 멋지게 보였다. 그런 다음 xmlseclibs (및 공개 키 인증서)를 사용하여 다시 서명 한 후 즉시 유효성 검사를 시도하여 테스트했지만 유효성 검사에 실패했습니다. 그래서 똑같은 코드 라이브러리가 서명과 검증을하고 있지만, 두 프로세스는 어떤 이유로 동의하지 않습니다.
xmlseclibs에 디버깅 코드를 추가하여 수행중인 작업을 확인했습니다. 서명 키가 표시되는 이유와 유효성 검사 키가 다른 이유는 두 가지에서 다르게 표준화되기 때문입니다. 상황. 나는 <samlp:Response>
요소에 서명을 말할 때, 이것은 정규 형식은 (가독성을 위해 여기에 내가 추가 한 줄 바꿈) 서명 : 그것은 서명의 유효성을 검사 간다 그러나
<samlp:Response xmlns:samlp="urn:oasis:names:tc:SAML:1.0:protocol" IssueInstant="2010-02-04T15:27:43Z" MajorVersion="1" MinorVersion="1" ResponseID="pfxe85313e6-e688-299a-df06-30f55e24f65a" xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion">
<samlp:Status>
<samlp:StatusCode Value="samlp:Requester">
</samlp:StatusCode>
</samlp:Status>
</samlp:Response>
, 이것은 정규형 그 것이다 (여기서 다시, 내가 추가 한 줄 바꿈)에 대한 유효성을 검사하는 계산 : 당신이 볼 수있는 바와 같이, 제 1하지 않는 동안
<samlp:Response xmlns:samlp="urn:oasis:names:tc:SAML:1.0:protocol" IssueInstant="2010-02-04T15:27:43Z" MajorVersion="1" MinorVersion="1" ResponseID="pfxe85313e6-e688-299a-df06-30f55e24f65a">
<samlp:Status>
<samlp:StatusCode Value="samlp:Requester">
</samlp:StatusCode>
</samlp:Status>
</samlp:Response>
그래서,이 버전은 <samlp:Response>
요소에서 xmlns:saml
속성을 생략합니다. (이것은 두 가지 모두에 포함되어있는 xmlns:samlp
속성과는 다릅니다.) 이것은 xmlseclibs의 버그와 매우 흡사하게 보입니다. 그렇지만 정식 양식이 올바른지 알고 있다면 해결할 수 있습니다. 하나. 독점적 인 정규화로 그 속성을 생략해야합니까? 아니면 포함시켜야합니까? 어느 것이 올바른 표준 형식입니까?
이것은 버그처럼 보입니다. xmlseclibs의 문제 추적기에 게시해야합니다. –