2012-03-27 9 views
2

Ich habe eine Frage über WCF-Web-Service-Sicherheit. Derzeit entwickeln wir ein android mobiles Projekt und verwenden WCF-Web-Service für Datentransfer und Manipulation. Wir verwenden basicHttpBinding und hosten den Web-Service als Window Service.So sichern Sie WCF-Webdienste, die von einem Windows-Dienst gehostet werden?

Wir haben im Moment keinen Sicherheitsmodus und ich habe Angst, dass jeder unseren Webservice nutzen kann, wenn er die Serviceadresse kennt. Zum Beispiel haben wir eine Service-Methode, die String-Wert zurückgibt. Derzeit kann ich diesen Service zu anderen Visual Studio-Projekten und mobilen Projekten hinzufügen und wir können jederzeit konsumieren.

//WCF Service Method 
public string DoWork() 
{ 
     return "This is return string!"; 
} 

    //We can consume it like below from other dot net project by adding service reference. 
    //Actually, those are not real client. 
    ServiceReference1.WebServiceClient serv = new TestingPrj.ServiceReference1.WebServiceClient(); 
    string result = serv.DoWork(); 

Meine Frage ist, wie kann ich meinen Webservice für echte Kunden sichern? Ich möchte nicht, dass andere Projekte und Personen unsere Webdienste nutzen.

+0

Hier gibt es eine Menge Hilfe: https://www.google.com/#q=securing+wcf+web+services –

+0

Ich versuche es bereits, aber die meisten Antworten beziehen sich auf Webservices, die in IIS gehostet werden. Deshalb stelle ich die Frage hier. Wie auch immer, danke für deine Hilfe. – Chong

Antwort

0

Die Verwendung von SSL-Zertifikaten ist der sicherste Weg.

+0

Wie schützen SSL-Zertifikate vor dem Zugriff eines falschen Benutzers auf den Dienst? – mellamokb

+0

Wir hosten die Dienste als Fensterdienst und verwenden keinen IIS-Server. Ist es möglich, SSL-Zertifikate auf diese Weise zu verwenden? – Chong

+0

Ja, Sie können dies entweder über die Konfigurationsdatei tun oder den Dienst so codieren, dass HTTPS erforderlich ist. Wenn das Zertifikat auf dem Server installiert ist, auf dem der Windows-Dienst ausgeführt wird, sollte es an das Zertifikat gebunden sein. – mellamokb

1

Die einfachste Methode ist die Verwendung der Basisauthentifizierung über SSL. Bei der Standardauthentifizierung muss der Client über ein Benutzername/Passwort-Paar verfügen, das nur Ihrer Anwendung bekannt ist. Wenn die Authentifizierung nur darauf abzielt zu wissen, ob Ihr Client der richtige ist (anstatt zu wissen, welcher Benutzer eine Verbindung herstellt), können Sie einen einzelnen, fest codierten Benutzernamen/ein Passwort verwenden.

SSL sollte ebenfalls verwendet werden, damit die Anmeldeinformationen nicht im Klartext übertragen werden und möglicherweise verschluckt werden können.