2016-06-01 7 views
1

Für Menschen, die mit Desktop-Anwendungen arbeiten, wie gehen sie mit oauth2 fließt für Drittanbieter-Dienste, die eine Weiterleitungs-URL benötigen?Wie funktioniert die URL von oauth2 redirect für Desktop-Anwendungen?

Ich möchte Benutzer durch Discord OAUTH2 Login authentifizieren. Aber ich arbeite an einer Desktop-App, hinter der kein Webservice steht.

ich über die Umleitung Schema gelesen haben, die wie, sagt

urn:ietf:wg:oauth:2.0:oob

Aber Zwietracht sieht es ist eine nicht passende Umleitungs-URL nach dem in durch oauth2 anmelden.

+0

Ich denke, dass Sie eine serverseitige Anwendung für oauth2 Login entwickeln müssen. Tatsächlich hat Oauth2 für internetbasierte Anwendungen erstellt, die eine bestimmte URL für den Zugriff verwendeten. Die Desktop-Anwendung funktioniert auf diesem Weg nicht, sodass Sie Oauth2 nicht integrieren können. – Linh

Antwort

2

Wenn Sie eine Desktop-Anwendung verwenden, haben Sie ein paar Möglichkeiten:

  1. Sie können einen Webserver lokal starten und localhost als redirectUri verwenden. Der Nachteil ist, dass Sie in der Regel die Portnummer in der Liste der erlaubten Redirect-Uris angeben müssen und Sie nicht unbedingt wissen müssen, ob ein bestimmter Port auf dem Client verfügbar ist.
  2. Die urn:ietf:wg:oauth:2.0:oob weist den Server an, den Benutzer überhaupt nicht umzuleiten, sondern den Code im Browserfenstertitel auszugeben. Wenn Sie über die entsprechende Berechtigung zum Lesen anderer Windows-Titel verfügen, können Sie dort Änderungen automatisch erkennen. Auch der Code wird normalerweise dem Benutzer angezeigt, so dass er als Fallback & den Code in Ihre Anwendung einfügen kann. Ihr Dienst unterstützt dies jedoch möglicherweise nicht.
  3. Richten Sie einen Webservice ein, der das Token für Sie weiterleitet. Grundsätzlich richten Sie einen Webservice ein, gegen den sich Ihre Anwendung authentifiziert, und dieser Webservice gibt eine URL an den Authentifizierungsdienst zurück, einschließlich einer entsprechenden state an die Sie den Benutzer senden. Dann sendet der Authentifizierungsdienst Ihren Benutzer zurück an Ihren Webservice, der den Code erneut an Ihre Anwendung meldet, z. durch langes Polling, Web-Sockets oder eine echte TCP-Verbindung, die während des gesamten Prozesses offen gehalten wird. Beachten Sie, dass der Webservice sorgfältig gestaltet werden muss, damit der Dienst nicht von Dritten missbraucht wird. Da Sie Ihre Desktop-Anwendung nicht technisch gegen den Webservice authentifizieren können, können Sie nicht verhindern, dass andere Anwendungen Ihren Webservice aufrufen, aber Sie können dem Benutzer auf dem Zustimmungsbildschirm einige Informationen anzeigen, die Benutzern helfen, festzustellen, ob die Anfrage legitim war oder nicht.
+0

Also, wenn ich auf iOS/OS X-App umleiten möchte (wie myapp: // oauth/Callback), brauche ich Webservice als Proxy um auf diesen URI umzuleiten? –