2009-06-04 14 views

Odpowiedz

43

Jeśli wywoływana usługa sieci Web korzysta z zabezpieczeń zintegrowanych z systemem Windows, utworzenie NetworkCredential z bieżącego WindowsIdentity powinno wystarczyć do umożliwienia serwisowi WWW korzystania z bieżącego logowania użytkowników. Jeśli jednak usługa internetowa używa innego modelu zabezpieczeń, nie ma sposobu na wyodrębnienie hasła użytkownika z bieżącej tożsamości ... co samo w sobie byłoby niebezpieczne, pozwalając twórcy wykraść hasła użytkowników . Najprawdopodobniej będziesz musiał podać swojemu użytkownikowi hasło i zachować je w bezpiecznej pamięci podręcznej, jeśli nie chcesz, aby wielokrotnie je podawały.

Edit: Aby uzyskać poświadczenia dla bieżącej tożsamości, należy użyć następujących:

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

Jak utworzyć NetworkCredential z WindowsIdentity? –

+12

Dzięki! Właśnie użyłem CredentialCache.DefaultNetworkCredentials. –

+1

Czy metoda GetCredential zwraca poświadczenia z przechowywanych nazw użytkowników i haseł w systemie Windows XP/2003/Vista/2008? Zadałem pokrewne pytanie tutaj: http://stackoverflow.com/questions/994232/how-to-call-a-web-service-using-stored-credentials Jeśli GetCredential pobiera poświadczenia ze sklepu na podstawie uri i rodzaj uwierzytelnienia, będę mieć odpowiedź. Przetestuję to i zgłoś ponownie ... –

4

Możesz uzyskać nazwę użytkownika za pomocą System.Security.Principal.WindowsIdentity.GetCurrent(), ale nie ma sposobu na uzyskanie aktualnego hasła użytkownika!

+7

Mam nadzieję, że nie ma sposobu na uzyskanie aktualne hasło użytkownika! :) Chciałbym użyć "bieżących danych uwierzytelniających" jako domyślnych dla usługi internetowej. –

Powiązane problemy