Je veux créer un client Twitter open-client de bureau épais. Il se trouve que j'utilise .NET comme langue et Twitterizer comme enveloppe OAuth / Twitter, et mon application sera probablement publiée en open source.
Pour obtenir un jeton OAuth, quatre informations sont nécessaires:
- Jeton d'accès (nom d'utilisateur twitter)
- Access Secret (mot de passe twitter)
- La clé du consommateur
- Secret du consommateur
Les deux deuxièmes informations ne doivent pas être partagées, comme une clé privée PGP. Cependant, en raison de la façon dont le flux d'autorisation OAuth est conçu, ceux-ci doivent être sur l'application native. Même si l'application n'était pas open source et que la clé / secret du consommateur était cryptée, un utilisateur raisonnablement qualifié pourrait accéder à la paire clé / secret du consommateur.
Donc ma question est, comment puis-je contourner ce problème? Quelle est la stratégie appropriée pour qu'un client Twitter de bureau protège sa clé et son secret de consommateur?
la source
Réponses:
J'ai trouvé une réponse qui reflète le chemin que j'envisageais de suivre sur hueniverse . L'article, Au-delà du flux de redirection Web OAuth , propose quelques suggestions, l'une d'entre elles étant une URL Web qui fait office de proxy pour le processus d'échange de jetons. Je dois trouver un moyen d'authentifier correctement que mon application est ce qui demande l'authentification sur cette page proxy. Mais c'est possible.
la source
Je me trompe peut-être, mais si vous regroupez des clés avec l'application de bureau ou mobile, open source ou non, il est possible d'y accéder. Si des services comme Twitter et Tumblr nous obligent à utiliser l'API OAuth uniquement, nous avons deux options:
Le premier est plus difficile et coûteux, pas nécessairement maintenable pour les petites applications open source. Ce dernier signifie que l'application peut être et sera bloquée une fois que les spammeurs auront volé les clés. Comme Twitter et Tumblr ne donnent pas encore une meilleure option, et vissent tous les clients de bureau, clients Open Source inclus, il est proposé de distribuer des clés "Big Fish" et de les utiliser comme solution de rechange .
Enfin, il existe une option pour forcer chaque utilisateur à obtenir des clés API.
la source
La section 4.6 de la RFC 5849 , qui définit OAuth 1, indique que le secret du consommateur n'a jamais été destiné à être utilisé par les consommateurs de bureau, malgré l'utilisation de Twitter de celui-ci dans la pratique. Comme l'a souligné Nelson Elhage dans " Cher Twitter ", Twitter peut et résilie les clés de consommation des clients de bureau, à condition que le client ne soit pas trop gros pour échouer. Mais il existe deux solutions de contournement pour permettre l'utilisation d'OAuth 1 dans une application de bureau ou mobile.
Une façon consiste à proxy l'ensemble du protocole Twitter via un serveur que vous exploitez. De cette façon, le secret du consommateur reste sur votre serveur. Il s'agit de la solution de contournement recommandée par Dick Hardt , éditeur de la spécification OAuth 1. Cette solution de contournement ne résout pas le coût d'exploitation de ce serveur.
L'autre façon, comme suggéré dans un article de Raffi Krikorian au groupe Google de discussion sur le développement de Twitter et un article de Chris Steipp sur une liste de diffusion Wikipédia, consiste à "demander à chaque utilisateur d'enregistrer sa copie de votre application de bureau en tant que propre consommateur". Ensuite, l'utilisateur copiera et collera la clé de consommateur et le secret de consommateur nouvellement enregistrés dans votre application. Le manuel de votre application devrait alors inclure des instructions détaillées sur la façon d'enregistrer une nouvelle application sur le site des développeurs de Twitter. Cette limitation officielle présente quelques problèmes pratiques:
la source
Je vais répondre, mais sachez que je n'ai pas traité cela moi-même, je m'éloigne des meilleures pratiques et de l'expérience pertinente existante;
Je ne m'en inquiéterais pas trop. Si votre client est open source, il aura quand même accès à la source, et essayer de contrôler ce qu'il fait avec votre programme va de toute façon contre la nature de l'open source (bien que ce qui est important, ce que vous essayez de faire ne le fasse pas ).
Si quelqu'un a suffisamment de connaissances pour déboguer votre programme et extraire votre clé, il sait probablement comment faire plus que cela et vous pourriez très bien perdre votre temps à essayer de verrouiller davantage.
Par précaution, je changerais les clés de temps en temps (si possible), mais si tout ce qu'ils peuvent faire est de faire semblant d'être votre programme, cela ne me semble pas trop sérieux.
Divulgation complète, je ne connais pas l'API Twitters, l'API Twitterizer, les exigences Oauth ou tout ce que j'ai dit qui semble discutable;)
la source
La clé et le secret du consommateur sont liés à l'application et non à l'utilisateur. Avec ces informations, le fournisseur OAuth sait avec quelle application il traite. Le reste, le jeton d'accès et le secret seront obtenus après les premières étapes.
Voir cet article de blog pour plus d'informations car il montre comment fonctionne le protocole.
la source