AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke TOAuth2Authenticator - Anforderung eines neuen AccessTokens
Thema durchsuchen
Ansicht
Themen-Optionen

TOAuth2Authenticator - Anforderung eines neuen AccessTokens

Ein Thema von lowmax_5 · begonnen am 28. Okt 2019 · letzter Beitrag vom 29. Okt 2019
Antwort Antwort
lowmax_5

Registriert seit: 9. Mai 2003
Ort: Münster, NRW
258 Beiträge
 
Delphi 11 Alexandria
 
#1

TOAuth2Authenticator - Anforderung eines neuen AccessTokens

  Alt 28. Okt 2019, 14:24
Mit der Komponente TOAuth2Authenticator konnte ich erfolgreich ein AccessToken anfordern.
Dieses hat entsprechend ein AccessTokenExpiry. Wenn dieses abgelaufen ist, kann eine Verbindung mehr herstellt werden. Ich möchte daher ein aktuelles AccessToken anfordern.

Dazu verwendet ich

Code:
  OAuth2Authenticator1.AuthCode := fAccessToken;

  OAuth2Authenticator1.ClientID := ClientId;
  OAuth2Authenticator1.ClientSecret := ClientSecret;
  OAuth2Authenticator1.RedirectionEndpoint := 'http://127.0.0.1';

  OAuth2Authenticator1.ChangeAuthCodeToAccesToken;
Ich bekomme hierbei jedoch immer nur folgende Meldung:

Zitat:
EIdURIException ' Protokollfeld ist leer'
verwende ich die Funktion der Komponente Configure 'Autorisieren' bekomme ich ein neues AccxessToken und eine aktuelle AccessTokenExpiry.

Was mache ich Falsch? Die Doku zu 'ChangeAuthCodeToAccesToken' ist etwas unterdurchschnittlich...



Delphi 10.2.2
  Mit Zitat antworten Zitat
Bbommel

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

AW: TOAuth2Authenticator - Anforderung eines neuen AccessTokens

  Alt 28. Okt 2019, 14:37
Du nutzt die falsche Funktion. Je nach genauer Implementierung von OAuth2 bekommst du bei der Anmeldung zunächst ein "Authorisierungstoken". Dieses Auth-Token muss dann in einem weiteren Schritt gegen das eigentliche Access-Token umgetauscht werden. Genau dafür ist die von dir aufgerufene ChangeAuthCodeToAccesToken eigentlich gedacht und/oder sie muss entsprechend implentiert werden.

Was du hier laut deinem Code aber versuchst: du versuchst das alte Access-Token (jedenfalls nehme ich an, dass das in fAccessToken steht) mit dieser Funktion in ein neues Access-Token umzutauschen. Das wird nicht funktionieren, denn dafür ist diese Funktion und die zugehörige API nicht da.

Oftmals gibt es bei OAuth2 ein Refresh-Token. Das ist genau dafür da, um mit ihm ohne neue Benutzer-Anmeldung im Hintergrund ein neues Access-Token abzufragen. Das Refresh-Token sollte auch im TOAuth2Authenticator gespeichert sein, wenn ich mich recht entsinne. Die API, wie man ein RefreshToken in ein neues AccessToken umtauschen kann, sollte von deinem Auth-Anbieter dokumentiert sein und die müsstest du dann ggf. noch implentieren.
  Mit Zitat antworten Zitat
lowmax_5

Registriert seit: 9. Mai 2003
Ort: Münster, NRW
258 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: TOAuth2Authenticator - Anforderung eines neuen AccessTokens

  Alt 28. Okt 2019, 22:39
Vielen Dank für die ausführliche Antwort und die Beschreibung des Prozessflows. Wenn ich Dich richtig verstehe, ist die oAuth2-Komponente noch nicht 'Vollständig' und muss auf den jeweiligen Anwendungsfall/API dann noch angepasst werden.
  Mit Zitat antworten Zitat
Bbommel

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

AW: TOAuth2Authenticator - Anforderung eines neuen AccessTokens

  Alt 29. Okt 2019, 08:15
Genau. Da OAuth2 kein ganz exaktes Protokoll vorgibt und sich die Anbieter da im Detail unterscheiden können, muss man einiges in einer Anbieter-spezifischen Ableitung der Klasse selbst umsetzen.

So sagt es auch die Delphi-Hilfe:
====
Implementiert eine grundlegende OAuth2-Authentifizierung.

TOAuth2Authenticator implementiert eine grundlegende OAuth2-Authentifizierung.TOAuth2Authenticator bietet eine minimale Unterstützung und stellt die Infrastruktur gemäß des Workflows des Dienstanbieters bereit.

Leiten Sie von dieser Klasse eigene ab, um spezifische Authentifikatorklassen für bestimmte Dienstanbieter zu erstellen.
====
(http://docwiki.embarcadero.com/Libra...2Authenticator)
  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 00:26 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