Bonjour,
Je fais un appel à un WebServices, lors de cette appel je dois utiliser un certificat pour m'authentifier.
Quand je fais le test avec IE, IE me propose de choisir un certificat dans une boite de dialogue. Je choisi le bon certificat et le serveur me retourne bien une réponse.
Par contre, quand je le fais en .Net, j'ai une 403 retourné lors de la demande "req.GetResponse()".
Voici le code que j'utilise pour faire l'appel au webservices. Dans le code vous trouvez également l'appel du certificat dans le magasin des certificats.
Merci pour votre aide ou toutes pistes m'aidant à avancer.
System.Net.
CookieContainer
cookieContainer =
new
System.Net.
CookieContainer
();
string
ServiceUrl =
https://XXXXX
;
System.Net.HttpWebRequest req = System.Net.WebRequest.Create(ServiceUrl) as System.Net.HttpWebRequest;
System.Net.HttpWebResponse resp = null;
X509Store
store =
new
X509Store
(
StoreName
.My,
StoreLocation
.CurrentUser);
store.Open(OpenFlags.ReadOnly);
X509Certificate2Collection
CertList = store.Certificates.Find(
X509FindType
.FindBySerialNumber,
"XX"
,
false
);
req.ClientCertificates.Add(CertList[0]);
req.KeepAlive = true;
string
soapEnvelope = _generateSOAP();
req.ContentType =
"text/xml"
;
req.Headers.Add("SOAPMethodName", "getData");
req.ContentLength = soapEnvelope.Length;
req.Method = "POST";
req.Timeout = 10 * 1000;
System.IO.StreamWriter streamWriter = new System.IO.StreamWriter(req.GetRequestStream());
streamWriter.Write(soapEnvelope);
streamWriter.Close();
string
test =
string
.Empty;
try
{
resp = req.GetResponse()
as
System.Net.
HttpWebResponse
;System.IO.
Stream
stream = resp.GetResponseStream();test = stream.ToString();
stream.Close();
}
catch
(System.Net.
WebException
e){
throw
e;}