![]() |
TNetHTTPClient.post -> Fehler beim Abrufen des Sitzungs-Handle
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; |
AW: TNetHTTPClient.post -> Fehler beim Abrufen des Sitzungs-Handle
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 ![]() 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. :freak: |
AW: TNetHTTPClient.post -> Fehler beim Abrufen des Sitzungs-Handle
Liste der Anhänge anzeigen (Anzahl: 1)
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 |
AW: TNetHTTPClient.post -> Fehler beim Abrufen des Sitzungs-Handle
Zitat:
![]() Die Delphi-Komponente wertet die Zusatzinfos garnicht aus (nur Fehler oder nicht). Aber wie im ![]() Vielleicht kann man auf Seite des Servers, in dessen Logs, etwas finden? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:02 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz