Protocole SAML de déconnexion unique

Microsoft Entra ID prend en charge le profil de déconnexion unique de navigateur web SAML 2.0. Pour que la déconnexion unique fonctionne correctement, l’élément LogoutURL de l’application doit être explicitement inscrit auprès de Microsoft Entra ID pendant l’inscription de l’application.

Si l’application est ajoutée à la galerie d’Azure App, cette valeur peut être définie par défaut. Dans le cas contraire, la valeur doit être déterminée et définie par la personne qui ajoute l’application à son locataire Microsoft Entra. Microsoft Entra ID utilise LogoutURL pour rediriger les utilisateurs après leur déconnexion. Microsoft Entra ID prend en charge la liaison de redirection (HTTP GET) et pas la liaison HTTP POST.

Le diagramme suivant illustre le workflow du processus de déconnexion unique Microsoft Entra.

Screenshot of the Microsoft Entra Single Sign Out Workflow.

LogoutRequest

Le service cloud envoie un message LogoutRequest à Microsoft Entra ID pour indiquer qu’une session a été arrêtée. L’extrait suivant illustre un exemple d’élément LogoutRequest .

<samlp:LogoutRequest xmlns="urn:oasis:names:tc:SAML:2.0:metadata" ID="idaa6ebe6839094fe4abc4ebd5281ec780" Version="2.0" IssueInstant="2013-03-28T07:10:49.6004822Z" xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol">
  <Issuer xmlns="urn:oasis:names:tc:SAML:2.0:assertion">https://www.workaad.com</Issuer>
  <NameID xmlns="urn:oasis:names:tc:SAML:2.0:assertion"> Uz2Pqz1X7pxe4XLWxV9KJQ+n59d573SepSAkuYKSde8=</NameID>
</samlp:LogoutRequest>

L’élément LogoutRequest envoyé à Microsoft Entra ID requiert les attributs suivants :

  • ID : identifie la demande de déconnexion. La valeur ID ne doit pas commencer par un chiffre. La méthode classique consiste à ajouter id à la représentation sous forme de chaîne d’un GUID.
  • Version : définissez la valeur de cet élément sur 2.0. Cette valeur est requise.
  • IssueInstant : chaîne DateTime associée à une valeur UTC (temps universel coordonné) et au format aller-retour (« o »). Microsoft Entra ID attend une valeur de ce type, mais ne l’applique pas.

Selon la section 3.7 de la spécification principale SAML 2.0, il une session peut comprendre plusieurs participants (autres applications) en plus de votre application. Si l’un des autres participants envoie une LogoutRequest à la plateforme d’identités Microsoft (l’autorité de la session), celle-ci renvoie une LogoutRequest à tous les participants de la session, à l’exception du participant qui a envoyé la LogoutRequest initiale. Si un autre participant initie simultanément la déconnexion, il y aura une course pour voir qui LogoutRequest atteint Plateforme d'identités Microsoft premier. Par conséquent, une application doit toujours être préparée à gérer une LogoutRequest.

Émetteur

L’élément Issuer dans LogoutRequest doit correspondre exactement à l’un des ServicePrincipalNames du service cloud dans Microsoft Entra ID. En règle générale, il est défini sur l’URI ID d’application spécifié au moment de l’inscription de l’application.

NameID

La valeur de l’élément NameID doit correspondre exactement à la valeur NameID de l’utilisateur déconnecté.

Remarque

Pendant la demande de déconnexion SAML, la valeur NameID n’est pas prise en compte par Microsoft Entra ID.
Si une session utilisateur unique est active, Microsoft Entra ID la sélectionne automatiquement et la déconnexion SAML se poursuit.
Si plusieurs sessions utilisateur sont actives, Microsoft Entra ID énumère les sessions actives pour la sélection de l’utilisateur. Après la sélection de l’utilisateur, la déconnexion SAML se poursuit.

LogoutResponse

Microsoft Entra ID envoie un LogoutResponse en réponse à un élément LogoutRequest. L’extrait suivant illustre un exemple d’élément LogoutResponse.

<samlp:LogoutResponse ID="_f0961a83-d071-4be5-a18c-9ae7b22987a4" Version="2.0" IssueInstant="2013-03-18T08:49:24.405Z" InResponseTo="iddce91f96e56747b5ace6d2e2aa9d4f8c" xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol">
  <Issuer xmlns="urn:oasis:names:tc:SAML:2.0:assertion">https://login.microsoftonline.com/aaaabbbb-0000-cccc-1111-dddd2222eeee/</Issuer>
  <samlp:Status>
    <samlp:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success" />
  </samlp:Status>
</samlp:LogoutResponse>

Microsoft Entra ID définit les valeurs ID, Version et IssueInstant dans l’élément LogoutResponse . Il définit également l’élément InResponseTo sur la valeur de l’attribut ID de l’élément LogoutRequest qui a obtenu la réponse.

Émetteur

Microsoft Entra ID définit cette valeur sur https://login.microsoftonline.com/<TenantIdGUID>/, <où TenantIdGUID> est l’ID du locataire Microsoft Entra.

Pour identifier correctement l’élément émetteur, utilisez la valeur https://login.microsoftonline.com/<TenantIdGUID>/ comme indiqué dans l’exemple LogoutResponse. Ce format d’URL identifie le locataire Microsoft Entra comme émetteur, représentant l’autorité responsable de l’émission de la réponse.

État

Microsoft Entra ID utilise l’élément StatusCode dans l’élément Status pour indiquer la réussite ou l’échec de la déconnexion. En cas d’échec de la tentative de déconnexion, l’élément StatusCode peut également contenir des messages d’erreur personnalisés.