Autenticar una llamada a un servicio WCF

Estoy tratando de llamar a un servicio web de Sharepoint a través de WCF desde dentro de un .ASHX en un servidor diferente. Mi código funciona si ejecuto dentro del servidor web de depuración de Visual Studio, pero no desde IIS. El servidor que funciona funciona en varios modos de autenticación (Kerberos, NTLM) y el que no funciona no funciona en ninguno. Me estoy haciendo pasar por el mismo usuario en ambos casos.

Usando NTLM, grabé una sesión de trabajo y una sesión de no trabajo en Wireshark. En el trabajo, Wireshark analiza los datos NTLM e informa un DOMINIO y NOMBRE DE USUARIO que espero. En el que no trabaja, muestra

  DOMAIN: NULL
  USER NAME: NULL

He depurado en IIS y la suplantación definitivamente funciona en el momento de la llamada de servicio. si reviso WindowsIdentity.GetCurrent(), es el usuario que espero.

Si inspecciono el proxy del servicio WCF en los servidores que funcionan y que no funcionan, se ven idénticos: la parte que trata con ClientCredentials está configurada en "" para Nombre de usuario y Contraseña para ambas versiones.

¿Alguna idea sobre qué más revisar? ¿Por qué los datos NTLM tendrían DOMAIN y USER NAME configurados en NULL? ¿De dónde los obtiene?

preguntado el 22 de mayo de 12 a las 16:05

1 Respuestas

De acuerdo a esto:

http://support.microsoft.com/kb/207671

Cuando IIS atiende una solicitud HTTP, IIS realiza la suplantación para que el acceso a los recursos para manejar la solicitud se limite adecuadamente. El contexto de seguridad suplantado se basa en el tipo de autenticación realizada para la solicitud. Los cinco tipos diferentes de autenticación disponibles en IIS 4.0 son:

Authentication Type                          Impersonation Type
------------------------------------         ---------------------
Anonymous Access (no authentication)         Network
Auto Password Synchronization is
ON (ON=default)

Anonymous Access (no authentication)         IIS Clear Text
Auto Password Synchronization is OFF         

Basic Authentication                         IIS Clear Text 

NT Challenge/Response Authentication         Network 

Client SSL Certificate Mapping               Interactive

En mi caso tengo un Network Token, pero

Los tokens de red "NO" tienen permitido acceder a los recursos de la red. (Los tokens de red se denominan así porque este tipo de token lo crea tradicionalmente un servidor cuando un usuario se autentica en la red. Permitir que el servidor use un token de red para actuar como un cliente de red y acceder a otro servidor se denomina "delegación" y se considera un posible agujero de seguridad).

El KB tiene muchas formas posibles de evitar el problema.

contestado el 23 de mayo de 12 a las 13:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.