2009-02-27 7 views
7

Nous avons beaucoup d'utilisateurs sur un forum VBulletin. maintenant je veux écrire quelques applications de plus sur des rails pour la même base d'utilisateurs. Jusqu'à présent, toute l'authentification et la gestion de session sont prises en charge par VBulletin. Quelle est la meilleure façon de fournir l'authentification unique pour mes utilisateurs et les onVBulletin sur les rails apps je suis en train d'écriresignature unique entre Vbulletin et applications ferroviaires


Je travaille sur le processus d'inscription unique avec Bulletin v et de l'application sur mesure. Je peux me connecter à Vb en utilisant des cookies. je peux accéder à tous. mais quand l'accès envoie "Message Privé". il dit

« Vous avez désactivé les messages privés. Vous ne pouvez pas envoyer des messages privés jusqu'à ce que vous les mettez en modifiant vos options. »

est là toutes les autorisations sont mis à table « DataSource » ?. .

Merci maître

Répondre

7

Idéalement vos deux sites sont sous-domaines d'un domaine commun (par exemple forum.example.com et rails.example.com), ou de partager le même domaine (www.example.com.) l'un des sites serait l'authentificateur principal, et définir un cookie (pour .example.com dans le cas du domaine parent commun [notez le . avant example.com] ou www.example.com dans le cas du domaine partagé, afin que les deux applications puissent y accéder), où le cookie contient:

  • la user ID
  • un salt (valeur aléatoire calculé lors de la connexion) et
  • un SHA-2 signature calculé sur le triplet (user ID + salt + un shared secret key), où la clé secrète partagée est une chaîne secrète connu par bo les sites

Chaque site serait en mesure de récupérer le user ID et salt à partir du cookie, puis utilisez le shared secret key (connu seulement par les deux applications) pour calculer un SHA-2 signature qui doit correspondre au SHA-2 signature stocké dans le cookie. Si le SHA-2 signatures correspond, alors vous pouvez supposer que l'utilisateur est authentifié, sinon forcer l'utilisateur à se connecter à nouveau.

Le cookie doit être détruit lors de la déconnexion.

Les petits caractères

Pour se protéger contre le piratage de session, toutes les demandes faites sur les deux sites doivent être cryptés via SSL (utiliser https). Si cela est impossible, un hachage basé sur l'adresse IP du client ainsi que le type et la version du navigateur (user-agent) devraient probablement être calculés au moment de la connexion et être également stockés dans le cookie. Il doit être revérifié par rapport à l'adresse IP et à l'agent utilisateur du client avant de servir chaque requête. L'approche basée sur le hachage est la sécurité à travers l'obscurité, et peut être trompée; de plus, un utilisateur accédant à Internet depuis un pool de mandataires ou utilisant TOR peut être expulsé par votre système chaque fois qu'un proxy différent ou un nœud de sortie (avec une adresse IP différente) transmet une demande.

Questions connexes