Pregunta

Una aplicación que estoy trabajando en interfaces con una aplicación existente que se ejecuta en una caja remota. Communicaitons con la aplicación de control remoto son a través de sus servicios web públicos. Me han pedido para construir una mejora que supondrá un uso del cliente de hacer del servicio web para manejar los datos sensibles que tendrá que ser transmitida con seguridad.

¿Podría alguien darme algunos consejos sobre la mejor manera de proceder?

¿Fue útil?

Solución

Para empezar, usted debe utilizar SSL y rechazar cualquier solicitud que no lo esté utilizando. Esto cifrar los datos que están siendo transmitidos a través de Internet.

Si está utilizando SOAP, se podría definir un encabezado personalizado en su servicio que lleva un nombre de usuario / contraseña. Entonces, para la primera línea de cada método público, validar el nombre de usuario y la contraseña en una base de datos. Si tiene éxito, establecer el HttpContext.Current.User apropiadamente, y su servicio se unirá a la perfección con el construido en la infraestructura Asp.NET.

AÑADIDO:. A continuación se muestra un SoapHeader muestra que incluye un nombre de usuario / contraseña para la autenticación

// 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
    }
}

Ahora, si ejecuta la herramienta WSDL, la clase de proxy generada incluirá la cabecera de autenticación definido:

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

Otros consejos

ruta de DIY:

  1. Lea sobre la seguridad (comenzar con " noreferrer secretos y mentiras " y otros tales libros generales antes de pasar a los aspectos técnicos)

  2. Realizar un análisis y evaluación de riesgos hilo. Comprender lo que está protegiendo y por lo que, y donde las amenazas se vienen. Es poco probable que la necesidad de "alta seguridad" 1 .

  3. Usar TLS (también conocido como SSL).

  4. En el cliente, verificar el certificado del servidor es correcta.

ruta Mejor:. emplear a un experto que tiene una reputación establecida para ayudarle a


1 A menos que realmente está construyendo una planta de armas nucleares o similar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top