Pregunta

Si paso los usuarios actuales credenciales a un servicio web mediante el uso de System.Net.CredentialCache.DefaultCredentials, de qué manera se transferirá la información? No creo que va a ser de tipo texto, por lo que las credenciales deben estar encriptados, pero ¿cómo son?

¿Fue útil?

Solución

Depende de lo que el servidor solicite por la respuesta CABEZA.

Por ejemplo, si realizo una petición HEAD para su servicio web y una de las cabeceras HTTP en su respuesta es "WWW-Authenticate: NTLM", a continuación, las credenciales almacenadas en DefaultCredentials se cifran mediante NTLM y luego se envían al día con GET completa / POST / PUT / lo que sea. Para asegurar que esto suceda, es necesario asegurarse de que su servidor web está configurado para solicitar autenticación NTLM. En IIS, este es un caso de seleccionar "autenticación integrada de Windows". No estoy seguro sobre Tomcat, pero este post parece pertinente.

Sin embargo, si el servidor Web responde con "WWW-Authenticate: básica" para un recurso en particular (lo que implicaría el envío de los creds en texto no cifrado, codificado (NOTA: no cifrado) como base 64) , obtendrá un ArgumentException ya que se considera una excepción de seguridad para enviar las credenciales de su cuenta durante autenticación básica.

Los servidores Web también pueden configurarse para aceptar varios métodos de autenticación, pero siempre deben estar preparados para aceptar el más débil de estos, por lo que ofrece autenticación básica como un "back-caída" significa que algunos de los usuarios puede muy bien estar enviando sus credenciales en texto claro.

Un navegador se suele seleccionar el método más fuerte a su disposición, y sospecho (pero no se sabe con certeza) de que las bibliotecas de .net se comportarán de la misma manera.

Editar

Mientras que su servidor web solamente pide NTLM para su servicio web, puede estar seguro de que cualquier cliente sensata no enviará credenciales en texto claro. El uso de las clases netas en el marco .NET, puede estar seguro de que si utiliza DefaultCredentials, y no se inyecta manualmente una cabecera de autenticación básica a sí mismo, se enviarán sus credenciales cifradas mediante NTLM.

Sus credenciales llegarán al servidor como un gran lío cifrada, a nadie más que el servidor web, que descifrará ellos para ver que incluyen el nombre de usuario, contraseña y dominio para el usuario actualmente conectado.

Las credenciales serán DefaultCredentials enviar hasta dependen del tipo de DefaultCredentails aplicación solicitada. Si se trata de una aplicación de cliente que se ejecuta bajo la cuenta de un usuario, las credenciales serán los que el usuario de. Si se trata de una aplicación ASP.NET que está comunicando con su servicio web, utilizará las credenciales para la cuenta de que el grupo de aplicación se está ejecutando bajo, de forma predeterminada, esto es NETWORK_SERVICE.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top