Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi 11.3 Änderung im OAuth2 Microsoft Graph Api (https://www.delphipraxis.net/212730-delphi-11-3-aenderung-im-oauth2-microsoft-graph-api.html)

oakley 22. Mär 2023 18:31

Delphi 11.3 Änderung im OAuth2 Microsoft Graph Api
 
Hallo zusammen,

hat sich irgendwas in der OAuth2 Komponente in Delphi 11.3 geändert?
Ich bekomme einen Auth Code und will damit meinen Token abrufen.
Der Code wird in der Variablen FAuthCode gespeichert.

Ich verwende folgenden Code:

Delphi-Quellcode:
  LClient := TRestClient.Create(OA.AccessTokenEndpoint);
  try
    LCLient.Authenticator := OA;
    LClient.BaseURL := 'https://login.microsoftonline.com/07a9e2f0-5a0e-406c-a7ff-7b3ab1976b0e/oauth2/v2.0/token';
    LRequest := TRESTRequest.Create(LClient);
    LRequest.Method := TRESTRequestMethod.rmPOST;

    LRequest.AddAuthParameter('client_id', OA.ClientID, TRESTRequestParameterKind.pkREQUESTBODY);
    LRequest.AddAuthParameter('scope', OA.scope, TRESTRequestParameterKind.pkREQUESTBODY);
    LRequest.AddAuthParameter('code', FAuthCode, TRESTRequestParameterKind.pkREQUESTBODY);
    LRequest.AddAuthParameter('redirect_uri', OA.RedirectionEndpoint, TRESTRequestParameterKind.pkREQUESTBODY);
    LRequest.AddAuthParameter('grant_type', 'authorization_code', TRESTRequestParameterKind.pkREQUESTBODY);

    LRequest.Execute;

    if LRequest.Response.GetSimpleValue('access_token', LToken) then
      FAccessToken := LToken;

    if LRequest.Response.GetSimpleValue('refresh_token', LToken) then
      FRefreshToken := LToken;

    if LRequest.Response.GetSimpleValue('token_type', LToken) then
      FTokenType := OAuth2TokenTypeFromString(LToken);

    if LRequest.Response.GetSimpleValue('expires_in', LToken) then
    begin
      LIntValue := StrToIntdef(LToken, -1);
      if (LIntValue > -1) then
        FAccessTokenExpiry := IncSecond(Now, LIntValue)
      else
        FAccessTokenExpiry := 0.0;
    end;
    if (FAccessToken <> '') then FAuthCode := '';

    OA.AccessToken := FAccessToken;
    OA.RefreshToken := FRefreshToken;
  finally
    LClient.DisposeOf;
  end;
Ich bekomme allerdings unter Delphi 11.3 einen 400 BadRequest. Wenn ich das gleiche Programm in 11.2 kompiliere läuft es einwandfrei durch.

LG

Mirko

Union 22. Mär 2023 19:09

AW: Delphi 11.3 Änderung im OAuth2 Microsoft Graph Api
 
OA ist was? TOAuth2Authenticator?

oakley 22. Mär 2023 19:16

AW: Delphi 11.3 Änderung im OAuth2 Microsoft Graph Api
 
Ja genau TOAuth2Authenticator.

LG

Mirko

Union 22. Mär 2023 19:16

AW: Delphi 11.3 Änderung im OAuth2 Microsoft Graph Api
 
Wo wird der Wert für response_type gesetzt? Und was ist der Fehlercode (error) der mit der 400er Response geliefert wird? Z.b.;

AADSTS900561: The endpoint only accepts POST, OPTIONS requests. Received a GET request.

oakley 22. Mär 2023 19:26

AW: Delphi 11.3 Änderung im OAuth2 Microsoft Graph Api
 
Den response_type habe ich hier gar nicht definiert, hat aber bis jetzt einwandfrei funktioniert.
Ich muss morgen nochmal nach dem 400er Fehler schauen, ich habe hier nur Version 11.2 installiert.

LG

Mirko

Union 22. Mär 2023 19:28

AW: Delphi 11.3 Änderung im OAuth2 Microsoft Graph Api
 
Hier steht, dass dieser Parameter zwingend angegeben werden muss. Der Artikel ist vom Januar dieses Jahres.

oakley 22. Mär 2023 19:33

AW: Delphi 11.3 Änderung im OAuth2 Microsoft Graph Api
 
Ja bei der Anfrage für den Auth Code mache ich das auch. Ich habe eine ähnliche URL wie die auf der Seite und auch response_type=code .
Der Fehler tritt bei der Anfrage zum Access Token auf.

LG

Mirko

shebang 23. Mär 2023 07:25

AW: Delphi 11.3 Änderung im OAuth2 Microsoft Graph Api
 
Hier steht, dass du beim Token Refresh den Paramater refresh_token statt code übergeben musst.

oakley 23. Mär 2023 08:26

AW: Delphi 11.3 Änderung im OAuth2 Microsoft Graph Api
 
An der Stelle wo die Webanmeldung kommt muss es code sein, denn ich brauche einen Auth Code, den ich in einen Access_Token und einen Refresh_Token umwandeln kann.

Es kommt unter 11.3 auch kein 400er Fehler wie ich gerade gesehen habe sondern einfach die Meldung: "OAUTH2-Anmeldung ist nicht ordnungsgemäß eingerichet" .
Was bedeutet das?

LG

Mirko

Union 23. Mär 2023 08:28

AW: Delphi 11.3 Änderung im OAuth2 Microsoft Graph Api
 
Woher kommt die Meldung? Vom Microsoft Server in der response, von Delphi oder woher sonst? Und ist das die vollständige Fehlermeldung?


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:13 Uhr.
Seite 1 von 3  1 23      

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