WCF – Security

Sabemos que los sistemas distribuidos requieren un alto nivel de seguridad. Así que expondré un Resumen Detallado sobre Seguridad en WCF.

WCF contiene numerosas ventajas de seguridad que no sólo nos permitirán transmitir mensajes de manera confiable, sino que también otorgarán un acceso seguro a los recursos disponibles.

Windows Communication Foundation provee:

·         Transferencia de mensajes seguros

·         Acceso seguro a los recursos

·         Distintos protocolos de comunicación

·         Seguridad en los mensajes.

§  Transport Security.

§  SOAP Security

 

Entonces WCF facilita las siguientes tareas:

 

Intercambio de mensajes seguros entre las entidades.

Acceso seguro a los distintos recursos por parte de las entidades

Credenciales e identidad

Una credencial provee identidad a una entidad

l  Hay distintos tipos de credenciales:

Ø  Usuario / Password.

Ø  Certificados X.509.

Ø  Credenciales Kerberos.

Ø  SAML (Security Access Markup Language).

l  WCF representa las credenciales como tokens cuando se realiza la comunicación.

Autenticación

El proceso de autenticación permite a un cliente o a un servicio comprobar la autenticidad de una entidad.

l  Tipos de autenticación en WCF:

Ø  Anónima.

Ø  Certificada.

Ø  Username.

Ø  Windows.

 

Autorización

Determina los niveles de acceso a recursos

l  La autorización puede ser del tipo:

Ø  “User-Based”

§  Los permisos son otorgados a la entidad.

Ø  “Role-Based”

§  Los permisos son otorgados a un grupo de entidades.

Integridad en los mensajes y confidencialidad

La integridad asegura que los mensajes serán capaces de resistir ataques. A través de la comunicación, es probable que los mensajes enviados/recibidos sean forzados y se intente violar su contenido.

Para prevenir esto, los mensajes son firmados y encriptados usando las credenciales del emisor. El destinatario puede confiar plenamente en el mensaje recibido, ya que si el mensaje fue forzado, éste no será verificado.

La confidencialidad evita que el contenido de los mensajes sea visible para cualquiera, salvo que sea el destinatario especificado. El cuerpo de los mensajes es encriptado con las credenciales del destinatario, y desencriptado una vez que se reciben.

Si los mensajes viajaran a través de intermediarios, esto no pondría en riesgo su integridad, ya que los intermediarios no podrían ver el contenido de éstos.

La integridad y la confidencialidad de los mensajes son ventajas que se encuentran habilitadas por default en la mayoría de los bindings estándar.

Especificando el tipo de seguridad

La propiedad SecurityMode es la que determina el tipo de seguridad para aplicar.

Para habilitar estas opciones de seguridad, primero se deberá seleccionar el binding apropiado.

Muchos de los bindings estándar cuentan con la propiedad SecurityMode, lo que permitirá configurar el tipo de seguridad.

El binding BasicProfile no tiene seguridad por default. El resto de los bindings estándar cuenta con seguridad Windows predeterminada.

Binding_Security

Aquí se detallan los posibles valores aceptados por la propiedad SecurityMode.

None: seguridad deshabilitada.

HttpAuthentication: transporte de seguridad HTTP. El esquema de autenticación es controlado por el HttpAuthentication.Scheme.

BasicSecurityProfileMutualCertificate: perfil básico de seguridad SOAP con certificados utilizados para la autenticación, tanto en el cliente como en el servidor.

Https: transporte de seguridad HTTPS. Este modelo de seguridad provee integridad en los mensajes, confiabilidad y autenticación en el servidor. No existe autenticación en el cliente.

HttpsWithClientCertificate: transporte de seguridad HTTPS con certificados X.509 del lado del cliente. Este modelo de seguridad provee integridad en los mensajes y confidencialidad.

HttpAuthenticationOverHttps: autenticación HTTP sobre transporte HTTPS. Este modelo de seguridad provee integridad en los mensajes, confiabilidad y autenticación en el servidor.

BasicSecurityProfileCertificateOverHttps: perfil de seguridad básico, seguridad SOAP con certificados sobre transporte HTTPS.

BasicSecurityProfileUsernameOverHttps: perfil de seguridad básico con autenticación del tipo “UserName” sobre transporte HTTPS.

WSSecurityOverHttp: WS-Security. Seguridad SOAP sobre TCP. Este modelo de seguridad provee integridad en los mensajes, confiabilidad y autenticación.

TcpWithWindowsSecurity: seguridad Windows sobre TCP. Este modelo de seguridad provee integridad en los mensajes y confiabilidad.

TcpWithSsl: seguridad SSL sobre TCP. Este modelo de seguridad provee integridad en los mensajes, confiabilidad y autenticación en el servidor. No existe autenticación en el cliente.

WSSecurityOverTcp: seguridad WS-Security SOAP sobre TCP. Este modelo de seguridad provee integridad en los mensajes, confiabilidad y autenticación.

Especificando el modo de seguridad en un archivo de configuración

Cuando se especifica un binding en un archivo de configuración, el modo de seguridad es configurado utilizando el atributo SecurityMode del elemento <binding>.

<bindings>

  <wsProfileBinding>

    <binding configurationNam="MyBinding"

     securityMode="WSSecurityOverHttp">

      <wsSecurity authenticationMode="Certificate" />

    </binding>

  </wsProfileBinding>

</bindings>

También es posible especificar el modo de Seguridad en el Código, pero particularmente yo prefiero hacerlo en un Archivo de Configuración.

About justindeveloper

I am MCP (Microsoft Certified Professional). MCTS (Microsoft Certified Technology Specialist) and MCPD (Microsoft Certified Professional Developer), also I am SAP Business One Certified!! Desarrollando desde el IDE de Visual Studio NET 2003 hasta ahora con el Visual Studio NET 2010. Desde Microsoft SQL Server 2000 hasta ahora con el Microsoft SQL Server 2008 R2 y tambien con SharePoint, desde WSS 3.0 y MOSS 2007 y ahora familirizandome con el Sharepoint Foundation 2010 & Sharepoint Server 2010. The software development will follow being every time more wonderful!
This entry was posted in Development. Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s