Frage

Eine App arbeite ich an Schnittstellen mit einer bestehenden Anwendung auf einer Remote-Box läuft. Communicaitons mit dem Remote-App ist über den öffentlichen Web-Service. Ich bin gebeten worden, eine Erweiterung zu bauen, die einen Client, der von dem Web-Service beinhalten werden sensible Daten zu handhaben, die sicher übertragen werden müssen.

Könnte jemand geben Sie mir einige Hinweise, wie man am besten vorgehen?

War es hilfreich?

Lösung

Um zu beginnen, sollten Sie SSL und lehnen alle Anfragen verwenden, der nicht verwenden. Dies wird Daten verschlüsseln, wie es über das Internet übertragen wird.

Wenn Sie SOAP verwenden, können Sie einen benutzerdefinierten Header in Ihren Dienst definieren, die einen Benutzernamen / Passwort nimmt. Dann wird für die erste Zeile in jedem öffentlichen Verfahren, zu validieren den Benutzernamen und das Kennwort für eine Datenbank. Wenn dies gelingt, die eingestellt HttpContext.Current.User angemessen, und Ihr Dienst binden schön gebaut mit dem in Asp.NET Infrastruktur.

angefügt:. Unten ist ein Beispiel Soapheader, die ein Benutzername / Passwort 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 Authentication Header:

PublicWebService s = new PublicWebService();
s.Authentication = new AuthenticationHeader();
s.Authentication.UserName = "xxxxxxxx";
s.Authentication.Password = "yyyyyyyy";
s.PublicMethod1();
s.PublicMethod2();

Andere Tipps

DIY Route:

  1. Lesen Sie auf Sicherheit nach oben (beginnen mit " Secrets and Lies “und andere solche allgemeinen Bücher, bevor sie die technischen beim bewegen)

  2. Führen Sie eine Risikoanalyse und Faden Beurteilung. Verstehen Sie, was Sie schützen und von welchem, und wo Bedrohungen kommen aus. Sie sind unwahrscheinlich Notwendigkeit "High Security" 1 .

  3. TLS verwenden (auch bekannt als SSL).

  4. Im Client überprüft das Zertifikat des Servers korrekt ist.

Bessere Route:. verwendet einen Experten, einen guten Ruf zu Hilfe hat Sie


1 Es sei denn, Sie wirklich ein Atomwaffenwerk oder ähnliches bauen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top