J'écris une application dans Google appengine python. En raison du soutien limité de l'environnement appengine, je dois implémenter certaines fonctionnalités sur des serveurs dédiés externes. Existe-t-il un mécanisme d'authentification permettant de conserver les informations de connexion sur les serveurs externes et les applications?Préservation de l'authentification sur plusieurs serveurs
2
A
Répondre
2
Le système que vous voulez devrait probablement travailler quelque chose comme ceci:
- Lorsqu'un utilisateur visite le serveur « autre » sans jeu de cookie de session, le serveur redirige l'utilisateur vers une URL spéciale sur l'application App Engine - utilisons/authentifions - avec un paramètre de chaîne de requête 'suivant' qui fournit l'URL de l'étape suivante (décrite au point 3).
- Lorsque App Engine reçoit une demande d'authentification /, il vérifie si l'utilisateur est connecté. Si ce n'est pas le cas, il les invite à se connecter. Ensuite, il génère un jeton pour la session de l'utilisateur, le signe avec un HMAC, utilise un secret partagé par les deux serveurs et redirige l'utilisateur vers l'URL fournie à l'étape 1 , avec le HMAC inclus dans la chaîne de requête. Lorsque le serveur 'autre' reçoit une requête à son URL spéciale (spécifiée à l'étape 1), il valide que HMAC correspond, en utilisant le secret partagé, et si c'est le cas, utilise son propre support de session pour définir un cookie sur le navigateur de l'utilisateur sous son domaine, pour garder une trace de l'utilisateur à partir de là. Si le serveur «autre» a besoin d'obtenir plus d'informations sur l'utilisateur, il peut utiliser une API qu'il partage avec le serveur App Engine pour demander, hors bande, plus d'informations sur l'utilisateur à l'aide du jeton qu'il a reçu. et le secret partagé.
Ceci est très similaire à la procédure utilisée par OAuth, mais entièrement non interactif pour l'utilisateur. C'est également la procédure que les systèmes SSO tels que les comptes Google utilisent pour «transférer» des sessions à d'autres parties de confiance.
Questions connexes
- 1. Préservation de la session de connexion sur plusieurs applications Android
- 2. Asp.net Webapplication sur plusieurs serveurs
- 3. hibernate modélisant plusieurs à plusieurs intégrité de préservation
- 4. Préservation d'un message d'erreur sur plusieurs sauts dans ASP.NET MVC
- 5. Java: synchronisation des threads sur plusieurs serveurs
- 6. Contrôle d'inventaire sur plusieurs serveurs .. Des idées?
- 7. Appels WCF parallèles sur plusieurs serveurs
- 8. conserver un utilisateur authentifié sur plusieurs serveurs
- 9. Communication entre plusieurs serveurs
- 10. JPA avec plusieurs serveurs
- 11. Partage de variables globales sur plusieurs serveurs/applications
- 12. comment accéder à la table sur plusieurs serveurs de données
- 13. L'utilisation de la même clé PGP sur plusieurs serveurs?
- 14. Connexion à plusieurs serveurs Web
- 15. Préservation de l'attribut d'espace
- 16. Outil de comparaison GAC pour plusieurs serveurs?
- 17. Comment créer plusieurs serveurs de jeu?
- 18. Spécification de plusieurs serveurs d'annuaire dans LDAPGroupStore.xml
- 19. Comment puis-je authentifier une session utilisateur sur plusieurs serveurs?
- 20. TFS2010 Build Définition à déployer sur plusieurs serveurs?
- 21. Problème avec plusieurs installations CodeIgniter sur des serveurs HostGator partagés
- 22. Comment déployer un certificat SSL auto-signé sur plusieurs serveurs
- 23. Ant - Exécuter plusieurs serveurs sur différents terminaux dans build.xml
- 24. Comment déployer une application Web asp.net sur plusieurs serveurs?
- 25. Préservation d'une connexion XMPP
- 26. Load Balancing plusieurs serveurs Web Django
- 27. Plusieurs serveurs SSRS partagent un DB?
- 28. Comment synchroniser deux ou plusieurs serveurs Mercurial?
- 29. Préservation des rotations dans OpenGL
- 30. Exécution de travaux cron sur des rails (déployés sur plusieurs serveurs)
Avez-vous vraiment besoin d'envoyer des utilisateurs à ces autres serveurs? Ne pourriez-vous pas simplement les utiliser comme backend, avec App Engine communiquant avec eux pour le compte de l'utilisateur? –