113 votes

Single Sign On dans plusieurs domaines

Notre société a des domaines multiples, configurer avec un site web hébergé sur chacun des domaines. À ce moment, chaque domaine a sa propre authentification qui est fait par l'intermédiaire de cookies.

Quand quelqu'un connecté à un domaine a besoin d'accéder à quelque chose de l'autre, l'utilisateur doit se connecter à nouveau à l'aide des informations d'identification différentes sur l'autre site, situé sur l'autre domaine.

Je pensais aller vers l'authentification unique (SSO), de sorte que ce tracas peuvent être éliminés. J'aimerais avoir des idées sur la façon dont cela pourrait être réalisé, comme je n'ai aucune expérience dans ce domaine.

Merci.

Edit: Les sites web sont un mélange de l'internet (externe) et de l'intranet (interne utilisé au sein de l'entreprise) des sites.

94voto

grom Points 8057

La solution d'authentification unique que j'ai mis en place ici fonctionne comme suit:

  1. Il est un maître de domaine, login.mydomain.com avec le script master_login.php qui gère les connexions.
  2. Chaque client de domaine a le script client_login.php
  3. Tous les domaines se partagent la session de l'utilisateur de la base de données.
  4. Lorsque le client de domaine nécessite que l'utilisateur soit connecté, il redirige vers le domaine principal (login.mydomain.com/master_login.php). Si l'utilisateur n'a pas signé pour le maître, il demande l'authentification de l'utilisateur (c'est à dire. affichage de la page de connexion). Une fois l'utilisateur authentifié, il crée une session dans une base de données. Si l'utilisateur est déjà authentifié il regarde leur id de session dans la base de données.
  5. Le maître de domaine renvoie au client de domaine (client.mydomain.com/client_login.php) en passant l'id de session.
  6. Le domaine client crée un cookie de stocker l'id de session à partir de le maître. Le client peut trouver de l'utilisateur connecté par l'interrogation de la base de données partagée à l'aide de l'id de session.

Notes:

  • L'id de session est un unique identificateur global générés avec l'algorithme de la RFC 4122
  • L'master_login.php ne redirection de domaines dans sa liste blanche
  • Le maître et les clients peuvent être dans différents domaines de premier niveau. Par exemple. client1.abc.com, client2.xyz.com, login.mydomain.com

34voto

Markc Points 580

Ne pas réinventer la roue. Il y a un certain nombre d’open source inter-domaines SSO paquets comme JOSSO, OpenSSO, CAS, Shibboleth et autres. Si vous utilisez Microsoft Technology tout au long de (IIS, AD), vous pouvez utiliser à la place la Fédération (ADF) de microsoft.

16voto

jason saldo Points 5036

Comment les différents sont les noms d’hôte ?

Ces hôtes peuvent partager des cookies :

  • mail.xyz.com
  • www.xyz.com
  • Logon.xyz.com

Mais ceux-ci ne peuvent pas :

  • ABC.com
  • XYZ.com
  • www.tre.com

Dans le premier cas, vous pouvez frapper une solution basée sur les cookies. Pense que GUID et un tableau de session de base de données.

2voto

Mike Points 140

Si vous utilisez Active Directory, vous pourriez avoir à chaque application utiliser AD pour l’authentification, login pourrait alors être transparente.

Dans le cas contraire, si les applications peuvent communiquer entre eux dans les coulisses, vous pourriez utiliser SessionID et avoir une application de génération d’id qui dessert l’ensemble de vos autres applications de manutention.

0voto

Andrew Wilkinson Points 4875

La meilleure solution est de mettre en œuvre le SSO à l’aide de Lasso, et je suggère fortement de que vous regardez cela. Si vous décidez c' est exagéré pour ce que vous devez alors je suis d’accord avec Neall et vous suggérons de qu'utiliser OpenID.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X