2010-06-03 5 views
4

Je dois créer un mécanisme de connexion unique évolutif pour plusieurs sites. Scénario:Single SignOn - Meilleure pratique

  • application web central pour enregistrer/gérer compte (serveur en Europe)
  • Plusieurs applications web qui ont besoin d'authentifier sur ma base de données utilisateur (serveurs aux Etats-Unis/Europe/Région du Pacifique)

J'utilise MySQL comme backend de base de données. Les options proposées sont soit la réplication de la base de données utilisateur sur tous les serveurs (sécurité des données?) Ou la connexion directe des serveurs à mon instance MySQL en autorisant explicitement les connexions de leurs adresses IP dans my.cnf (charge élevée? ?). Quel serait le meilleur moyen de fournir une authentification unique évolutive et à faible latence pour toutes les applications Web? En termes de sécurité des données serait-il une bonne idée de répliquer la base de données des utilisateurs sur toutes les applications Web?

Remarque: Toutes les applications Web fournissent une API que les utilisateurs peuvent utiliser pour intégrer des widgets dans leurs propres sites Web. Ces widgets fonctionnent via un mécanisme d'authentification par jeton qui devra à nouveau s'authentifier sur ma base de données utilisateur.

Répondre

3

Je n'intégrerais pas l'authentification au niveau de la base de données, comme dans la réplication de la base de données ou l'accès aux autres serveurs. Cela pourrait devenir difficile à maintenir. Je préférerais une approche faiblement couplée en exposant un service simple sur votre serveur central qui permette aux autres serveurs d'applications d'exécuter des demandes d'authentification.

Vous devriez examiner les questions suivantes (probablement plus):

  • Comment éviter la transmission en texte clair des mots de passe entre les serveurs
  • Vous pouvez probablement pas étrangler le service si un réseau de serveurs d'applications authentifie tous leurs utilisateurs à partir de la même adresse IP, vous pouvez donc vouloir restreindre l'accès à certains clients pour éviter que les machines voyantes explorent en masse des comptes valides.
  • Comment appliquer au centre des choses telles que la session expiration
  • Comment gérer/éviter les temps d'arrêt de service

techniques qui pourraient être utiles:

Vous pouvez également demander aux clients d'utiliser le service central pour obtenir un jeton qui est ensuite promu et vérifié par le serveur cible. Il existe des architectures qui fonctionnent de manière similaire (par exemple, les serveurs de tickets Kerberos), qui peuvent servir d'inspiration.

Questions connexes