AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign SOAP THttpReqResp mit Certificate (Windows CertStore scsUser)
Thema durchsuchen
Ansicht
Themen-Optionen

SOAP THttpReqResp mit Certificate (Windows CertStore scsUser)

Ein Thema von atari1040 · begonnen am 2. Feb 2023 · letzter Beitrag vom 24. Jan 2024
Antwort Antwort
Seite 3 von 4     123 4      
atari1040

Registriert seit: 18. Mai 2022
Ort: Nur der HSV
113 Beiträge
 
FreePascal / Lazarus
 
#21

AW: SOAP THttpReqResp mit Certificate (Windows CertStore scsUser)

  Alt 14. Apr 2023, 20:13
Ich hatte die leise Hoffnung, dass mit einer neuen Delphi Version der direkte Zugriff auf den CertStore irgendwie einfacher geworden ist.
In Delphi 11 gibt es aufgrund meines Tickets neue Eigenschaften für die Clientzertifikat-Authentifikation:
https://quality.embarcadero.com/browse/RSP-34451

Mit Zertifikaten aus dem Store ging es über das entsprechende Event aber auch vorher problemlos (HTTPRIO.HTTPWebNode.OnNeedClientCertificate). Ich wollte die Zertifikate aber nicht in den Store packen müssen.
Gibt es eigentlich irgendwo Beispiele zum laden eines Zertifikats als File? Ich lese in Deinem Ticket, dass es jetzt funktionieren soll, finde aber nicht ein Beispiel wie es geladen wird.
Reinhard
Garbage Collector ... Delphianer erzeugen keinen Müll, sie kaufen und lizensieren ihn sogar
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.582 Beiträge
 
Delphi 11 Alexandria
 
#22

AW: SOAP THttpReqResp mit Certificate (Windows CertStore scsUser)

  Alt 15. Apr 2023, 23:27
Gibt es eigentlich irgendwo Beispiele zum laden eines Zertifikats als File? Ich lese in Deinem Ticket, dass es jetzt funktionieren soll, finde aber nicht ein Beispiel wie es geladen wird.
Was sollte das für ein Beispiel sein? Du setzt die dafür neu hinzugekommene Property (ich glaube die heißt ClientCertFilename oder so, kann gerade nicht nachschauen) und das war es.

Das war leider die einfallsloseste Variante, um das Ticket zu lösen. Mit etwas mehr Einfallsreichtum hätte man auch meinen Hinweisen folgend eine umfassende und deutlich schönere Lösung machen können. Aber ich bin schon froh, dass es nun das gibt.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
atari1040

Registriert seit: 18. Mai 2022
Ort: Nur der HSV
113 Beiträge
 
FreePascal / Lazarus
 
#23

AW: SOAP THttpReqResp mit Certificate (Windows CertStore scsUser)

  Alt 16. Apr 2023, 08:34
Gibt es eigentlich irgendwo Beispiele zum laden eines Zertifikats als File? Ich lese in Deinem Ticket, dass es jetzt funktionieren soll, finde aber nicht ein Beispiel wie es geladen wird.
Was sollte das für ein Beispiel sein? Du setzt die dafür neu hinzugekommene Property (ich glaube die heißt ClientCertFilename oder so, kann gerade nicht nachschauen) und das war es.

Das war leider die einfallsloseste Variante, um das Ticket zu lösen. Mit etwas mehr Einfallsreichtum hätte man auch meinen Hinweisen folgend eine umfassende und deutlich schönere Lösung machen können. Aber ich bin schon froh, dass es nun das gibt.
Es liegt sicherlich an mir und ich bin total blind. Wir sprechen von Delphi 11.3 und HTTPRIO? Ich finde nix mit ClientCertFilename oder einer ähnlich lautenden Property. Auch Google verrät mir nichts über das neue und bestens gehütete Geheimnis dieses neuen Features.

Nachtrag: über Code Completion wird mir HTTPRIO1.HTTPWebNode.ClientCertificate.Filename natürlich nicht angezeigt aber im Objektinspektor habe ich es schon mal gefunden. Danke
Reinhard
Garbage Collector ... Delphianer erzeugen keinen Müll, sie kaufen und lizensieren ihn sogar

Geändert von atari1040 (16. Apr 2023 um 08:56 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.582 Beiträge
 
Delphi 11 Alexandria
 
#24

AW: SOAP THttpReqResp mit Certificate (Windows CertStore scsUser)

  Alt 16. Apr 2023, 10:54
Nachtrag: über Code Completion wird mir HTTPRIO1.HTTPWebNode.ClientCertificate.Filename natürlich nicht angezeigt aber im Objektinspektor habe ich es schon mal gefunden. Danke
Ich habe auch nachgeschaut:
Delphi-Quellcode:
uses
  Soap.SOAPHTTPTrans;

procedure TForm21.Test;
begin
  TClientCertExt(HTTPRIO1.HTTPWebNode.ClientCertificate).FileName := 'blub';
end;
Wie gesagt, schön finde ich die Lösung nicht, auch wenn sie viel neu implementiert haben. Dass es z.B. Interfaces gibt, wird aber leider an einigen Stellen, an denen es sehr sinnvoll wäre, vergessen. Und an das Handle der Verbindung kommt man weiterhin nicht heran, so dass andere Dinge weiter nur über dreckigere Wege gehen.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!

Geändert von jaenicke (16. Apr 2023 um 10:56 Uhr)
  Mit Zitat antworten Zitat
atari1040

Registriert seit: 18. Mai 2022
Ort: Nur der HSV
113 Beiträge
 
FreePascal / Lazarus
 
#25

AW: SOAP THttpReqResp mit Certificate (Windows CertStore scsUser)

  Alt 16. Apr 2023, 11:21
Vielen Dank!!!!
Reinhard
Garbage Collector ... Delphianer erzeugen keinen Müll, sie kaufen und lizensieren ihn sogar
  Mit Zitat antworten Zitat
Bbommel

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

AW: SOAP THttpReqResp mit Certificate (Windows CertStore scsUser)

  Alt 21. Nov 2023, 17:49
Hi zusammen,

ich muss mal dieses etwas ältere Thema aufmachen, weil mir gerade auch zum ersten Mal ein Webservice über den Weg läuft, der mit Client-Zertifikaten arbeitet. Allerdings geht es bei uns um einen REST-, nicht um einen SOAP-Service.

Sehe ich das richtig, dass die in D11 offenbar umgesetzte Lösung zwar für SOAP funktionieren würde, aber es für REST nichts vergleichbares gibt und man ein Zertifikat in den Zertifikatsspeicher laden müsste? Oder übersehe ich in den REST-Komponenten irgendwas?
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.582 Beiträge
 
Delphi 11 Alexandria
 
#27

AW: SOAP THttpReqResp mit Certificate (Windows CertStore scsUser)

  Alt 21. Nov 2023, 18:32
Das sollte auch mit Rest gehen. Die Umsetzung passierte in den Http-Komponenten dahinter.

In jedem Fall geht es manuell, wenn man via Pointer das Handle der Verbindung extrahiert und dort das Zertifikat manuell setzt. So habe ich es bei 10.4 gelöst.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Bbommel

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

AW: SOAP THttpReqResp mit Certificate (Windows CertStore scsUser)

  Alt 22. Nov 2023, 09:59
Danke dir für die schnelle Antwort. Mit dem TRESTClient geht das dann leider nicht so einfach, weil der zugehörige eigentliche HTTP-Client "doppelt" in "private"-Feldern steckt. Doppelt, weil im TRESTClient zunächst im private-Bereich ein eigenes TRESTHTTP steht und erst das hat dann, auch wieder im "private", das eigentliche THTTPClient. Ist auch immer ein großer und etwas verwirrender Spaß beim Debuggen. Aber da kommt man so einfach nicht dran, wenn man nicht mit einer gepatchen Version der REST.HttpClient-Unit arbeiten will.

Vielleicht würde die von dir erwähnte Variante mit dem Pointer auf das Handle der Verbindung gehen, aber irgendwie stehe ich da gerade ehrlich gesagt etwas auf dem Schlauch - an das Handle der Verbindung käme ich ja auch nicht, wenn das alles so private ist, oder?

Naja, es wird wohl auch erstmal damit gehen, dass wir im konkreten Fall die Zertifikate in den Winodws-Zertifikatsspeicher kippen. Aber anders wäre schon schöner. Und die Linux-Seite habe ich mir noch gar nicht angeschaut.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.582 Beiträge
 
Delphi 11 Alexandria
 
#29

AW: SOAP THttpReqResp mit Certificate (Windows CertStore scsUser)

  Alt 22. Nov 2023, 10:42
Das meinte ich mit Pointern. Die konkrete Implementierung liegt leider unter implementation in System.Net.HttpClient.Win.pas, so dass man mit RTTI usw. nicht so einfach weiter kommt (ja, man könnte den ClassType verwenden, aber am Ende habe ich es lieber manuell gemacht). Man kann aber im Debugger ausrechnen oder im Speicher manuell nachschauen, wie viele Bytes das Feld von der Adresse des Objekts entfernt ist. Dann kann man das Feld an der Adresse auslesen. So kommt man dann darüber an das Handle in diesem Objekt. Um an den HttpClient zu kommen, kann man auch so vorgehen oder es dort mit der RTTI machen, denn die sollte dort verfügbar sein.

Natürlich muss man solche Tricks gut dokumentieren und per IFDEF auf geprüfte Delphiversionen absichern, so dass es bei einer neuen Version an der Stelle einen Fehler gibt. Dann muss man die Position der Felder mit der Version zuerst prüfen.

Ab Delphi 11 kann man dann einfach TRESTHTTPExt statt TRESTHTTP verwenden, wo man entsprechende Felder zum Übergeben des Zertifikats hat. Die entsprechende Funktionalität war bereits in Delphi 10.4 vorhanden, aber leider nicht erreichbar...
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!

Geändert von jaenicke (22. Nov 2023 um 10:46 Uhr)
  Mit Zitat antworten Zitat
Bbommel

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

AW: SOAP THttpReqResp mit Certificate (Windows CertStore scsUser)

  Alt 22. Nov 2023, 16:06
Hm, TRESTHTTPExt kann ich bei mir nicht finden. Ist das ein Record Helper, den die erst in D11.3 eingebaut haben? Wir sind noch mit 11.2 unterwegs. Oder ich stelle mich zu blöd an.

Aber in D12 ist "ClientCertificatePath", "ClientCertificatePassword" und "ClientCertificateStream" tatsächlich eine public Eigenschaft vom TRESTClient - die scheinen da also etwas aufgeräumt zu haben. Insofern Danke, dass du damals das Ticket erstellt und mich gerade in die richtige Richtung geschubst hast.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


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 09:28 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