AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

OAuth2 mit Indy

Ein Thema von chkaufmann · begonnen am 24. Aug 2018 · letzter Beitrag vom 27. Sep 2019
Antwort Antwort
chkaufmann

Registriert seit: 23. Aug 2018
6 Beiträge
 
#1

OAuth2 mit Indy

  Alt 24. Aug 2018, 12:09
Hallo zusammen,

ich habe schon verschiedenes mit Indy HTTP Client gemacht, kenne die Komponenten somit recht gut.

Jetzt sollte ich Authentifizierung mit OAuth2 unterstützen und stehe etwas am Berg.
https://leverade.docs.stoplight.io

Was ich aus der Delphi App noch hinkriege ist den Browser starten für das Login. Aber wie bekomme ich dann das Request Token zurück in meine Applikation? Geht das überhaupt oder müssten die da ein anderes Interface anbieten?

Ich wäre froh um ein paar Tipps

Christian
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.920 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: OAuth2 mit Indy

  Alt 24. Aug 2018, 12:26
Moin,

wenn Du eine Delphi-Version >= XE5 hast, dann hast Du für OAuth2 eine Komponente im Rahmen der REST-Library.
Und auch wenn Du die nicht nutzen magst zugunsten einer eigenen Lösung, kannst Du Dort sehen, wie der Token abgegriffen wird. Letztlich geht das mit einem der Browser-Events ("OnAfterNavigate" / "OnTüdelütComplete" oder so ähnlich) und dort wird der vom Server zurückgegebene Inhalt abgegriffen und auf den Token hin untersucht.
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
chkaufmann

Registriert seit: 23. Aug 2018
6 Beiträge
 
#3

AW: OAuth2 mit Indy

  Alt 26. Aug 2018, 20:08
Danke für die Antwort.

Ich war mir gar nicht bewusst, dass diese REST Library auch bei der Professional Version dabei ist. Ich habe das Login jetzt so einigermassen hingekriegt. Allerdings tut das mit TWebBrowser nicht so 100%. Ich brauche dort das OnBeforeNavigate2 Event und wenn meine Callback URL mit ?code=... drin ist schliesse ich das Fenster und nehme von der URL das Token.

Aber so wie es scheint ist da ein "Internet Explorer" und der Login Dialog (Javascript davon) tut nicht ganz korrekt. Und ich fürchte bei meinen Kunden wird das je nach Windows und Service Packs unterschiedlich sein.

Gibt es eine gute Lösung für das Browser Fenster welches nicht von Internet Explorer abhängt? Chromium?

Christian
  Mit Zitat antworten Zitat
Bbommel

Registriert seit: 27. Jun 2007
Ort: Köln
655 Beiträge
 
Delphi 12 Athens
 
#4

AW: OAuth2 mit Indy

  Alt 27. Aug 2018, 08:29
Ich habe es bei einer OAuth2-Implementation so gemacht, dass die Callback-URL auf "localhost" und irgendeinen freien Port geht. In meinem Programm wird dann für den Login-Vorgang ganz kurz ein eigener Webserver gestartet (TIdHTTPServer), der lokal auf dem angegeben Port lauscht und somit die Callback-URL auswerten und den Code daraus extrahieren kann. Damit das funktioniert, muss der OAuth2-Dienst, den du benutzt, solche Callbacks auf eine lokale URL natürlich zulassen.

Der kleine Nachteil ist, dass sich bei der erstmaligen Benutzung die Windows-Firewall meldet, weil dein Programm ja einen neuen Port zum Lauschen aufmacht - das muss man dann einmalig bestätigen.

Der große Vorteil ist, dass du für den eigentlichen Login über den Browser einfach jeden installierten Browser benutzen kannst, idealerweise den Standardbrowser. Vor allem, wenn der Benutzer über den OAuth2-Dienst bereits eingeloggt ist, dann muss er das ggf. nicht noch einmal tun, wenn du seinen Standardbrowser benutzt und nicht mit dem TWebbrowser arbeitest.

Vielleicht hilft dir das ja als Ansatz auch noch weiter.
  Mit Zitat antworten Zitat
Blackpit

Registriert seit: 27. Feb 2019
77 Beiträge
 
#5

AW: OAuth2 mit Indy

  Alt 27. Sep 2019, 19:45
... Aber wie bekomme ich dann das Request Token zurück in meine Applikation? Geht das überhaupt oder müssten die da ein anderes Interface anbieten?

Ich wäre froh um ein paar Tipps

Christian
Mit den RestKomponenten in Seattle z.b. so:
Delphi-Quellcode:
    if RESTRequest.Response.GetSimpleValue('access_token', LToken) then
      OAuth2Authenticator.AccessToken := LToken;
Die richtigen Komponenteneinstellungen vorausgesetzt
HTH

Geändert von Blackpit (27. Sep 2019 um 23:09 Uhr) Grund: Tippfehler
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:04 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz