2012-04-05 5 views
2

Ich habe eine Schnittstelle mit ServiceContract auf Schnittstelle und OperationContract auf allen seinen Methoden erstellt. Ich implementierte diese Schnittstelle in einer Klasse und dann in meiner asp.net Website fügte ich hinzu, dass wcf-Dienst, der eine SVC-Datei erstellt (weil ich es in IIS mit meiner Website hosten wollte). Jetzt ist der Service verfügbar und erreichbar unter http://localhost:8732/webui/webservice/camservice.svc. Jetzt möchte ich Benutzername und Passwort-Authentifizierung für diesen Dienst aktivieren. Ich nehme an, svc verwendet basicHttpBinding, weil ich keine Konfigurationen in meiner web.config vornehmen musste, damit es ausgeführt wird. Wie kann ich die Authentifizierung mit Benutzername/Passwort für diesen Dienst aktivieren? Es gibt viele Artikel im Internet, aber ich glaube, die Sicherheit ist so ein Riese, dass ich keine fokussierte Erklärung für Benutzername/Passwort-Authentifizierung mit der Methode, die ich verwendet habe, bekommen kann. Ich benutze .net 4.0 mit vs 2010wcf Benutzername und Passwort Sicherheit mit basichttpBinding - Message Based

Edit: Ok, ich habe das Problem ein wenig eingeengt. Ich glaube, Nachrichtenebene Sicherheit ist das, was ich brauche, wie

<security mode="Message"> 
       <message clientCredentialType="Certificate" /> 
      </security> 

ich weg für SSL haben könnte, aber für die, werde ich gehen müssen, um für jeden Dienst Aufruf DB und den Benutzer authentifizieren. Was ich bevorzuge, ist, dass ein Client mit gültigem Zertifikat vom Dienst bedient wird. Ich habe eine Menge Informationen von this article. Was es nicht erklärt, ist, wie man das x509-Zertifikat auf dem Client und dem Server einrichtet und wie kann ich kontrollieren, dass nur meine Klienten ein gültiges Zertifikat erwerben können.

+0

Ja WCF-Sicherheit ist ein Riese und wenn Sie gesicherten Service erstellen möchten, müssen Sie zumindest Grundlagen lernen. Zum Beispiel, welche Art von Sicherheit erwarten Sie in Ihrem Service? Wie sollen Benutzername und Passoword transportiert werden? Wie sollte das Passwort gesichert sein? –

+0

Ladislav ich möchte benutzername und passwort sicherheit verwenden. '' erzwingt die Verwendung von ssl. aber ich möchte im zweiten schritt zu ssl gehen. Im ersten Schritt möchte ich nur den Benutzernamen und das Passwort einrichten, die vom Client in der Kopfzeile der Nachricht hinzugefügt und auf dem Server ordnungsgemäß authentifiziert werden. Gibt es einen Sicherheitsmodus, der es mir erlaubt? –

Antwort

4

Wenn Sie Benutzernamen Passwort-Validierung ohne SSL erreichen möchten, können Sie eine so genannte ClearUsernameBinding verwenden, mit der Sie Benutzername/Passwort über http transportieren können.

HINWEIS: Verwenden Sie diese Option nur, wenn sich Ihr Dienst hinter einer Unternehmensfirewall befindet, die Ihrem Server, der Ihren Dienst hostet, genügend Sicherheit bietet.

In Bezug auf die Verwendung von 2-Wege-SSL müssen Sie das Servicezertifikat .pfx auf Ihrem Server installieren, das von einer vertrauenswürdigen Stelle oder einem selbstsignierten Zertifikat im persönlichen Speicherordner des lokalen Computerkontos ausgestellt wurde.

Dann müssen Sie für Clientzertifikate den Client auffordern, eine CER-Datei zu senden und auf Ihrem Server im Speicherordner für vertrauenswürdige Personen auf dem lokalen Computerkonto zu installieren.

Auf dem Clientcomputer müssen Sie das Clientzertifikat .pfx unter Persönlicher Speicherordner des aktuellen Benutzers installieren.

HINWEIS: Bei der Verwendung von selbst signiertes Zertifikat auf dem Server dann Client, ein Anruf an Ihren Webservice über Code führt muss den Code unten haben, die die Sicherheitsausnahme zu umgehen ist, die für sich selbst signierten Zertifikaten kommt:

System.Net.ServicePointManager.ServerCertificateValidationCallback = (sender, cert, chain, error) => 
                      { 
                       return true; 
                      }; 
Verwandte Themen