Authentification par formulaire + ASP.NET MVC absolu ReturnURL
J'ai un central d'authentification de l'application sur un serveur. Le serveur b a une ou plusieurs applications sur le même domaine que le besoin de s'authentifier à partir d'un serveur. Il est assez facile de le configurer de sorte que le serveur b apps rediriger vers un serveur. Ce n'est pas si facile est d'obtenir la ReturnURL absolu.
Voici la ride. Consommer de l'application sur le serveur b dispose de deux contrôleurs, l'un public et l'autre sécurisé. Si l' [autoriser] la décoration est placé sur une action dans le public (ce qui est le contrôleur par défaut), j'obtiens le bon URL absolue. Toutefois, si son dans son propre contrôleur-je obtenir une URL relative.
Je peux intercepter la pré-demande de l'événement dans les applications qui consomment beaucoup, mais j'ai besoin de certaines parties du site à être public, de ne pas tout casser.
Idées?
source d'informationauteur bxlewi1
Vous devez vous connecter pour publier un commentaire.
La façon dont la norme AuthorizeAttribute fonctionne en mettant le code d'état de réponse à 401 si la demande n'est pas authentifié. Ce coups de pied dans l'authentification par défaut du module type de réponse à une demande non autorisée. Je suppose que vous utilisez l'authentification basée sur les formulaires, ce qui serait de construire l'url de retour en fonction de l'url dans la demande. Dans ce cas, probablement une URL relative.
Une chose que vous pourriez faire est au lieu de s'appuyer sur le comportement intégré, vous pouvez mettre en œuvre un SSOAuthorizeAttribute qui s'étend de la AuthorizeAttribute classe et remplace OnAuthorization. Vous pouvez ensuite extraire le loginUrl à partir des formes de l'élément dans l'interface web de configuration et de construire votre propre RedirectResult et tirez le returnUrl de la HttpContext.Demande.Url.AbsoluteUri propriété dans le AuthorizationContext paramètre.
En supposant que les formes d'authentification, le serveur B applications web.config, définissez l'attribut loginUrl sur les formes de la balise de l'Action d'un Contrôleur méthode qui s'attache à l'url absolue avant de la rediriger vers le serveur A.
Config sur le serveur B
De la méthode d'action pourrait ressembler
comme https://stackoverflow.com/a/583608/80589 mais plus courte: