2014-09-15 3 views
0

En cas de problème avec la déconnexion de mon application à l'aide de WSfederationAuthentication. J'exécute la déconnexion le code suivant:WAAD Déconnexion redirigeant vers la page de connexion Office 365

FormsAuthentication.SignOut(); 

      if (FederatedAuthentication.SessionAuthenticationModule != null) 
      { 
       FederatedAuthentication.SessionAuthenticationModule.DeleteSessionTokenCookie(); 
       FederatedAuthentication.SessionAuthenticationModule.SignOut(); 
      } 

      if (FederatedAuthentication.WSFederationAuthenticationModule != null) 
      { 
       WSFederationAuthenticationModule authModule = 
        FederatedAuthentication.WSFederationAuthenticationModule; 
       authModule.SignOut(true); 

       String signoutURL = WSFederationAuthenticationModule.GetFederationPassiveSignOutUrl(
        authModule.Issuer, 
        authModule.Realm", 
        null); 

       WSFederationAuthenticationModule.FederatedSignOut(
        new Uri(signoutURL), 
        new Uri(authModule.Realm));      
      } 

Les cookies sont effacés etc, mais la page est redirigé vers Office365 page de connexion au lieu de mes applications page de connexion appropriée.

L'Émetteur et Realm sont corrects Emetteur: https://login.windows.net/EndpointID/wsfed Royaume: https //: localhost: 444 (adresse de base de ma demande, localhost)

Suite est le journal de Fiddler après avoir cliqué fermeture de session:

http://login.windows.net:443 
https://login.windows.net/EndpointID/wsfed?wa=wsignout1.0&wreply=https%3a%2f%2f127.0.0.1%3a444%2f 
https://localhost:444/?wa=wsignoutcleanup1.0 
http://login.microsoftonline.com:443 
https://login.microsoftonline.com/login.srf?wa=wsignout1.0 
https://login.microsoftonline.com/logout.srf?wa=wsignout1.0&lc=1033 
https://login.windows.net/common/wsfed?wa=wsignoutcleanup1.0 **<<<<------ Why ?** 
http://login.microsoftonline-p.com:443 
https://login.microsoftonline-p.com/ThirdPartyCookieCheck.srf?ct=9348739876 
https://login.microsoftonline-p.com/ThirdPartyCookieCheck.srf?tpc=394875457987&lc=1033 
https://login.microsoftonline.com/?lc=1033 

Ces gars-là sont confrontés à la même question, aucune résolution: http://social.msdn.microsoft.com/Forums/vstudio/en-US/ac41c0c5-83ef-4394-9111-fa6d07215f5d/adfs-20-does-not-redirect-back-to-reply-url-on-signout?forum=Geneva

Répondre

0

sans réponses ici, je peux supposer que personne n'a d'autre e J'ai eu ce problème: D.

J'ai trouvé une solution pour ceux qui débarquent ici en cherchant la même chose.

Ainsi, selon la documentation 'WSFederationAuthenticationModule.FederatedSignOut' sur MSDN:

Appelez cette méthode pour envoyer une demande de connexion à WS-Federation Tothe un message STS spécifié. Vous pouvez éventuellement fournir une valeur pour le paramètre wreply dans la demande de déconnexion. Le procédé est le suivant:

  1. Crée un message de demande de déconnexion WS-Federation en utilisant les paramètres spécifiés.

  2. Appelle la méthode SessionAuthenticationModule.DeleteSessionTokenCookie sur le SAM pour supprimer le cookie de session.

  3. Redirige vers le STS en utilisant le message de demande de déconnexion de la première étape.

Pour une raison quelconque pour moi cela ne fonctionnait pas comme annoncé :(. Je décidé de ces 3 choses manuellement qui fonctionnait parfaitement. Le problème est résolu pour l'instant, mais encore se demander pourquoi l'emballage fourni ne fonctionne pas.

FederatedAuthentication.SessionAuthenticationModule.DeleteSessionTokenCookie(); 
FederatedAuthentication.SessionAuthenticationModule.SignOut(); 

WSFederationAuthenticationModule wsfederationAuthenticationModule = FederatedAuthentication.WSFederationAuthenticationModule; 
wsfederationAuthenticationModule.SignOut(true); 
signOutRequestMessageuestMessage signOutRequestMessage = new signOutRequestMessageuestMessage(new Uri(wsfederationAuthenticationModule.Issuer)); 
signOutRequestMessage.Parameters.Add("wreply", wsfederationAuthenticationModule.Realm); 
signOutRequestMessage.Parameters.Add("wtrealm", wsfederationAuthenticationModule.Realm); 
signOutURI = signOutRequestMessage.WriteQueryString(); 
Redirect(signOutURI) 

Hope this helps.

Gaurav

Questions connexes