Einzelnen Beitrag anzeigen

mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#9

AW: Google API Zugriff mit OAuth 2.0 Authorization für Daraja HTTP Server (mit Source

  Alt 7. Mär 2019, 08:40
Beiuspiel: ein Server der bestimmte Webservices anbietet und den ich nicht unter meiner Kontrolle habe
(beispielsweise GitHub) erfordert für die API Benutzung Authentifizierung und kann das per OAuth 2.0.
Für die Zugriffe auf die API mit den eigenen Benutzeranmeldedaten ist kein OAuth 2.0 notwendig. Wenn Du nur auf deine eigene Daten per API zugreifen willst bietet GitHub auch einfachere Wege an).

OAuth 2.0 ist für Third-Party-Apps, die auf auf Daten zugreifen wollen die nicht ihnen gehören. Diesen vertraut man dann nicht die eigenen GitHub-Anmeldedaten an.

Beispiel: ich biete eine Quelltextformatierung für deine bei GitHub gespeicherten Quelltexte an, als sogenannte "Third-Party-App".

Damit ich aber auf die GitHub-Daten deines Kontos zugreifen darf, bitte ich dich zuerst um eine Anmeldung und Authorisierung über GitHub per OAuth 2.0. Von GitHub erhalte ich dann Zugang zu deinen Daten. Allerdings nicht deinen Benutzernamen/Passwort, sondern nur ein Token.

In deinem GitHub-Konto kannst Du dann sehen, dass du meiner App die Berechtigung erteilt hast auf deine Repositories zuzugreifen.


Wenn ich eine VCL/FMX App schreiben wollte die diese APIs nutzt, müsste ich irgendwelche Anmeldeinformationen
(z.B. Benutzername/Passwort) an den Server schicken (wie? definiert OAuth das?) und würde wenn ich's richtig
verstanden habe ein Token bekommen, welches für einen begrenzten Zeitraum gültig ist. Richtig?
Richtig: wenn man sich per OAuth 2.0 anmelden will, zeigt dein Webbrowser eine Loginmaske und wenn Du deine Anmeldedaten sendest, erhält dein Browser einen HTTP Redirect zurück, d.h. er soll auf eine Seite gehen die der Third-Party-Anbieter bei GitHub hinterlegt hat. (Redirects werden von OAuth extensiv genutzt - siehe RFC 6749 Spezifikation)

Zum Beispiel:

http://beautifulsourcecode.com/oauthcallback


Vermutlich ist im Token vermerkt bis wann bzw. wie lange es gültig ist.

Dieses Token muss ich bei den entsprechenden Aufrufen mitschicken, sonst sagt der angefragte Server nur:
"keine Berechtigung". Richtig?

Und ich könnte aufpassen wann das Token abläuft um mit den gemerkten Logindaten rechtzeitig ein neues
anzufordern. Richtig?

Token und Logindaten würde ich vorzugsweise im Speicher der Anwendung halten, da andere Anwendungen dann
schwerer dran kommen als an eine Datei. Richtig?
Ja, so ist es.

Oder wozu bräuchte ich dann noch einen Server unter meiner Kontrolle?
Für die Anmeldung ist ein Server erforderlich, an den das Token gesendet wird.

In meiner Demo-Anwendung läuft der auf localhost. GitHub ruft also die Adresse http://localhost/oauthcallback auf. Diese sogenannte 'return_uri' Adresse habe ich bei GitHub in den OAuth Einstellungen meiner App eingetragen. Für den Echtbetrieb würde ich, falls ich tatsächlich einen Quelltextformatierer anbieten würde, die oben genannte http://beautifulsourcecode.com/oauthcallback als return_uri eintragen.



Wenn auf dem Rechner aber kein Server laufen würde, geht der HTTP Redirect ins Leere.

Um ein lebensnahes Beispiel zu verwenden: der Pizza-Bote kann die Lieferung (Token) nicht abgeben, weil ich eine falsche Adresse angegeben habe.
Michael Justin

Geändert von mjustin ( 7. Mär 2019 um 11:27 Uhr) Grund: Link zu https://tools.ietf.org/html/rfc6749#section-1.7
  Mit Zitat antworten Zitat