SAML LogOutRequest traitement a échoué sur le serveur ADFS
J'ai serveur ADFS comme un Pdi. Je n'ai séparé SP application. Celles-ci sont définies dans le cercle de confiance. L'authentification unique sur le protocole SAML fonctionne bien. Lorsque j'essaie SP initated journal demande je suis d'erreur sur ADFS côté :
MSIS7000: La requête de connexion n'est pas conforme à la WS-Federation de la langue pour les clients de navigateur web ou le protocole SAML 2.0 WebSSO profil.
MODIFIER Plus en détail message de ADFS de suivi d'Événement :
MSIS7015: Cette demande ne contient pas les attendus message de protocole ou incorrect des paramètres de protocole ont été trouvés, selon le HTTP, le protocole SAML liaisons.
J'ai passé en revue mu déconnecter SAML message et semble correct. Juste pour mentionner que même le PS est loging correctement avec ForgeRocks IdP (ex Soleil OpenSSO).
Saml loout message de demande :
<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>
MODIFIER
Lan m'a suggéré que la signature de la déconnexion des messages de demande est obligatoire. Il a droit. Dans les OASIS de spécification (http://docs.oasis-open.org/security/saml/v2.0/saml-profiles-2.0-os.pdf) section 4.4.3.1. il est décrit. Selon avec qui je suis maintenant l'envoi de messages signés, mais je vais avoir le même problème.
Message signé :
<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>
Ce que je fais de mal ? Doit être spécifié quelque autre extrémité sur ADFS ? Comme je l'ai doit être utilisée même que pour signer les demandes (qui fonctionnent parfaitement sur mon côté).
Grâce,
Rastko
Vous devez vous connecter pour publier un commentaire.
Finlay je peux faire RES 🙂
Auparavant, j'ai travaillé avec de ForgeRock de l'IDP et cela a fonctionné parfaitement, mais avec ADFS n'a pas. Il est évident que Microsoft a limité les règles relatives à SAML mise en forme du message. Les Conclusions que j'ai trouvé :
LogoutRequest message DOIT être signé (SAML 2.0 Profils doc, Secte 4.4.3.1). Merci Ian pour cela.
Ordre des éléments et attributs XML est important. Sur le bas de ce message est de la version finale de mon journal de demande.
NameId doit être dans le même format que l'on a reçu de AuthenticationResponse. Il devrait contient les éléments prévus par ADFS. Ces liens, qui m'a aidé : Nom de l'Identifiant (Nom d'ID) de la réclamation dans le SAML sujet et SAML LogoutRequest
LogoutRequest signature me doit être transformé avec XmlDsigExcC14NTransform, qui devrait être ajouté après XmlDsigEnvelopedSignatureTransform
Canonisation méthode pour la signature doit être http://www.w3.org/2001/10/xml-exc-c14n#
Émetteur, NameID et SessionIndex sont obligatoires éléments XML
Les espaces de noms sont obligatoires : xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocole" et xmlns:saml="urn:oasis:names:tc:SAML:2.0:l'assertion"
Final LogoutRequest message de travail :
IIRC SAML 2.0 SP-Initié RES nécessite l'utilisation de Signatures Numériques sur le LogoutRequest? Cela garantit que personne n'usurpe la LogoutRequest et la session d'un utilisateur de toutes leurs sessions existantes.
En supposant que vous utilisez le POSTE de liaison et de ne pas Rediriger puisque je ne peux pas voir la Signature dans le fichier XML. Avec Rediriger la Signature de l'info est transmise en tant que paramètre de requête.