AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language OAuth2-Fenster öffnen und Redirect-Url abfangen

OAuth2-Fenster öffnen und Redirect-Url abfangen

Offene Frage von "Tobsn01"
Ein Thema von Tobsn01 · begonnen am 25. Aug 2021 · letzter Beitrag vom 26. Aug 2021
Antwort Antwort
Tobsn01

Registriert seit: 24. Aug 2021
6 Beiträge
 
#1

OAuth2-Fenster öffnen und Redirect-Url abfangen

  Alt 25. Aug 2021, 14:54
Delphi-Version: 5
Hallo mal wieder, liebe Delphi-Praxis

Und zwar wollte ich euch mal um eure Meinung fragen:

Ich habe ein Programm, das eine Api verwenden soll. Bei dieser Api muss man sich jedoch mittels

OAuth anmelden. Jedoch geht das nicht mit einer einfachen Post-Abfrage:

Man hat eine Url, welche man in einem Browserfenster öffnet. In diesem Fenster drückt man dann

einen Button, der zu einer weiteren Url weiterleitet.

Ich benötige am Ende die Url, an die der Nutzer weitergeleitet wird, da darin ein Code enthalten ist.

Ich habe mal ein bisschen rumgespielt und es bisher so umgesetzt:

Die Url wird über shellExecute mit dem Browser geöffnet, und ein IdHttpServer wird gestartet (die redirect url ist nämlich ne LocalHost url).

so kann ich nun den redirect auf meinen Server abfangen und den Code aus der Url auslesen. Das ist aber leider alles irgendwie etwas unschön.

Ich habe mich dann mal etwas erkundigt und herausgefunden, dass es ja sowas wie eine BrowserKomponente in Delphi gibt. Jetzt zu meiner

eigentlichen Frage:

Kann man obiges auch darin umsetzen, um mehr Kontrolle über den Ablauf zu erhalten? Sowas wie ein 'warte, solange noch kein redirekt stattgefunden hat',
'lese url', 'schließe browserfenster'? ^^

Damit wäre alles (irgendwie) in einer Funktion und ich müsste nicht über gewaltige Umwege den Code wieder in das Hauptprogramm einschleusen.

MFG, Tobsn
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

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

AW: OAuth2-Fenster öffnen und Redirect-Url abfangen

  Alt 25. Aug 2021, 15:06
Ich habe mich dann mal etwas erkundigt und herausgefunden, dass es ja sowas wie eine BrowserKomponente in Delphi gibt. Jetzt zu meiner

eigentlichen Frage:

Kann man obiges auch darin umsetzen, um mehr Kontrolle über den Ablauf zu erhalten? Sowas wie ein 'warte, solange noch kein redirekt stattgefunden hat',
'lese url', 'schließe browserfenster'? ^^
Siehe erst einmal meine Antwort hier: https://www.delphipraxis.net/1492957-post11.html
Kurzum: Nein. Die OAuth-Spezifikation ist da extrem eindeutig und sagt: Nimm den Default-Browser des Systems. Der IDP kann (und sollte) darüber hinaus versuchen, die Nutzung von Embedded Browsern aktiv zu verhindern.

Eine andere Lösung (ggf. elegantere Lösung) wäre, dass Du für Deine Anwendung ein custom Url-Schema registrierst. z.B.: meinProgramm://auth?code=xyz
Diese custom url trägst Du dann im IDP ein. Hat auch den Vorteil, dass Du keinen HttpListener aufmachen musst und der redirect nicht auf eine unsichere, nicht-https-Url geht.

Der Browser bekommt den redirect auf diese Url, und Windows (oder Linux oder macOS oder Android oder iOS, geht ja Plattformübergreifend) ruft dann Dein Programm mit dieser Url als Parameter auf. Die neu gestartete Instanz kann dann deiner laufenden Instanz z.B. über Shared Memory oder Named Pipes oder ähnliches eine Nachricht mit der Antwort vom IDP schicken.
Sebastian Gingter
Phoenix - 不死鳥
Mein Blog: http://gingter.org
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.415 Beiträge
 
Delphi XE5 Professional
 
#3

AW: OAuth2-Fenster öffnen und Redirect-Url abfangen

  Alt 25. Aug 2021, 15:07
Versuchst du den Code Flow einzubauen oder welche Flow möchtest du umsetzen?

https://curity.io/resources/learn/oauth-code-flow/
https://youtu.be/7D-OU4hZW70
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott

Geändert von generic (25. Aug 2021 um 15:10 Uhr)
  Mit Zitat antworten Zitat
Tobsn01

Registriert seit: 24. Aug 2021
6 Beiträge
 
#4

AW: OAuth2-Fenster öffnen und Redirect-Url abfangen

  Alt 25. Aug 2021, 15:38
@generic Naja ich möchte von Discord meine Testapplication automatisch laufen lassen. Dazu muss ich jedoch mich immer authentifizieren, was nur über den Browseransatz geht.

@Phoenix das hört sich nach einem sehr viel besseren Ansatz an Ich kenne zwar insgesamt das Prinzip dahinter, jedoch hab ich von der Umsetzung gar keine Ahnung. Gibt es irgendwo ein gutes

Nachschlagewerk? Am besten auch mit Beispielen ^^.
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.415 Beiträge
 
Delphi XE5 Professional
 
#5

AW: OAuth2-Fenster öffnen und Redirect-Url abfangen

  Alt 26. Aug 2021, 14:10
Kennst du diese Seite?
https://discord.com/developers/docs/topics/oauth2

Dort werden auch die Flows nochmal einzeln erwähnt.
Ich lese bei dir gerade etwas den Client Credentials Grant raus.
Aber genau könnte man es nur sagen, was du genau bauen willst.
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
Tobsn01

Registriert seit: 24. Aug 2021
6 Beiträge
 
#6

AW: OAuth2-Fenster öffnen und Redirect-Url abfangen

  Alt 26. Aug 2021, 14:26
Ja, ich hab mich in letzter Zeit etwas mit der Seite beschäftigt.

Jedoch muss ich leider sagen, ist mein Projekt in einer sehr tiefen Schublade verschwunden

Ich wollte eigentlich den Client, der auf dem PC läuft, steuern. Heißt sowas wie Nutzer muten oder entmuten.

Jedoch habe ich herausgefunden, dass man das eher mit einer Websocketverbindung macht, da jeder Client local einen entsprechenden hostet.

Da ich jedoch nicht wirklich herausfinden konnte, wie man sich mit delphi recht fix auf einen Websocket verbindet, hab ich das Projekt

erstmal beiseite gelegt, und steuere solange die Aktionen über Hotkeys.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 02:47 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