For the last 5 months+ we were able to do XMLHTTP requests from our web server to the Concur API via server.Createobject("MSXML2.ServerXMLHTTP") no problem, but now we are getting this error message:
msxml3.dll error '80072f0c'
A certificate is required to complete client authentication
Can you think of a security change the server receiving these requests might have made to not allow these API requests to work anymore via ServerXMLHTTP? Or anything we could do on sending server side to make it work? We can still hit other API's from our sending server no problem.
From my local computer, I am able to do a Postman request to this same API that is generating the "certificate is required" message and Postman processes it no problem.
Our TLS certificate supports both client and server authentication according to its "Enhanced Key Usage". The error occurs on our Windows 2008R2 server where the certificate is stored and on a sandbox Windows 2012 server with no client certificate. Here's the vbscript snippet:
EndPoint = "https://us.api.concursolutions.com/oauth2/v0/otp"
Payload = "client_id=" & consumerKey & "&client_secret=" & consumerSecret & "&channel_handle=" & Email & "&channel_type=email"
Payload = Payload & "&link=" & link & "&name=" & name & "&company=" & company
Dim xmlhttp
Set xmlhttp = Createobject("MSXML2.ServerXMLHTTP.6.0")
'Get error message with or without the next 3 lines
XMLhttp.setOption(2) = 13056
strCert = "Friendly Name"
XMLhttp.setOption(3)= "LOCAL_MACHINE\My\" & strCert
XMLhttp.Open "POST",EndPoint,false
XMLhttp.setRequestHeader "User-Agent","HTTP/1.1"
XMLhttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded; charset=utf-8"
XMLhttp.setRequestHeader "Accept", "application/json"
XMLhttp.setRequestHeader "Host", "us.api.concursolutions.com"
XMLhttp.setRequestHeader "Connection", "close"
XMLhttp.setRequestHeader "Content-Length", "437"
XMLhttp.send Payload