2010-01-25 3 views
2

J'ai un projet de moteur d'application google et je souhaite mettre mon API REST à la disposition de tiers. J'aime l'API twitter.Services Web d'autorisation Google App Engine (python)/client tiers

Twitter demande l'envoi de l'utilisateur et du mot de passe afin qu'ils puissent être autorisés - puis-je le faire avec des comptes d'utilisateur google?

J'ai lu quelque part sur ce site ce n'est pas une méthode preferred que leurs pouvoirs sont entrés dans une application thirdparty/etc passé

Je ne veux pas trop compliquer et de les rediriger vers un googles propre login/captcha etc. J'ai vu une implémentation de ceci - également avec le bureau/téléphone/widgets cela peut même ne pas fonctionner.

Est une solution pour les applications tierces d'appeler mon service - l'application appelle une page sur mon site (qui demande une connexion - je viens d'ajouter des droits de connexion) l'utilisateur se connecte puis mon application crée un jeton long Cela est ensuite renvoyé à une application tierce qui l'enregistre ensuite dans son propre référentiel et le transmet en tant qu'argon Token dans la demande de publication/de mise/suppression. Mon service REST vérifie alors le jeton et les paires de recherche (token | user key) et autorise/rejette l'appel de méthode.

Je pourrais également demander l'application pour leur domaine? et stocker cela aussi. Je suppose que je peux lire l'URL de la demande sur le service REST et vérifier qu'ils correspondent etc?

Est-ce une solution raisonnable ou suis-je vivant dans les années 90?

Répondre

1

OAuth a été créé avec cette situation en tête. C'est une spécification du type de schéma d'auth-token que vous venez de décrire, et c'est reasonably widespread ces jours-ci. Pour l'équilibre, voir this recent StackOverflow thread.

+0

Hmm oui j'ai considéré que le feedback dans le thread que vous avez référencé n'est pas si positif - oAuth doit être accessible chaque fois que le client se connecte - ce qui est un peu gênant pour les applications tierces. Twitter utilise un système simple si im correcte de demander le nom d'utilisateur et mot de passe qui est très simple dans REST. Plus une application tierce a juste besoin d'envelopper dans la demande get/post - encore une fois des choses simples. Mes hypothèses ici sont-elles correctes? – spidee

+1

Twitter utilise également OAuth. Vous ne savez pas exactement ce que vous entendez par "doit être accessible chaque fois que le client se connecte"; Chaque demande d'API effectuée doit avoir une signature OAuth, mais le jeton utilisé pour la signature peut avoir une longue durée de vie et exister entre les sessions. Ce que fournit OAuth sur un schéma "envoyer le mot de passe" est une sécurité contre les jetons volés et la demande de falsification. Si vous n'êtes pas inquiet à ce sujet, alors OAuth est moins intéressant. – keturn

+0

Je pense que je devrais peut-être reconsidérer opt-out sur l'utilisation des moteurs de l'application construits dans le module de comptes google. Je vais aussi revoir oAuth comme un but pour sécuriser mes points de terminaison api. – spidee