Acceso denegado a "partes" de un Servicio Web

01/04/2008 - 08:38 por Rafael Villaran. RAVIPE | Informe spam
Hola a todos. Intentaré explicar con claridad mi problema.
Tenemos un dominio NT en nuestra empresa. Creamos una aplicación en Visual
basic 6.0 que nos permitiriera integrar usuario y contraseña para todas las
aplicaciones que use un usuario, de tal forma que su cambio de contraseña en
el dominio actualizaba también la contraseña en las demas aplicaciones. El
cambio de contraseña y la gestión de usuarios y grupos de NT lo hacemos a
través del API. Nos creamos una .DLL que usa la API para toda la gestión de
Usuarios/Grupos en NT. Todo funciona correctamente.
Ahora hemos migrado a VS.NET 2005 y se ha creado un Servicio Web que
publica unos métodos que hacen uso de la librería que creamos en VB6 y que a
su vez hacía uso de la API para acceder a NT. Uno de los métodos del servicio
web es que devuelva el nombre completo y la cuenta de correos que tiene el
login que se le envía al método. Esto funciona. Sin embargo si intentamos
añadir un usuario a un grupo NT concreto, a través de otro método público del
servicio nos muestra el mensaje, ACCESO DENEGADO. Cuando estoy desarrollando
el servicio web, desde mi equipo, yo tengo permiso para administrar NT,
funciona todo correctamente. El problema surge al publicarlo en el servidor
de producción. Le he indicado en el IIS que el acceso al servicio es anónimo
y además que se ejecute con un usuario, concretamente el mio. A pesar de todo
sigue sin permitirme realizar cambios en NT.
Espero que haya quedado claro. Perdón por la extensión pero estoy desesperado.
Gracias de antemano por vuestro interés.

Preguntas similare

Leer las respuestas

#1 Alberto Poblacion
01/04/2008 - 09:15 | Informe spam
"Rafael Villaran. RAVIPE"
wrote in message news:
[...] Le he indicado en el IIS que el acceso al servicio es anónimo
y además que se ejecute con un usuario, concretamente el mio. A pesar de
todo
sigue sin permitirme realizar cambios en NT.



¿Cómo se lo has indicado? La forma más sencilla es poner un <identity
impersonate="true" userId=... password=... /> dentro del web.config del
servicio web. Esto debería de funcionar. ¿Lo has hecho asi?
Respuesta Responder a este mensaje
#2 Rafael Villaran. RAVIPE
01/04/2008 - 09:43 | Informe spam
Alberto gracias por tu interés.
Haber si soy capaz de "fotografiarte" la situación.
El usuario se lo he indicado en el IIS. A la aplicación del servicio web le
he permitido el acceso anónimo y el dicho que se ejecute con un usuario
concreto.
Pero intento explicarme un poco. El servicio web si me funciona, lo que no
me funciona es un método que accede al dominio para añadir un usuario a un
grupo.
O sea, cuando administra NT. Si lo hago en el equipo de desarrollo, el mio,
si funciona todo, pero al publicarlo en el servidor web de producción,
únicamente funcionan los métodos del servicio web que no administran NT, los
que hacen cambios en NT muestra el error ACCESO DENEGADO.
No sé si te he aclarado o liado más.
De todas forma muchas gracias por tu interés.

PD. Los cambios en NT los hacemos con una librería (UDUNT.DLL) realizada por
nosotros en VB6.0, ya ha llovido.

"Alberto Poblacion" wrote:

"Rafael Villaran. RAVIPE"
wrote in message news:
> [...] Le he indicado en el IIS que el acceso al servicio es anónimo
> y además que se ejecute con un usuario, concretamente el mio. A pesar de
> todo
> sigue sin permitirme realizar cambios en NT.

¿Cómo se lo has indicado? La forma más sencilla es poner un <identity
impersonate="true" userId=... password=... /> dentro del web.config del
servicio web. Esto debería de funcionar. ¿Lo has hecho asi?


Respuesta Responder a este mensaje
#3 Alberto Poblacion
01/04/2008 - 10:10 | Informe spam
"Rafael Villaran. RAVIPE"
wrote in message news:
Haber si soy capaz de "fotografiarte" la situación.
El usuario se lo he indicado en el IIS. A la aplicación del servicio web
le
he permitido el acceso anónimo y el dicho que se ejecute con un usuario
concreto.
Pero intento explicarme un poco. El servicio web si me funciona, lo que no
me funciona es un método que accede al dominio para añadir un usuario a un
grupo.
O sea, cuando administra NT. Si lo hago en el equipo de desarrollo, el
mio,
si funciona todo, pero al publicarlo en el servidor web de producción,
únicamente funcionan los métodos del servicio web que no administran NT,
los
que hacen cambios en NT muestra el error ACCESO DENEGADO.



A eso iba. Cuando ejecutas el sevicio web en la máquina de desarrollo,
probablemente lo estás ejecutando con tu propio usuario, que tiene permisos
para administrar NT, y por eso te funciona. Sin embargo, en producción, si
únicamente has configurado el usuario en IIS y no lo has configurado en
ASP.NET, te utiliza el usuario predeterminado de ASP.NET (típicamente
"Network Service"), NO te ejecuta el códgo con el usuario de IIS. Por eso te
está dando el "Acceso denegado". Para que te ejecute el código con el
usuario que tú quieres hace falta poner el impersonate="true" en el
web.config.
Respuesta Responder a este mensaje
#4 Rafael Villaran. RAVIPE
01/04/2008 - 10:46 | Informe spam
He probado con el impersonate y me sigue dando el mismo error de acceso
denegado. Alberto con userId me daba problemas, he puesto userName.
De todas formas como te digo sigue el error. El usuario que indicado es:
"<dominio>\<rvillaranp>", por supuesto yo tengo permisos para administrar NT.
Seguiremos investigando.
Insisto que muchas gracias por tu interés. Sé que tu seguirás dándole vuelta
;-).
Gracias.

"Alberto Poblacion" wrote:

"Rafael Villaran. RAVIPE"
wrote in message news:
> Haber si soy capaz de "fotografiarte" la situación.
> El usuario se lo he indicado en el IIS. A la aplicación del servicio web
> le
> he permitido el acceso anónimo y el dicho que se ejecute con un usuario
> concreto.
> Pero intento explicarme un poco. El servicio web si me funciona, lo que no
> me funciona es un método que accede al dominio para añadir un usuario a un
> grupo.
> O sea, cuando administra NT. Si lo hago en el equipo de desarrollo, el
> mio,
> si funciona todo, pero al publicarlo en el servidor web de producción,
> únicamente funcionan los métodos del servicio web que no administran NT,
> los
> que hacen cambios en NT muestra el error ACCESO DENEGADO.

A eso iba. Cuando ejecutas el sevicio web en la máquina de desarrollo,
probablemente lo estás ejecutando con tu propio usuario, que tiene permisos
para administrar NT, y por eso te funciona. Sin embargo, en producción, si
únicamente has configurado el usuario en IIS y no lo has configurado en
ASP.NET, te utiliza el usuario predeterminado de ASP.NET (típicamente
"Network Service"), NO te ejecuta el códgo con el usuario de IIS. Por eso te
está dando el "Acceso denegado". Para que te ejecute el código con el
usuario que tú quieres hace falta poner el impersonate="true" en el
web.config.


Respuesta Responder a este mensaje
#5 Rafael Villaran. RAVIPE
02/04/2008 - 07:24 | Informe spam
Alberto te comento como lo hemos conseguido:

Son 4 pasos:
1.- Escogemos un usuario del dominio que vamos a utilizar para el servicio,
por ejemplo Dominio\Usuario, con los permisos adecuados en el dominio.
2.- Entramos en "Directiva de seguridad local" del servidor donde
publicaremos el servicio web, dentro de "directivas locales" -> "Asiganción
de derechos de usuario" y le damos al usuario elegido permisos de "Iniciar
sesión como trabajo por lotes."
3.- Creamos un grupo nuevo de aplicaciones en el IIS y le decimos en la
solapa "Identidad" que inicie sesión como ese usuario.
4.- Asociamos el "directorio virtual" al nuevo grupo de aplicaciones:
propiedades->directorio virtual->configuracion aplicacion->grupo de
aplicaciones

De momento todo funciona como esperamos.
Gracias de todas formas. Un saludo.



"Alberto Poblacion" wrote:

"Rafael Villaran. RAVIPE"
wrote in message news:
> Haber si soy capaz de "fotografiarte" la situación.
> El usuario se lo he indicado en el IIS. A la aplicación del servicio web
> le
> he permitido el acceso anónimo y el dicho que se ejecute con un usuario
> concreto.
> Pero intento explicarme un poco. El servicio web si me funciona, lo que no
> me funciona es un método que accede al dominio para añadir un usuario a un
> grupo.
> O sea, cuando administra NT. Si lo hago en el equipo de desarrollo, el
> mio,
> si funciona todo, pero al publicarlo en el servidor web de producción,
> únicamente funcionan los métodos del servicio web que no administran NT,
> los
> que hacen cambios en NT muestra el error ACCESO DENEGADO.

A eso iba. Cuando ejecutas el sevicio web en la máquina de desarrollo,
probablemente lo estás ejecutando con tu propio usuario, que tiene permisos
para administrar NT, y por eso te funciona. Sin embargo, en producción, si
únicamente has configurado el usuario en IIS y no lo has configurado en
ASP.NET, te utiliza el usuario predeterminado de ASP.NET (típicamente
"Network Service"), NO te ejecuta el códgo con el usuario de IIS. Por eso te
está dando el "Acceso denegado". Para que te ejecute el código con el
usuario que tú quieres hace falta poner el impersonate="true" en el
web.config.


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida