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.