2010-11-18 7 views
4

Je suis à la recherche d'un moyen pour que deux applications Google Apps se parlent et partagent des données entre elles. Je le scénario suivant:Les applications des applications Google se parlent

  • application Un utilisateur se connecte à l'aide du login Google Apps
  • application utilisateur logs B à l'aide du login Google Apps
  • alors ces applications ont besoin de communiquer directement entre eux (serveur à -server) en utilisant des API

la question est: comment ces applications vérifient que l'autre est connecté avec le même utilisateur de Google? J'imagine quelque chose comme: - Demande A obtient une « jeton » de Google et l'envoie à l'application B - Application B vérifie que ce jeton est valide pour le même compte Google comme il est connecté avec

est-il un moyen d'accomplir cela via Google Federated Login? Je parle de Hybrid protocol ici.

Répondre

1

est ici un moyen simple de le faire:

  1. Vous gardez tout calée sur Google l'ID utilisateur de l'utilisateur sur les applications.
  2. Vous partagez les données à l'aide de requêtes HTTP contenant l'ID utilisateur.
  3. Pour éviter les fuites d'userids (interdites par l'API de compte) et pour vérifier que les messages proviennent vraiment de l'autre application, vous cryptez les requêtes avec un chiffrement symétrique tel que AES ou Blowfish ou ce que vous voulez. Les deux applications ont la même clé intégrée.

Vous pouvez utiliser la cryptographie à clé publique. Avec seulement deux applications, ça ne vaut pas le coup à mon avis. Si vous commencez à avoir plus d'applications, la clé publique a du sens. Les petits caractères: le cryptage ne garantit pas l'intégrité ou l'origine sans mesures supplémentaires. Vous devez prendre des précautions contre la lecture, par exemple en incorporant un horodatage ou un numéro de séquence. Vous devez prendre des précautions contre la falsification, par ex. avec une somme de contrôle. Assurez-vous d'utiliser CBC et de bons vecteurs d'initialisation. Gardez la clé secrète.

+0

Merci pour la réponse, mais comment puis-je vérifier que l'autre application est vraiment connecté à Google avec le même code d'utilisateur? C'est la question clé pour moi. –

1

user.user_id() est toujours la même dans toutes les applications pour le même utilisateur. Vous pouvez donc simplement comparer les valeurs renvoyées par user.user_id(). Est-ce ce que vous recherchez?

Remarque: Chaque utilisateur a le même ID utilisateur pour toutes les applications App Engine. Si votre application utilise l'ID utilisateur dans les données publiques , comme en l'incluant dans un paramètre URL , vous devez utiliser un algorithme de hachage avec une valeur «salt» ajoutée à masquer l'ID. Exposer les ID bruts pourrait permettre à quelqu'un d'associer l'activité d'un utilisateur dans une application avec celle dans un autre, ou obtenir l'adresse e-mail de l'utilisateur en contraignant l'utilisateur à signer dans une autre application.

From docs

+1

Merci beaucoup pour le pointeur - mais je suppose que cette valeur ne change jamais, non? Et une application peut simplement la 'mettre en cache' et la soumettre pour toujours? Pas une grosse affaire ici, mais peut-être qu'il y a quelque chose de moins permanent, comme des jetons par session? –

+0

Oui, cette valeur ne change jamais. Vous pouvez créer et gérer des jetons par vous-même. Il n'y a rien de tel intégré dans le moteur de l'application. –

Questions connexes