Ich möchte einen Thick-Client-Desktop-Open-Source-Twitter-Client erstellen. Ich verwende .NET als Sprache und Twitterizer als OAuth / Twitter-Wrapper und meine App wird wahrscheinlich als Open Source veröffentlicht.
Um ein OAuth-Token zu erhalten, sind vier Informationen erforderlich:
- Access Token (Twitter-Benutzername)
- Zugriffsgeheimnis (Twitter-Passwort)
- Verbraucherschlüssel
- Verbrauchergeheimnis
Die zweiten beiden Informationen dürfen nicht wie ein privater PGP-Schlüssel weitergegeben werden. Aufgrund des Entwurfs des OAuth-Berechtigungsflusses müssen diese jedoch in der nativen App vorhanden sein. Selbst wenn die Anwendung nicht Open Source war und der Konsumentenschlüssel / das Konsumentengeheimnis verschlüsselt waren, konnte ein angemessen erfahrener Benutzer Zugriff auf das Konsumentenschlüssel / das Konsumentengeheimnis-Paar erhalten.
Meine Frage ist also, wie ich dieses Problem umgehen kann. Was ist die richtige Strategie für einen Desktop-Twitter-Client, um seinen Consumer-Schlüssel und sein Geheimnis zu schützen?
quelle
Antworten:
Ich habe eine Antwort gefunden, die den Weg widerspiegelt , den ich mir überlegt habe, auf dem Hueniversum zu fahren . Der Artikel Beyond the OAuth Web Redirection Flow ( Jenseits des OAuth-Webumleitungsflusses) enthält einige Vorschläge, von denen einer eine Web-URL ist, die den Token-Austauschprozess unterstützt. Ich muss einen Weg finden, um richtig zu authentifizieren, dass meine App die Authentifizierung für diese Proxy-Seite anfordert. Das ist jedoch möglich.
quelle
Ich kann mich irren, aber wenn Sie Schlüssel mit dem Desktop oder der mobilen App bündeln, Open Source oder nicht, ist es möglich, darauf zuzugreifen. Wenn uns Dienste wie Twitter und Tumblr dazu zwingen, nur die OAuth-API zu verwenden, haben wir zwei Möglichkeiten:
Ersteres ist schwieriger und kostenintensiver und für kleine und Open-Source-Apps nicht unbedingt wartbar. Letzteres bedeutet, dass die App blockiert werden kann und wird, sobald die Spammer die Schlüssel stehlen. Da Twitter und Tumblr noch keine bessere Option anbieten und alle Desktop-Clients, einschließlich Open Source-Clients, auf den neuesten Stand bringen, wird vorgeschlagen, "Big Fish" -Schlüssel zu verteilen und als Fallback zu verwenden .
Schließlich besteht die Möglichkeit, jeden Benutzer zum Abrufen von API-Schlüsseln zu zwingen .
quelle
Abschnitt 4.6 von RFC 5849 , der OAuth 1 definiert, besagt, dass das Verbrauchergeheimnis trotz der Verwendung von Twitter in der Praxis niemals für Desktop-Verbraucher vorgesehen war. Wie Nelson Elhage in " Dear Twitter " betonte, kann und kann Twitter Consumer-Keys von Desktop-Clients kündigen, vorausgesetzt, der Client ist nicht zu groß, um zu scheitern. Es gibt jedoch zwei Problemumgehungen, um die Verwendung von OAuth 1 in einer Desktop- oder Mobilanwendung zu ermöglichen.
Eine Möglichkeit besteht darin, das gesamte Twitter-Protokoll über einen von Ihnen betriebenen Server zu proxen. Auf diese Weise bleibt das Consumer-Geheimnis auf Ihrem Server. Dies ist die von Dick Hardt , Herausgeber der OAuth 1-Spezifikation, empfohlene Problemumgehung. Diese Problemumgehung betrifft nicht die Kosten für den Betrieb dieses Servers.
Die andere Möglichkeit, wie in einem Beitrag von Raffi Krikorian an die Twitter-Entwicklergruppe Google und einem Beitrag von Chris Steipp an eine Wikipedia-Mailingliste vorgeschlagen, besteht darin, dass "jeder Benutzer seine Kopie Ihrer Desktop-Anwendung als seinen eigenen Verbraucher registriert". Anschließend kopiert der Benutzer den neu registrierten Consumer-Schlüssel und das Consumer-Geheimnis und fügt sie in Ihre Anwendung ein. Das Handbuch für Ihre Anwendung muss dann detaillierte Anweisungen zum Registrieren einer neuen Anwendung auf der Entwickler-Website von Twitter enthalten. Diese offizielle Einschränkung hat einige praktische Probleme:
quelle
Ich werde antworten, aber sei gewarnt, dass ich mich nicht selbst darum gekümmert habe. Ich gehe von bewährten Praktiken und vorhandenen relevanten Erfahrungen aus.
Ich würde mir nicht allzu viele Sorgen machen. Wenn es sich bei Ihrem Client um Open Source handelt, haben sie ohnehin Zugriff auf die Quelle, und der Versuch, zu steuern, was sie mit Ihrem Programm tun, widerspricht der Natur von Open Source (obwohl das, was Sie versuchen, nicht zu tun ).
Wenn jemand über ausreichende Kenntnisse verfügt, um Ihr Programm zu debuggen und Ihren Schlüssel zu extrahieren, weiß er wahrscheinlich, wie er mehr tun kann, und Sie könnten sehr gut Ihre Zeit damit verschwenden, eine weitere Sperrung vorzunehmen.
Vorsichtshalber würde ich die Schlüssel von Zeit zu Zeit wechseln (wenn möglich), aber wenn sie nur so tun können, als ob sie Ihr Programm wären, klingt das für mich nicht allzu ernst.
Vollständige Offenlegung, ich bin nicht vertraut mit Twitters API, twitterizers API, oauth Anforderungen oder irgendetwas anderem, was sich fraglich anhört;)
quelle
Der Verbraucherschlüssel und das Geheimnis sind anwendungsgebunden und nicht benutzergebunden. Mit diesen Informationen weiß der OAuth-Anbieter, mit welcher Anwendung er es zu tun hat. Der Rest, das Zugriffstoken und das Geheimnis werden nach Abschluss der ersten Schritte abgerufen.
In diesem Blogbeitrag finden Sie weitere Informationen zur Funktionsweise des Protokolls.
quelle