2009-06-04 20 views

Respuesta

43

Si el servicio web que se invoca usa la seguridad integrada de Windows, la creación de un NetworkCredential a partir del WindowsIdentity actual debería ser suficiente para permitir que el servicio web use el inicio de sesión actual de Windows. Sin embargo, si el servicio web utiliza un modelo de seguridad diferente, no hay forma de extraer una contraseña de usuario de la identidad actual ... que en sí misma sería insegura, lo que le permite a usted, el desarrollador, robar las contraseñas de sus usuarios. . Es probable que deba proporcionar alguna forma para que su usuario proporcione su contraseña, y mantenerla en algún caché seguro si no desea que tenga que proporcionarla en repetidas ocasiones.

Editar: Para obtener las credenciales de la identidad actual, utilice la siguiente:

Uri uri = new Uri("http://tempuri.org/"); 
ICredentials credentials = CredentialCache.DefaultCredentials; 
NetworkCredential credential = credentials.GetCredential(uri, "Basic"); 
+0

¿Cómo se puede crear una NetworkCredential desde una WindowsIdentity? –

+12

¡Gracias! Acabo de usar CredentialCache.DefaultNetworkCredentials. –

+1

¿El método GetCredential devuelve credenciales de los nombres de usuario y contraseñas almacenados en Windows XP/2003/Vista/2008? Hice una pregunta relacionada aquí: http://stackoverflow.com/questions/994232/how-to-call-a-web-service-using-stored-credentials Si GetCredential recupera las credenciales de la tienda según el uri y tipo de autenticación, tendré mi respuesta. Voy a probar esto e informar de nuevo ... –

4

Puede obtener el nombre de usuario utilizando System.Security.Principal.WindowsIdentity.GetCurrent(), pero no hay forma de obtener la contraseña de usuario actual.

+7

espero que no hay manera de conseguir la contraseña del usuario actual! :) Lo que me gustaría hacer es usar las 'credenciales actuales' como predeterminado para el servicio web. –

Cuestiones relacionadas