2012-04-02 66 views
6

Tengo un cliente que se conecta a un servicio WCF utilizando la siguiente en ambos extremos:Error al conectar con el servicio WCF con la seguridad de Windows

<security mode="Message"> 
    <message clientCredentialType="Windows" /> 
</security> 

Esto funciona en mi entorno de desarrollo (ambos corriendo localmente) y la negociación funciona correctamente . Cuando la empujo al entorno de prueba me sale el siguiente mensaje:

negociación de seguridad

SOAP con 'http: // host/servicio' para la meta 'http: // host/servicio' fallido . Ver excepción interna para más detalles.

La excepción interna:

System.ComponentModel.Win32Exception: Proveedor de compatibilidad con seguridad Interface (SSPI) falla la autenticación. Es posible que el servidor no esté ejecutando en una cuenta con identidad 'host/server-name.domain'. Si el servidor se está ejecutando en una cuenta de servicio (Servicio de red, por ejemplo), especifique el NombrePrincipalServicio de la cuenta como la identidad en el EndpointAddress para el servidor. Si el servidor se ejecuta en una cuenta de usuario , especifique UserPrincipalName de la cuenta como la identidad en EndpointAddress para el servidor.

Después de cambiar al azar atributos y generalmente perder el tiempo, la única manera de que pudiera hacerlo funcionar fue cambiar el grupo de aplicaciones para el servicio a utilizar LocalSystem como la identidad. Esto posteriormente ha causado que los administradores del sistema tengan gatitos, y no es algo que pueda continuar haciendo.

¿Alguien puede arrojar alguna luz de por qué esto está sucediendo? Tanto la cuenta de cliente de Windows como la identidad de la aplicación de aplicaciones están en el mismo dominio. El servicio se ejecuta en un servidor en el mismo dominio.

Respuesta

2

Si la autenticación funciona con LocalSystem pero no es una cuenta de dominio, es posible que le falte un SPN para la cuenta de dominio. Esta página proporciona algunos antecedentes acerca de la configuración de la identidad que ejecuta su servicio como: http://msdn.microsoft.com/en-us/library/bb628618.aspx

+0

Solo un pensamiento, podría ser el caso si la máquina se configuró como una VM a partir de una plantilla (es decir, clonada)? –

+0

No estoy seguro de que la máquina que se está clonando (o no) tenga un impacto en esto. AFAIK para usar Kerberos, la identidad del servicio requiere un SPN/UPN válido. –

Cuestiones relacionadas