Déconnexion unique

Mise à jour : 19 juin 2015

S’applique à : Azure

Microsoft Azure Active Directory Access Control (également appelé service Access Control ou ACS) inclut désormais une fonctionnalité facultative de déconnexion unique pour compléter l’authentification unique. Le résultat est une expérience d’authentification complète et cohérente et de déconnexion pour les utilisateurs d’applications web intégrées à ACS.

Quand un utilisateur final se déconnecte d'une application de partie de confiance qui prend en charge l'authentification unique, ACS peut automatiquement déconnecter l'utilisateur du site du fournisseur d'identité et de toutes les autres applications auxquelles il s'est connecté à l'aide de ce fournisseur d'identité. De même, si l'utilisateur se déconnecte du site web du fournisseur d'identité, ACS peut automatiquement le déconnecter des applications auxquelles il s'est connecté à l'aide du fournisseur d'identité.

Cette rubrique décrit le fonctionnement de la déconnexion unique et explique comment l'implémenter pour votre application de partie de confiance. Veillez à passer en revue l’exemple de code pour implémenter l’authentification unique fédérée dans une application MVC 4 ASP.NET à l’exemple de code : ASP.NET MVC 4 avec la déconnexion fédéréet.

Configuration requise

Pour implémenter la déconnexion unique, vous devez disposer des outils et services suivants.

  • Abonnement Azure

  • Visual Studio 2012

À propos de la déconnexion unique

Dans chaque session de navigateur, un client peut sélectionner un fournisseur d'identité fédéré pour se connecter à une application de partie de confiance. Avec la déconnexion unique, quand l'utilisateur se déconnecte du fournisseur d'identité ou de l'application de partie de confiance, il est automatiquement déconnecté de toutes les applications de partie de confiance auxquelles il s'est connecté à l'aide du même fournisseur d'identité.

Par exemple, supposez qu'un client utilise un compte Microsoft (Windows Live ID) pour se connecter à trois applications de partie de confiance intégrées à ACS. Quand il se déconnecte de l'une des applications, il est automatiquement déconnecté de son compte Microsoft et des deux autres applications.

La prise en charge complète de la déconnexion unique est disponible pour les fournisseurs d'identité ADFS et WS-Federation personnalisés. La prise en charge de l’authentification unique limitée est disponible pour facebook, Google, compte Microsoft et Yahoo! fournisseurs d’identité. Ces fournisseurs d’identité ne peuvent pas lancer l’authentification unique. Toutefois, lorsqu’une application de partie de confiance lance l’authentification unique, le client est déconnecté de ces fournisseurs d’identité et les applications de partie de confiance associées auxquelles ils se sont connectés à l’aide de ce fournisseur d’identité.

Fonctionnement de la déconnexion unique

La déconnexion unique peut être initiée par le fournisseur d'identité ou par l'application de partie de confiance. Dans cette section, nous allons examiner chacun de ces processus de déconnexion et expliquer comment activer la déconnexion unique pour une application de partie de confiance.

Déconnexion initiée par l'application de partie de confiance

Pour initier la déconnexion unique quand un utilisateur se déconnecte de votre application de partie de confiance, envoyez une URL avec les paramètres suivants au point de terminaison ACS WS-Federation.

  • wa: Défini sur wsignout1.0

  • wreply : Définissez la valeur sur l’URL de la page de déconnexion, autrement dit la page dans laquelle l’utilisateur est redirigé lorsque la déconnexion est terminée. Cette valeur doit faire partie du nom de domaine rp, par exemple «https://RP.com/" ;

  • wtrealm : Défini sur la valeur de la propriété Domaine de l’application de partie de confiance dans le portail de gestion ACS.

Voici un exemple d'URL de déconnexion unique.

https://<YourNamespace>.accesscontrol.windows.net/v2/wsfederation?wa=wsignout1.0&wtrealm=<YourAppRealm>&wreply=<YourAppRealmLogoutPage>

Par exemple :

https://Fabrikam.accesscontrol.windows.net/v2/wsfederation?wa=wsignout1.0&wtrealm=" https://www.fabrikam.com/" &wreply= https://www.fabrikam.com/logout

Pour obtenir un exemple de code qui implémente l’authentification unique initiée par une partie de confiance, consultez l’exemple de code : ASP.NET MVC 4 avec déconnexion fédérée. Cet exemple inclut du code dans LogoutController.cs qui obtient les valeurs wreply et wrealm et crée une instance de la classe SignOutRequestMessage.

Quand ACS reçoit l'URL de déconnexion, il met fin à la session du client auprès du fournisseur d'identité en envoyant une demande wsignout1.0. Ensuite, ACS envoie des messages wsignoutcleanup1.0 aux autres applications de partie de confiance auxquelles l'utilisateur s'est connecté à l'aide du fournisseur d'identité.

Déconnexion initiée par le fournisseur d'identité

La déconnexion initiée par le fournisseur d'identité est prise en charge uniquement pour les fournisseurs d'identité ADFS et WS-Federation personnalisés. Elle ne peut pas être prise en charge pour les fournisseurs d'identité Compte Microsoft (Windows Live ID), Google, Yahoo! et Facebook car ils ne signalent pas à ACS ou à l'application de partie de confiance quand l'utilisateur se déconnecte.

Lorsque l’utilisateur se déconnecte d’un fournisseur d’identité WS-Federation ou ADFS, le fournisseur d’identité envoie acS un message de demande de nettoyage wsignoutcleanup1.0 au format suivant : https://<YourNamespace>.accesscontrol.windows.net/v2/wsfederation?wa=wsignoutcleanup1.0

Quand ACS reçoit un message wsignoutcleanup1.0 , il vérifie que la requête provient du même point de terminaison que la demande de connexion en validant le référent dans l’en-tête HTTP du message : <Referrer>: https://CustomIDP où la valeur du référent est la valeur du <référent> dans l’URL de connexion dans le cookie ACSSignOut .

Ensuite, ACS envoie un message wsignoutcleanup1.0 à toutes les applications de partie de confiance dans la session de navigateur client de l'utilisateur actif qui sont associées au fournisseur d'identité. Ce processus est semblable à celui décrit dans la section « Déconnexion initiée par l'application de partie de confiance ». Le fournisseur d'identité peut rediriger le navigateur vers une page de déconnexion qu'il contrôle afin d'achever le processus de déconnexion.

Processus de déconnexion unique

Cette section décrit chaque étape du processus de déconnexion unique. Étant donné qu'ACS gère les détails pour vous, vous n'avez pas besoin de comprendre ce processus. Toutefois, il peut être utile pour la personnalisation ou le débogage.

Déconnexion unique étape par étape

  1. Quand ACS reçoit une demande signout1.0 sur son point de terminaison WS-Federation, il recherche le fournisseur d'identité de l'initiateur de la demande de déconnexion dans le cookie ACSSignOut.

    ACS utilise les règles de mise en correspondance suivantes pour identifier le fournisseur d'identité.

    • Si le paramètre wtrealm est spécifié dans la demande de déconnexion, ACS recherche la valeur wtrealm dans la liste des parties de confiance pour chaque fournisseur d'identité.

    • Si wtrealm n'est pas spécifié et qu'il n'y a qu'une seule entrée de fournisseur d'identité dans le cookie ACSSignOut, ACS utilise le fournisseur d'identité mentionné dans le cookie ACSSignOut.

    • Sinon, ACS affiche une page d'erreur indiquant que la tentative de déconnexion a échoué car le paramètre wtrealm est manquant.

  2. ACS envoie un message de déconnexion1.0 au fournisseur d’identité en présentant une page avec un élément iframe> (<inline frame). ACS ajoute également des <éléments iframe> qui contiennent le message SignOutCleanup1.0 aux pages de toutes les parties de confiance actives WS-Federation autres que la partie de lancement et ACS supprime les parties de confiance du cookie ACSSignOut .

  3. La page qui affiche l'état de déconnexion de la partie de confiance contient aussi du code JavaScript qui s'exécute pour une durée spécifiée puis redirige le navigateur. Si un paramètre wreply a été spécifié dans le cookie ACSSignOut, le code JavaScript redirige vers l’adresse indiquée par la valeur wreply pour terminer la déconnexion. Dans le cas contraire, JavaScript redirige vers l’URL de retour de la partie de confiance, comme spécifié dans le portail de gestion ACS.

ACS utilise un cookie de session nommé ACSSignOut pour enregistrer le fournisseur d'identité ayant authentifié l'utilisateur auprès de l'application. Vous pouvez afficher le cookie dans des traces de session. Le cookie de session a le format de nom suivant : ACSSignOut.<YourACSNamespace>.

Le cookie ACSSignOut identifie l'application de partie de confiance et le fournisseur d'identité ayant authentifié l'utilisateur. ACS utilise le cookie durant la déconnexion unique pour s'assurer que le fournisseur d'identité correct est déconnecté et que l'utilisateur est déconnecté des autres applications de partie de confiance auxquelles il s'est connecté à l'aide du fournisseur d'identité.

Limitations de la déconnexion unique

La déconnexion unique présente les limitations suivantes :

  • Seuls les fournisseurs d’identité personnalisés WS-Federation et les fournisseurs d’identité ADFS peuvent lancer l’authentification unique. Les fournisseurs d’identité sociale, tels que Yahoo, Google, Microsoft Account (Windows Live ID) et Facebook, ne notifient pas ACS ou l’application de partie de confiance lorsque le client se déconnecte du site web du fournisseur d’identité. Par conséquent, les utilisateurs d'applications de partie de confiance qui utilisent ces fournisseurs d'identité ne sont pas déconnectés automatiquement quand la déconnexion provient du site du fournisseur d'identité.

  • La déconnexion unique peut ne pas être efficace dans tous les environnements. Quand ACS reçoit un message de déconnexion unique provenant d'une application de partie de confiance, il envoie une demande wsignout1.0 au fournisseur d'identité et un message wsignoutcleanup1.0 à chacune des autres applications de partie de confiance. Quand ACS reçoit un message de demande wsignoutcleanup1.0 en provenance d'un fournisseur d'identité, il envoie un message wsignoutcleanup1.0 à chacune des applications de partie de confiance. Toutefois, ACS ne peut pas garantir que le fournisseur d'identité ou les applications de partie de confiance répondront de manière appropriée en déconnectant l'utilisateur.

  • Quand des utilisateurs se déconnectent du fournisseur d'identité Google dans Internet Explorer, le navigateur affiche une invite « Seul le contenu sécurisé s'affiche ». Pour terminer la déconnexion, les utilisateurs doivent cliquer sur « Afficher tout le contenu ». Une fois la déconnexion terminée, le navigateur est redirigé vers l'URL spécifiée par la valeur du paramètre wreply.

    Internet Explorer 9 et versions ultérieures affichent la remarque relative au contenu sécurisé quand ils rencontrent du contenu non sécurisé sur une page sécurisée, tel que des images et des scripts provenant d'un serveur non sécurisé. Dans ce cas, ils réagissent au contenu ACS sécurisé (HTTPS/SSL) et au contenu non sécurisé (HTTP) en provenance du fournisseur d'identité. ACS ne peut pas modifier ou supprimer ce comportement.

    Les utilisateurs peuvent supprimer l’avis, comme décrit dans la notification « Seul le contenu sécurisé est affiché » dans Internet Explorer 9 ou version ultérieure. Comme ce paramètre s'applique à tous les sites web et peut rendre l'ordinateur de l'utilisateur vulnérable au contenu malveillant, nous vous recommandons d'utiliser le paramètre par défaut, qui bloque le contenu non sécurisé (HTTP).

Pour aider les utilisateurs finaux à initier la déconnexion unique, la page de déconnexion de l'application de partie de confiance doit leur demander de fermer le navigateur ou de se déconnecter de manière explicite des autres applications de partie de confiance et du site web du fournisseur d'identité. Fermer un onglet, une fenêtre ou une page de navigateur ne suffit pas. Si l'ordinateur se trouve dans un lieu public ou partagé (par exemple s'il s'agit d'un ordinateur en libre utilisation), les utilisateurs doivent effacer l'historique du navigateur avant de le fermer.

Voir aussi

Concepts

Exemple de code : ASP.NET MVC 4 avec déconnexion fédérée

Autres ressources

Authentification passive pour ASP.NET dans WIF