AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi OAuth2 erste Schritte
Thema durchsuchen
Ansicht
Themen-Optionen

OAuth2 erste Schritte

Ein Thema von haentschman · begonnen am 2. Nov 2022 · letzter Beitrag vom 7. Nov 2022
Antwort Antwort
Benutzerbild von gubbe
gubbe

Registriert seit: 8. Okt 2005
Ort: Schleswig-Holstein
74 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: OAuth2 erste Schritte

  Alt 4. Nov 2022, 08:35
Auch ein Passwort-Manager greift in den Embedded Browsern nicht. Google z.B. investiert auch jede Menge Zeit und Geld darin, dass die Google-Anmeldeseite bewusst nicht in embedded Browsern funktioniert. Auch das steht in der Spec: Ein IdP-Anbieter sollte verhindern das die Login-Seite in solchen Embedded Browsern funktioniert.
Ja genau, die fehlende Möglichkeit die Login-Daten zu speichern fällt dann auch negativ auf. Aber es kommt ja immer auf den Anwendungsfall an. Dass Google es verhindern möchte, ist absolut verständlich, denn die Benutzer sollen eben nicht dazu animiert werden, ihre Google-Anmeldedaten in irgendwelchen Apps einzugegen, wo sie dann abgegriffen werden können. Soweit ich weiß, ist aber die einzige Gegenmaßnahme die Auswertung des Useragents, was "ganz schlaue Leute" dann natürlich wieder umgehen können, jedenfalls habe ich schon entsprechende Foren-Diskussionen gesehen. Das Risiko ist dann zurecht, dass Google seine Erkennung verbessert und die Applikation aussperrt. Bei einer Applikation mit breiter Benutzerbasis sollte man sich an die Vorgaben halten. Wenn es aber wie hier um eine interne Applikation und nicht um Google geht, muss man es abwägen. Microsoft zeigt selbst z.B. für die Anmeldung in Outlook einen eingebetteten Browser an.

Aber das Problem mit den vielen Browser-Tabs nach dem Login sollte in diesem Fall eigentlich gar nicht auftreten. Eine einmalige Anmeldung sollte je nachdem wie lange das Refresh-Token gültig ist, genügen.

Wenn Du eine mit OAuth abgesicherte API testen willst, kannst Du beim Request (oder auf der Collection) bei Authorization einstellen das Du OAuth 2.0 haben willst.
Dann kannst Du bei der Konfiguration weiter unten sagen: Authorize using Browser und dann wird die Callback-Url automatisch auf "https://oauth.pstmn.io/v1/callback" gesetzt.
Auf den Postman-Server verbindet sich Deine Postman-Instanz dann im Hintergrund und bekommt der dann die Daten, die mittels des Browsers an den pstmn.io-Server übertragen werden. Da das natürlich viele Leute gleichzeitig machen muss der Server dann rausfinden welche Postman-Instanz welche Callback-Daten bekommt, das dürfte sehr wahrscheinlich anhand des State-Parameters passieren.
Danke! Das schaue ich mir mal genauer an. Mir leuchtet nicht so recht ein, warum sie das so machen. Eine offizielle Lösung für das Anbinden von lokalen Applikationen ist das jedenfalls nicht. Vielleicht geht es hier eher um das Testen von Web-Applikationen und ist eben ein Workaround, damit man diese auch mit einem lokal installierten Postman testen kann?
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.613 Beiträge
 
#2

AW: OAuth2 erste Schritte

  Alt 4. Nov 2022, 08:58
Vermutlich. Ist auch eher für manuelle Tests gedacht. Für automatisierte Tests kann man ja auch keine Auth verwenden die einen Benutzer erfordert
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.199 Beiträge
 
Delphi 12 Athens
 
#3

AW: OAuth2 erste Schritte

  Alt 5. Nov 2022, 00:28
Wenn ich es richtig verstanden hab, dann
* bekommt man vom OAuth-Provider eine URL für's "externe" Einloggen
* * die wird/kann z.B. im Browser geöffnet werden (müsste auch im TWebBrowser möglich sein) ... sollte/darf halt nicht "direkt" in deinem Programm gemacht werden, damit die Anmeldung von dir unabhängig ist
* * da wiederrum könnte über den Provider z.B. auch 2FA über anderes Gerät eingeholt werden
* als Rückgabe gibt man dem auch wieder eine URL mit (offiziell hast du ja keinen direkten Zugriff auf die aufgerufene Webseite und was sie zurück bekommt)
* * das kann z.B. eine öffentliche Webseite/Server von dir sein, oder auch auf localhost, an die dann das Token übergeben wird, nach erfolgreicher Anmeldung
* und mit dem Token kannst du dann eine Weile lang was machen
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 5. Nov 2022 um 00:37 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.613 Beiträge
 
#4

AW: OAuth2 erste Schritte

  Alt 7. Nov 2022, 07:37
So, jetzt hab ich da nochmal drüber nachgedacht.

Es gibt für solche Fälle, also die initiale Auth für Hintergrund-Dienste, aber auch um Geräte einzuloggen die keine gute/direkte Eingabemöglichkeit für die Benutzer-Credentials anbieten, noch weitere Grant-Types (flows) die man verwenden kann.

Das eine ist der Device-Code Flow. Das benutzt z.B. die Amazon Prime Video App auf Samsung TVs oder auch die Youtube-App auf Samsung TVs. Die Anwendung kommuniziert zuerst mit dem IdP und generiert einen Device Code. Meist 5-Stellig Alphanumerisch. Den und die Url zum IdP zeit die Anwendung dann dem User an. Meist gibts noch einen QR-Code der den Code schon direkt drin hat dazu.

Der Benutzer geht dann - auf einem anderen Gerät, z.B. auf seinem Smartphone - auf diese Login-Seite bei Amazon bzw. Youtube oder öffnet den QR-Code (dahinter steckt die URL meist schon mit dem Code). Er meldet sich dort an, gibt den Device-Code ein wenn er nicht schon über den QR-Code reingekommen ist, und währenddessen pollt die Anwendung immer mal wieder den IdP und fragt: Hat er sich schon angemeldet? Hat er sich schon angemeldet? Wenn ja, bekommt sie dann die Tokens zurück.

Das kann man freilich auch direkt auf dem Server/der VM so machen. Die Anwendung startet den Device Code flow und öffnet die URL mit dem Code gleich im lokalen Browser. Der Rück-Kanal ist dann aber eben nicht das aufmachen eines lokalen Webservers oder das registrieren eines eigenen Protokolls, sondern eben das pollen beim IdP.

Die zweite Methode ist CIBA (Client initiated backchannel authentication), aber damit habe ich mich ehrlich gesagt noch nicht weiter beschäftigt. https://openid.net/specs/openid-clie...1_0-final.html
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  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 06:23 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