IdP로 ADFS 서버가 있습니다. 별도의 SP 응용 프로그램이 있습니다. 이들은 신뢰의 원으로 정의됩니다. SSO over SAML 프로토콜이 제대로 작동합니다. SP 초기화 된 로그 아웃 요청을 시도하면 ADFS 쪽에서 오류가 발생합니다.ADFS 서버에서 SAML LogOutRequest 처리가 실패했습니다.
MSIS7000 : 로그인 요청이 웹 브라우저 클라이언트 또는 SAML 2.0 프로토콜 WebSSO 프로필의 WS-Federation 언어를 준수하지 않습니다.
편집 ADFS 이벤트 추적에서 더 상세 메세지 :
MSIS7015
: 예상되는 프로토콜 메시지 또는 잘못된 프로토콜 매개 변수를 포함하지 않는이 요청은 HTTP의 SAML 프로토콜 바인딩에 따라 발견되었다.나는 로그 아웃 SAML 메시지를 검토하고 올바르게 보인다. ForgeRocks IdP (예 : Sun OpenSSO)에서 동일한 SP가 올바르게 로그 아웃했다는 것을 언급하십시오.
SAML loout 요청 메시지 :
<samlp:LogoutRequest xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
ID="b00b3f55-f3e3-4935-9e91-da6bf8b62efd"
Version="2.0"
IssueInstant="2013-08-27T09:45:08Z"
Destination="https://00.00.00.00/adfs/ls/"
Consent="urn:oasis:names:tc:SAML:2.0:consent:unspecified"
NotOnOrAfter="2013-08-27T09:50:08Z"
>
<saml:Issuer xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">SPEntityId/</saml:Issuer>
<saml:NameID xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" Format="urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified">[email protected]</saml:NameID>
<samlp:SessionIndex>_ea853497-c58a-408a-bc23-c849752d9741</samlp:SessionIndex>
EDIT 란 나에게 로그 아웃 요청 메시지의 서명을 제안
는 필수입니다. 그는 옳았다. OASIS 사양 (http://docs.oasis-open.org/security/saml/v2.0/saml-profiles-2.0-os.pdf) 섹션 4.4.3.1. 그것이 설명됩니다. 그에 따르면 서명 된 메시지를 보내고 있지만 동일한 문제가 있습니다. 내가 잘못
<samlp:LogoutRequest xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
ID="aed640c0-9455-49ea-9450-4ad7c08d98e7"
Version="2.0"
IssueInstant="2013-08-29T15:22:45Z"
Destination="https://server/adfs/ls/"
Consent="urn:oasis:names:tc:SAML:2.0:consent:unspecified"
NotOnOrAfter="2013-08-29T03:27:45Z"
>
<saml:NameID xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"
Format="urn:oasis:names:tc:SAML:2.0:nameid-format:transient">user</saml:NameID>
<samlp:SessionIndex>_677952a2-7fb3-4e7a-b439-326366e677db</samlp:SessionIndex>
<saml:Issuer xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">SPIssuer</saml:Issuer>
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
<Reference URI="#aed640c0-9455-49ea-9450-4ad7c08d98e7">
<Transforms>
<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
<DigestValue>53jjPvQ2Ty1Z+VikwrUwW4Erj3k=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>signed value</SignatureValue>
<KeyInfo>
<X509Data>
<X509Certificate>certificate</X509Certificate>
</X509Data>
</KeyInfo>
</Signature>
를하고있는 중이 야 무엇 :
는 메시지를 서명? ADFS에서 다른 끝점을 지정해야합니까? 내가 얻은대로 사인 요청 (내 측면에서 완벽하게 작동하고 있음)과 동일하게 사용해야합니다.
감사합니다, Rastko
AuthRequest가 서명하지 않고 ADFS2.0으로 나를 위해 일했습니다. 하지만 LogoutRequest가 작동하지 않습니다. 왜이 이상한가? 반드시 LogoutRequest-에 서명해야합니까? – mavis