2009-04-17 23 views
8

Puede alguien dar una explicación clara de la diferencia entre el uso deDiferencia entre ClientCredentialType = = Windows y NTLM

  • clientCredentialType=Windows y
  • clientCredentialType=Ntlm

en un Web.config del lado del servidor cuando ¿Hospedaje de un servicio WCF?

Tengo un 1.1 (basicHttpBinding) Servicio de SOAP para interoperabilidad con los clientes existentes. Utiliza roles ASP.NET, por lo que necesita que los clientes sean autenticados.

Cuando utilizo el servidor VS2005 (Cassini) para alojar el servicio, tengo que especificar ClientCredentialType=Ntlm que el anterior, y marca la casilla autenticación NTLM en las propiedades del proyecto en VS2005. ClientCredentialType=Windows no funciona - los clientes consiguen una:

401 de error no autorizado

Sin embargo, cuando estoy corriendo bajo IIS, es al revés: ClientCredentialType=Windows obras, y ClientCredentialType=Ntlm falla.

¿Alguien puede explicar esto, y preferiblemente sugerir una manera en que puedo tener el mismo archivo web.config para ejecutar el servicio en Cassini e IIS?

actualización

tengo .NET 3.5 SP1 en mi máquina dev, que está corriendo XP SP2 en un dominio. Por lo tanto, Cassini se ejecuta bajo una cuenta de dominio e IIS 5.1 bajo una cuenta local.

Me pregunto si podría estar relacionado con el cambio de rotura en .NET 3.5SP1 descrito en estos artículos.

http://www.aspnetpro.com/newsletterarticle/2008/12/asp200812ab_l/asp200812ab_l.asp http://msmvps.com/blogs/alvin/archive/2008/11/14/net-3-5-sp1-breaking-change-to-wcf.aspx http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=354236

La situación suena similar a clientCredentialType=Windows falla cuando el servidor se ejecuta en una cuenta de dominio (que es mi situación con Cassini - corriendo como mi cuenta de usuario de dominio normal), y funciona cuando se ejecuta bajo una cuenta local (que es mi situación con IIS).

El problema es que las soluciones sugeridas requieren cambios en un archivo de configuración del cliente WCF, pero en mi caso estoy usando SOAP 1.1 (basicHttpBinding) con clientes que no son WCF.

Respuesta

1

clientCredentialType = Windows usa la autenticación integrada de Windows que puede ser a través de Active Directory y NTLM.

Obviamente, el tipo NTLM solo usará NTLM para la autenticación.

estoy seguro de que lo ha visto ya, pero aquí hay un enlace a la seguridad de WCF: http://msdn2.microsoft.com/en-us/library/ms734769.aspx

Algunos más detalles sobre la configuración de su ayudarían. ¿Los servidores IIS y Cassini se están ejecutando en la misma caja? Si no, ¿tiene la misma configuración de cuentas en cada cuadro? IIS6 admite de forma predeterminada NTLM, por lo que no debería tener problemas para que funcione.

+0

Gracias. Lo he leído y tengo una idea superficial de la diferencia entre NTLM y Windows. Pero no por qué Windows no funciona con Cassini. – Joe

Cuestiones relacionadas