Vanuit VB (of JavaScript) probeer ik een SOAP-service te benaderen met behulp van ServerXMLHTTP.
Die SOAP-webserver is zo ingericht dat authenticatie mogelijk is met een client-certificaat of gewoon via basic authentication (naam/wachtwoord).
Als ik de URL benader met Internet Explorer krijg ik een popupje met de vraag om een client-certificaat te kiezen. Die heb ik niet dus druk ik op escape en komt er een nieuw popupje voor naam/wachtwoord. Die werkt vervolgens prima.
Het clientcertificaat is dus duidelijk optioneel.
Vervolgens probeer ik hetzelfde te doen vanuit mijn code (JavaScript hier maar in VB faalt het op dezelfde manier):
Nu krijgt ik een foutmelding: 'msxml6.dll: An unknown error occurred while processing the certificate.' of 'msxml6.dll: A connection with the server could not be established'.
ServerXMLHTTP krijgt blijkbaar van de SOAP-server de vraag om het certificaat en geeft een foutmelding omdat hij die niet heeft terwijl hij gewoon vervolgens naam/wachtwoord moet gaan proberen.
Noot:
- Ik heb geen toegang tot de instellingen van de webservice.
- WinHTTP.WINHTTPRequest.5.1 maakt geen verschil.
- Let op: deze vraag is over **client** certificaten. `objXMLHTTP.setOption(2) = 13056` helpt alleen om fouten in **server** certificaten te negeren. Dat heb ik hier geprobeerd maar maakt geen verschil.
Die SOAP-webserver is zo ingericht dat authenticatie mogelijk is met een client-certificaat of gewoon via basic authentication (naam/wachtwoord).
Als ik de URL benader met Internet Explorer krijg ik een popupje met de vraag om een client-certificaat te kiezen. Die heb ik niet dus druk ik op escape en komt er een nieuw popupje voor naam/wachtwoord. Die werkt vervolgens prima.
Het clientcertificaat is dus duidelijk optioneel.
Vervolgens probeer ik hetzelfde te doen vanuit mijn code (JavaScript hier maar in VB faalt het op dezelfde manier):
code:
1
2
3
4
5
6
7
8
9
| var objXMLHTTP = new ActiveXObject("MSXML2.ServerXMLHTTP.6.0") // of 4.0 objXMLHTTP.open("POST", "https://www.example.com", false, "username", "password"); objXMLHTTP.setRequestHeader("Content-Type", "text/xml; charset=utf-8"); // objXMLHTTP.setOption(2) = 13056; // Dit helpt niet objXMLHTTP.send(XMLReq); // Dit faalt |
Nu krijgt ik een foutmelding: 'msxml6.dll: An unknown error occurred while processing the certificate.' of 'msxml6.dll: A connection with the server could not be established'.
ServerXMLHTTP krijgt blijkbaar van de SOAP-server de vraag om het certificaat en geeft een foutmelding omdat hij die niet heeft terwijl hij gewoon vervolgens naam/wachtwoord moet gaan proberen.
Noot:
- Ik heb geen toegang tot de instellingen van de webservice.
- WinHTTP.WINHTTPRequest.5.1 maakt geen verschil.
- Let op: deze vraag is over **client** certificaten. `objXMLHTTP.setOption(2) = 13056` helpt alleen om fouten in **server** certificaten te negeren. Dat heb ik hier geprobeerd maar maakt geen verschil.