3

J'ai une application MVC3 pour laquelle je veux mettre en œuvre le support des réclamations. Mon but est comme suit:MVC3 + WIF - FederationResult manquant "wctx"

  1. fournir un lien SignIn, qui, une fois cliqué affiche une fenêtre avec nom d'utilisateur/mot de passe et Facebook/WindowsLive/Google etc. Liens

  2. rediriger automatiquement vers ma page SignIn quand un contrôleur protégé est accédé par exemple/Order/Delete

J'ai configuré l'application et les fournisseurs dans AppFabricLabs.com et inclus le STS dans mon projet. J'ai également créé une implémentation de IAuthorizationFilter pour que je puisse marquer mes contrôleurs comme [WifAuth] et que la méthode OnAuthorization soit appelée avec succès. J'ai mis l'utilisation cas où le visiteur n'a pas été authentifié comme ceci:

private static void AuthenticateUser(AuthorizationContext context) 
    { 
     var fam = FederatedAuthentication.WSFederationAuthenticationModule; 
     var signIn = new SignInRequestMessage(new Uri(fam.Issuer), fam.Realm); 
     context.Result = new RedirectResult(signIn.WriteQueryString()); 
    } 

et obtenir avec succès AppFabricLabs avec mes choix de fournisseur d'identité (n'ont pas compris comment personnaliser cette page). Lorsque je me connecte, mon retour est appelé, donc je atterris dans une méthode de contrôleur/Home/FederationResult, cependant le formulaire posté ne contient que wa et wresult champs mais j'ai besoin de wctx pour savoir où envoyer l'utilisateur. .. Je n'ai pas été capable de comprendre pourquoi.

le wresult est un document XML qui contient (entre autres une bzillion) le nom et l'adresse e-mail de l'utilisateur ouvrant une session, mais malheureusement, ne contient pas l'URL vers laquelle se dirigeait vers l'utilisateur. Ai-je échoué à configurer quelque chose ou suis-je juste à côté de la base? pensées quelqu'un?

  • e

Répondre

3

Il suffit de spécifier un contexte pour le SignInRequestMessage:

signIn.Context = HttpContext.Current.Request.RawUrl; 

Le paramètre wctx est inclus dans chaque demande/réponse, ainsi qu'une partie de la forme affichée enfin sur votre site.

+0

génial. 'signIn.Context = context.HttpContext.Request.RawUrl' dans mon cas. – ekkis