![]() |
Google API Zugriff mit OAuth 2.0 Authorization für Daraja HTTP Server (mit Source)
Da ich zum Thema OAuth 2.0 Authorization hier ab und zu etwas gelesen habe, aber Beispielprojekte für eine serverseitige Umsetzung in Object Pascal fehlten, habe ich heute anhand der Google Dokumentation zum Einsatz von OAuth 2.0 auf Web Servern ein Beispielprojekt erstellt:
![]() Das Programm kann mit Lazarus 2.0 und mit Delphi 2009 und neuer kompiliert werden. Neben der IDE und einem Google Account mit Zugang zur Developer API sind nur OpenSSL DLLs und SuperObject (für Delphi) erforderlich. Feedback ist natürlich sehr herzlich willkommen. |
AW: Google API Zugriff mit OAuth 2.0 Authorization für Daraja HTTP Server (mit Source
Danke für's tun!
|
AW: Google API Zugriff mit OAuth 2.0 Authorization für Daraja HTTP Server (mit Source
Sehr schön, das ist immer wieder ein Thema.
Laufen diese Komponenten auch unter Firemonkey (Android, iOS, MAC) ? Ich denke das ist VCL, oder gibt es davon auch FMX Versionen ? |
AW: Google API Zugriff mit OAuth 2.0 Authorization für Daraja HTTP Server (mit Source
Zitat:
Der Daraja HTTP Server basiert auf Indy's HTTP Server Komponente und erleichtert zur Erstellung von Webververn. Auf diese wird dann mit HTTP Clients zugegriffen (also einem Browser oder einem WebService Clients). Die Oberfläche wird daher bei Einsatz eines Webbrowsers über HTML definiert, oder - wenn man einen WebService erzeugt - entfällt diese ganz, oder man schreibt eine Oberfläche die aus den Daten des WebService gespeist wird. Da für die Google-Anmeldung (ausser unter Android) jedoch immer eine Benutzerinteraktion im Browser notwendig ist, kann sie für WebServices so nicht ohne weiteres eingesetzt werden. Laufen würde dieser Code mit Delphi (Rio) auch unter Linux, aber wegen ARC nicht auf iOS, Mac oder Android. |
AW: Google API Zugriff mit OAuth 2.0 Authorization für Daraja HTTP Server (mit Source
Vielen Dank für das Feedback soweit!
Ich hoffe, als nächstes den Code für das Verfahren ![]() |
AW: Google API Zugriff mit OAuth 2.0 Authorization für Daraja HTTP Server (mit Source
Ich verstehe die Antwort noch nicht ganz: könnte man den OAuth Code ausdem Server
extrahieren und eine VCL oder FMX Anwendung bauen, welche diesen Code benutzt um sich mittels OAuth 2.0 bei einem entsprechenden Dienst der das unterstützt anzumelden? Oder muss man unbedingt eine Webseite bauen? Wozu? Wird da nicht erstmal irgendwo Benutzername/Passwort abgefragt und dann ein Token generiert und die eigene Anwendung weißt sich dann mit diesem Token gegenüber dem Server aus? Grüße TurboMagick |
AW: Google API Zugriff mit OAuth 2.0 Authorization für Daraja HTTP Server (mit Source
Zitat:
Wie aber bekommt man das Token dann vom Server in die VCL/FMX Anwendung? Natürlich, wenn man den Server auf dem gleichen System wie die Anwendung laufen lassen kann, kein Problem - aber nicht immer ist das eine "vertrauenswürdige Umgebung". Und: der Server benötigt eine client_id und ein client_secret, ohne die man kein Token bekommt. Beide soll man ![]() Wenn die Anwendung (einschliesslich Server) auf dem Desktop des Endanwenders läuft, gibt man private Schlüssel aus der Hand, was missbraucht werden kann. |
AW: Google API Zugriff mit OAuth 2.0 Authorization für Daraja HTTP Server (mit Source
Hallo,
danke für den Erklärungsversuch. Nur ist das noch so Neuland für mich, dass ich doch nochmal nachfragen muss. 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. 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? 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? Oder wozu bräuchte ich dann noch einen Server unter meiner Kontrolle? Grüße und Danke für's Erklären TurboMagick |
AW: Google API Zugriff mit OAuth 2.0 Authorization für Daraja HTTP Server (mit Source
Zitat:
![]() 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. Zitat:
![]() Zum Beispiel: ![]() Zitat:
Zitat:
In meiner ![]() ![]() ![]() 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. |
AW: Google API Zugriff mit OAuth 2.0 Authorization für Daraja HTTP Server (mit Source
Danke schon mal für die Antworten, auch wenn ich noch nicht alles ganz verstehe oder sinnvoll finde.
Zitat:
Zitat:
der die Daten dann in der richtigen Form an die GitHub Webseite sendet. Allerdings müsste man dann vermutlich Änderungen an der Loginseite von GitHub nachziehen, falls diese relevant sein sollten für den eigentlichen Login Prozess. Dann würde mann eine Redirect URL als Antwort bekommen. Aber was soll man dann auf der anderen Seite? Ist das sozusagen die eigentliche Webanwendung die man ausführen wollte? Zitat:
Wenn ich dich weiter unten aber richtig verstehe war es eh' ein nicht wirklich umgesetztes Beispiel. Zitat:
Zitat:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:12 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz