Zunächst sollten Sie SSL verwenden und alle Anfragen ablehnen, die sie nicht verwenden. Dadurch werden Daten verschlüsselt, während sie über das Internet übertragen werden.
Wenn Sie SOAP verwenden, können Sie in Ihrem Dienst einen benutzerdefinierten Header definieren, der einen Benutzernamen/ein Kennwort verwendet. Dann validieren Sie für die erste Zeile in jeder öffentlichen Methode den Benutzernamen und das Passwort für eine Datenbank. Wenn dies erfolgreich ist, setzen Sie den HttpContext.Current.User entsprechend, und Ihr Dienst wird sich gut mit der eingebauten Asp.NET-Infrastruktur verbinden.
HINZUGEFÜGT: Unten finden Sie ein Beispiel SoapHeader, das einen Benutzernamen/ein Kennwort für die Authentifizierung enthält.
// define the header
public class AuthenticationHeader : SoapHeader
{
public String UserName { get; set; }
public String Password { get; set; }
}
// your service
public class PublicWebService : WebService
{
// defines an instance of the header as part of the service
public AuthenticationHeader Authentication;
private void Authenticate()
{
// validate the username/password against a database
// set the HttpContext.Current.User if successful.
// Maybe throw a SoapException() if authentication fails
}
// Notice the SoapHeader("Authentication") attribute...
// This tells ASP.Net to look for the incoming header for this method...
[WebMethod]
[SoapHeader("Authentication")]
public void PublicMethod1()
{
Authenticate();
// your code goes here
}
// Expose another method with the same authentication mechanism
[WebMethod]
[SoapHeader("Authentication")]
public void PublicMethod2()
{
Authenticate();
// your code goes here
}
}
Nun, wenn Sie das WSDL-Tool ausführen, wird die generierte Proxy-Klasse umfasst die definierte Authentifizierungsheader:
PublicWebService s = new PublicWebService();
s.Authentication = new AuthenticationHeader();
s.Authentication.UserName = "xxxxxxxx";
s.Authentication.Password = "yyyyyyyy";
s.PublicMethod1();
s.PublicMethod2();
Welche Art von SOAP-Web-Service? WCF? Benötigen Sie nur Transportsicherheit oder Authentifizierung? –
@Dirk - Ich glaube es ist ein SOAPy. Ich denke, ich brauche nur Transportsicherheit, die Dienste sind alle öffentlich zugänglich. – 5arx