AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke TNetHTTPClient.post -> Fehler beim Abrufen des Sitzungs-Handle
Thema durchsuchen
Ansicht
Themen-Optionen

TNetHTTPClient.post -> Fehler beim Abrufen des Sitzungs-Handle

Ein Thema von erich.wanker · begonnen am 18. Jan 2023 · letzter Beitrag vom 19. Jan 2023
Antwort Antwort
Benutzerbild von erich.wanker
erich.wanker

Registriert seit: 31. Jan 2008
Ort: im schönen Salzburger Land
460 Beiträge
 
Delphi XE4 Professional
 
#1

TNetHTTPClient.post -> Fehler beim Abrufen des Sitzungs-Handle

  Alt 18. Jan 2023, 20:57
Delphi 10.4 -Es geht um eine ISAPI DLL und OAuth2.0


Hallo
Ich bekomme nach einer Microsoft-Anmeldung via Redirect-Url Parameter .. diese sende ich dann an Microsoft um einen Token zu bekommen damit ich die Mailadresse des Users auslesen kann..

Code:
http := TNetHTTPClient.Create( Self );
.....
Lresponse :=  http.post(  'https://login.microsoftonline.com/organizations/oauth2/v2.0/token', params );

Das funktioniert bei mir auf einen Win10-Stand Anlone PC mit IIS und selbsterzeugten Zertifikat einwandfrei

Aber auf einem Server (in einer Domain) mit IIS 2022 NICHT (Selbst erzeugtes Zertifikat der Organisation) ...

Dort bekomme ich immer den Fehler "Fehler beim Abrufen des Sitzungs-Handle"

An was kann das liegen ???

Danke für Hinweise und Ideen
Erich



PS. Hier der ganze Schnipsel:

Delphi-Quellcode:
CallBackFrom := uniGUIApplication.UniApplication.parameters.Values[ 'oauth2callback' ];
AzureAuthCode := uniGUIApplication.UniApplication.parameters.Values[ 'code' ];
state := uniGUIApplication.UniApplication.parameters.Values[ 'state' ];
CallBackFrom := uniGUIApplication.UniApplication.parameters.Values[ 'oauth2callback' ];

      if ( CallBackFrom = 'azure' )
      then
      begin

        try
          try

            http := TNetHTTPClient.Create( Self );
            params := TStringList.Create;
            params.Add( 'code=' + UniMainModule.AzureAuthCode );
            params.Add( 'client_id=' + C_client_id_Az );
            params.Add( 'client_secret=' + C_client_secret_Az );
            params.Add( 'scope=' + C_scope_Az );
            params.Add( 'redirect_uri=' + C_redirect_uri_Az );
            params.Add( 'grant_type=authorization_code' );

            Lresponse := http.post( 'https://login.microsoftonline.com/organizations/oauth2/v2.0/token', params );


            if Lresponse.StatusText = 'OK'
            then
            begin
              token := GetSimpleValue( Lresponse.ContentAsString,
                'access_token' );
              GToken := stringreplace( token, '"', '', [ rfreplaceall ] );;
              Lresponse := http.get( 'https://graph.microsoft.com/v1.0/me', nil,[ TNetHeader.Create( 'Authorization', 'Bearer ' + GToken ) ] );
              if Lresponse.StatusText = 'OK'
              then
              begin
                UniMainModule.AUserName := stringreplace( GetSimpleValue( Lresponse.ContentAsString,'mail' ), '"', '', [ rfreplaceall ] );
                UniMainModule.LoginType := 2;
              end;

            end;

          Except
            on E : exception do
            begin
              UniMainModule.LoginType := 0;
              UniSession.Log(E.Message);
            end;
          end;

        finally
          http.Free;
          params.Free;

        end;
      end;


    function GetSimpleValue( Jstring, key : string ) : string;
      var
        jv, fv : TJSONValue;
      begin
        Result := '';
        jv := TJSonObject.ParseJSONValue( Jstring );
        fv := jv.FindValue( key );
        if fv <> nil
        then
          Result := fv.ToString;
      end;
Erich Wanker - for life:=1971 to lebensende do begin ..
O
/H\
/ \
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: TNetHTTPClient.post -> Fehler beim Abrufen des Sitzungs-Handle

  Alt 18. Jan 2023, 21:46
Du hast lokal vergessen das Zertifikat zu registrieren?
Wenn nicht: Wie soll es denn dann geprüft werden?

(eventuell kann man irgendwo/irgendwie die Zertifikatprüfung deaktivieren)


Und dann schonmal auf die Idee gekommen nach dieser Fehlermeldung zu suchen?

Tipp: SNetHttpClientHandleError
dann landet mal zwei Mal bei MSDN-Library durchsuchenWinHttpOpen
und dort wäre zu lesen, dass eventuell mindestens TLS 1.2 benötigt wird.

Zu alter WebServer, bzw. nicht passend konfiguriert?




Nja, einmal wird beim WinHttpOpen wieder mal nicht der Fehler komplett ausgewertet (GetLastError + SysErrorMessage),
aber hier kommen eh nur 2 Fehlercodes raus, die hier wohl nicht weiter helfen, aber dennoch wäre es sinnvoll nicht ständig unterschiedliche "Fehler" durch einen nutzlosen Fehlertext zu ersetzen.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (18. Jan 2023 um 21:49 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von erich.wanker
erich.wanker

Registriert seit: 31. Jan 2008
Ort: im schönen Salzburger Land
460 Beiträge
 
Delphi XE4 Professional
 
#3

AW: TNetHTTPClient.post -> Fehler beim Abrufen des Sitzungs-Handle

  Alt 19. Jan 2023, 09:19
Hallo,
Danke für die Hinweise

Server ist ein Windows Server 2022 Standard - 10.0.20348

TLS 1.2 ist am Server aktiviert (laut inetcpl.cpl )
Das Zertifikat ist am Server vorhanden ( in "Trusted Root certification Authorities" / "Certificates" -> Intended Purposes: Server Authentication)

Hättest du noch eine Idee woran es liegen könnte?

Danke
Erich
Miniaturansicht angehängter Grafiken
zertifikat.jpeg  
Erich Wanker - for life:=1971 to lebensende do begin ..
O
/H\
/ \
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: TNetHTTPClient.post -> Fehler beim Abrufen des Sitzungs-Handle

  Alt 19. Jan 2023, 16:07
Hättest du noch eine Idee woran es liegen könnte?
Da der Fehler ja offensichtlich aus dem MSDN-Library durchsuchenWinHttpOpen kommt, hatte ich gehoft er gibt mehr/bessere Fehlerinfos raus.
Die Delphi-Komponente wertet die Zusatzinfos garnicht aus (nur Fehler oder nicht).
Aber wie im MSDN-Library durchsuchenWinHttpOpen zu lesen, gibt es fast keine (dokumentierten) Fehlercodes, welche Einem wenigstens einen Hinweis geben würden.

Vielleicht kann man auf Seite des Servers, in dessen Logs, etwas finden?
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  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 21:25 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