Asignación de credenciales para acceder a servicios web

Hace un par de semanas tuve un pequeño problema cuando intentaba acceder a un servicio web publicado en NAV. Disponía de mis desarrollos en asp.net en una máquina virtual con un dominio distinto al servidor donde se encontraba NAV. Por lo tanto, tenía que indicarle de alguna manera el usuario, password y dominio que tenía que utilizar la aplicación web para conectarse. En varios sitios encontré que había que utilizar la siguiente linea de código antes de hacer la llamada a la función del servicio web:

someService.Credentials = new NetworkCredential(“user”, “password”, “domain”);

Hay que recalcar que el último parámetro es optativo pues no es necesario indicarlo cuando el servidor se ubique en el mismo dominio. En mi caso, por encontrarme en un dominio distinto, lo indiqué.

Bien, la aplicación web se conectaba sin problemas y llegados a ese punto me olvidé del tema de las credenciales. Cuando la aplicación web estaba terminada, la publiqué en el servidor definitivo que sí que se encontraba en el mismo dominio y mi sorpresa fue ver que no había forma humana de que funcionara. Constantemente obtenía un error 401 – No autorizado.

La solución: la verdad es que hice bastantes pruebas pero creo que lo hizo que funcionara fue quitarle el parámetro del dominio a la función que otorga las credenciales. A mi entender, no tiene mucho sentido que un método de autenticación falle cuando se le proporciona mas información de la que necesita. En todo caso debería ignoraría pero nunca dar error (y menos si es tan poco descriptivo).

Deja un comentario

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