2

Comment puis-je implémenter la connexion unique sur plusieurs domaines? J'ai deux ou plusieurs domaines et je veux tous d'eux authentifier via un serveur en utilisant SqlMembershipProvider (base de données d'adhésion ASP.NET 2.0) J'ai domaine foo.com qui héberge la base de données d'adhésion asp.net et un autre domaine bar.com qui veut s'authentifier via foo.com. J'ai trouvé beaucoup d'article sur Internet pour différentes applications mais dans le même domaine mais différents domaines je n'ai pas trouvé un article complet décrit le cycle, j'ai vu certains en utilisant la classe FormsAuthenticationTicket ou la classe FormsAuthentication. Je sais que machineKey dans web.config devrait être le même. Je pensais que c'est facile en laissant foo.com une fois authentifié il suffit de dupliquer le cookie d'authentification et de changer le domaine du cookie de foo.com en bar.com mais j'ai compris que je ne peux pas contrôler les autres cookies de domaine! Alors, y a-t-il un moyen de le faire fonctionner?SSO sur différents domaines

Merci et salutations, Ahmed

+0

pouvez-vous me donner un exemple sur la façon de gérer le code de statut HTTP de HttpModule? et encore je veux authentifier l'utilisateur en utilisant l'adhésion à asp.net normale (aspnetdb)? Et une autre question, quelle partie dans asp.net gère la redirection vers la page de connexion et ajouter le referrer à ReturnUrl chaîne de requête en tant que chemin relatif pas le chemin complet, je veux gérer pour commencer à rediriger vers le chemin complet. En outre, qu'en est-il des services Web, est-il possible que je puisse m'authentifier via un serveur Web? et comment? –

Répondre

1

Ce n'est pas une question facile, mais je peux vous donner quelques conseils. Pour fonctionner avec les paramètres ASP.NET web.config qui autorisent un accès anonyme ou requièrent la connexion d'un utilisateur, vous devez créer un module qui connecte HttpApplication.EndRequest et recherche l'erreur HTTP 401 (this signifie que l'authentification est nécessaire).
Réinitialisez le code d'erreur et redirigez-le vers votre site d'authentification unique. Ici, vous pouvez vous connecter comme d'habitude. La partie la plus difficile commence maintenant: vous devez transmettre les informations d'identification de l'utilisateur sur le réseau à l'autre serveur de façon sécurisée. Vous pouvez le faire avec un cryptage symétrique et un secret partagé, ou en échangeant un secret sur un cryptage asymétrique. Le module HttpModule de l'autre côté récupère maintenant la redirection du site de connexion, vérifie que le ticket de connexion est valide et remplace HttpContext.User (assurez-vous d'encapsuler l'utilisateur existant, s'il y en a un, de sorte que vous peut router l'appel IsInRole à cet IPrincipal).