[C#] WebServices mit Zertifikat zur Authorisierung

6. Juni 2011 16:23

Ich habe schon den MSDN-Walkthrough zu diesem Thema durchgearbeitet.

Ich kann die Seite https://localhost:7047/DynamicsNAV/ws/Services?wsdl auch aufrufen.

Jetzt wollte ich diesen Webservice über https auch über eine dafür geschriebene kleine Testanwendung in C# aufrufen. Die WebReferenz "SSLWebServiceTest" habe ich mit o.g. Adresse hinzugefügt. Allerdings mit Ach und Krach, weil mein Zertifikat als nicht sicher genug eingestuft wird (mehrere Meldungen erschienen, dass es unsichere Elemente gibt u.ä.).
Folgender Code ist in der C#-Anwendung:

Code:
namespace WebServiceTest
{
    using SSLWebServiceTest;
...
...
WebServiceTest NavCU = new WebServiceTest();
textBox2.Text = NavCU.ConvertStrToUpperCase(textBox1.Text);
...
}



Aber da bekomme ich leider die http-Exception 401 "Not Authorized".

Vorher, als ich es einfach mit einer normalen http-Web-Referenz probiert hatte, funktionierte es noch mit dem zusätzlichen Befehl
NavCU.UseDefaultCredentials = true;

Muss ich der NavCU-Variable evtl. noch sagen, dass sie Zertifikats-Authentifizierung benutzen soll statt http-Authentifizierung, wenn ja, wie?

Re: [C#] WebServices mit Zertifikat zur Authorisierung

7. Juni 2011 10:47

InfoWissler hat geschrieben:Ich habe schon den MSDN-Walkthrough zu diesem Thema durchgearbeitet.

Ich kann die Seite https://localhost:7047/DynamicsNAV/ws/Services?wsdl auch aufrufen.

Jetzt wollte ich diesen Webservice über https auch über eine dafür geschriebene kleine Testanwendung in C# aufrufen. Die WebReferenz "SSLWebServiceTest" habe ich mit o.g. Adresse hinzugefügt. Allerdings mit Ach und Krach, weil mein Zertifikat als nicht sicher genug eingestuft wird (mehrere Meldungen erschienen, dass es unsichere Elemente gibt u.ä.).
Folgender Code ist in der C#-Anwendung:

Code:
namespace WebServiceTest
{
    using SSLWebServiceTest;
...
...
WebServiceTest NavCU = new WebServiceTest();
textBox2.Text = NavCU.ConvertStrToUpperCase(textBox1.Text);
...
}



Aber da bekomme ich leider die http-Exception 401 "Not Authorized".

Vorher, als ich es einfach mit einer normalen http-Web-Referenz probiert hatte, funktionierte es noch mit dem zusätzlichen Befehl
NavCU.UseDefaultCredentials = true;

Muss ich der NavCU-Variable evtl. noch sagen, dass sie Zertifikats-Authentifizierung benutzen soll statt http-Authentifizierung, wenn ja, wie?


Müsste das nicht in der Settings-Datei recht weit unten stehen?
Die Codeunit wird stumpf angesteuert, die Rechteverwaltung übernimmt NAV selbst.

Re: [C#] WebServices mit Zertifikat zur Authorisierung

7. Juni 2011 15:05

Wenn du damit

2.Change the value of the WebServiceSSLEnabled parameter from false to true. Save the file, and then close the editor.

meinst; das habe ich gemacht.


Ich glaube, es liegt einfach daran, dass ich ein vernünftiges Zertifikat bräuchte, bei dem auch keine Fehlermeldung kommt ("Dieses Zertifikat wurde nicht für diese Website ausgestellt" o.ä.).

Naja, unter dem msdn-Walkthrough steht ja, dass die WebServices ansonsten genauso zu benutzen sind, also würde ich einfach im echten Implementierungsfall dem Kunden sagen, dass er ein entsprechendes Zertifikat von einem Drittanbieter kaufen muss für die URL https://<servername>:7047/DynamicsNAV/WS/services, richtig?