Windows Phone 7 – Tutorial XXXI–Seguridad V–Autenticación Basica

Cuando nos conectamos a través de servicios WCF, si estos servicios están desarrollados por nosotros es recomendable que utilicemos autenticación en los mismos intentando que al menos las llamadas a nuestros servicios web tengan autenticación.

En este caso vamos a ver la autenticación básica  de nuestros servicios WCF, lo primero que tenemos que hacer es habilitar la autenticación básica en nuestros sitio Web que aloja los servicios web que consumimos, esto lo configuramos en el Internet Information Services (IIS) Manager console (Start ➪ Control Panel ➪ Administrative Tools IIS Manager) seleccionamos nuestros sitio y habilitamos Basic Authentication como en la imagen pulsando en Enable

image

Si deshabilitamos Anonymous Authentication y habilitamos Basic Authentication si nos vamos al Internet Explorer veremos que nos pedirá un usuario y password que serán las credenciales de Windows.

Para llamar al servicio WCF desde tu aplicación de Windows Phone 7 deberemos de enviar las credenciales en en la propiedad Credentials del objeto HttpWebRequest, tan sencillo como este código

1 private void BasicCallServiceButton_Click(object sender, RoutedEventArgs e){ 2 var client = new BasicAuthSample.BasicAuthServiceClient(); 3 client.ClientCredentials.UserName.UserName =<username>”; 4 client.ClientCredentials.UserName.Password =<password>”; 5 client.DoWorkCompleted += BasicService_DoWorkCompleted; 6 client.DoWorkAsync(); 7 } 8 void BasicService_DoWorkCompleted(object sender, AsyncCompletedEventArgs e){...}

1 private void BasicAuthButton_Click(object sender, RoutedEventArgs e) 2 { 3 var request = HttpWebRequest.Create(“http://localhost/AuthSample/BasicAuth/BasicAuthText.txt”); 4 request.Credentials = new NetworkCredential(“ < username > ”, “ < password > ”); 5 request.BeginGetResponse(FileComplete, request); 6 }

Aparte de incluir en las credenciales el usuario y password deberemos de configurar nuestro servicio WCF indicándole que espere Basic Authentication, estolo configuramos en el elemento basicHttpBinding poniendo el modo a TransportCredentialOnly y asignando clientCredentialType a true.

1 <system.serviceModel> 2 <services> 3 <service behaviorConfiguration="BasicAuthBehavior" name="AuthSample.BasicAuth.BasicAuthService"> 4 <endpoint binding="basicHttpBinding" 5 bindingConfiguration="basicAuth" 6 contract="AuthSample.BasicAuth.IBasicAuthService" /> 7 <!--<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />--> 8 </service> 9 10 </services> 11 <bindings> 12 <basicHttpBinding> 13 <binding name="basicAuth"> 14 <security mode="TransportCredentialOnly"> 15 <transport clientCredentialType="Basic" /> 16 </security> 17 </binding> 18 19 </basicHttpBinding> 20 </bindings> 21 22

Cuando añadimos la referencia a nuestra aplicación de WCF automáticamente se creara el fichero Client.Config y veremos que el elemento 

security mode="TransportCredentialOnly"

 

1 <system.serviceModel > 2 <bindings > 3 <basicHttpBinding > 4 <binding name="BasicHttpBinding_IBasicAuthService" 5 maxBufferSize=”2147483647” 6 maxReceivedMessageSize=”2147483647” > 7 <security mode="TransportCredentialOnly" /> 8 </binding> 9 </basicHttpBinding> 10 </bindings> 11 <client> 12 <endpoint address="http://localhost/AuthSample/BasicAuth/BasicAuthService.svc" 13 binding=”basicHttpBinding” 14 bindingConfiguration=”BasicHttpBinding_IBasicAuthService” 15 contract=”BasicAuthSample.IBasicAuthService” 16 name=”BasicHttpBinding_IBasicAuthService” /> 17 </client> 18 </system.serviceModel>

A la hora de desarrollar debemos de tener en cuenta que si deshabilitamos Anonymous Authentication en el IIS, debemos de eleiminar el endpoint mex vereis que en el código anterior esta comentado, sino el servicio al llamarlo os dará un error, pero al quitar el endpoint mex no podremos añadirlo a nuestra aplicación de Windows Phone, por lo que tenemos que jugar con esta configuración para ejecutar y para añadir la referencia a nuestro servicio WCF.

Debemos de tener en cuenta que el usuario y password se envían en texto plano, con lo que utilizarlo sin SSL como vimos anteriormente en mi opinión no sirve de nada.    

2 comentarios en “Windows Phone 7 – Tutorial XXXI–Seguridad V–Autenticación Basica”

  1. Hola,

    En mi ignorancia se me ocurre: para este sistema hay que crear un usuario de windows no? no es esto un poco peligroso si no le damos los permisos justos y necesarios? qué permisos debería tener este usuario?

    Gracias!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *