Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Getting NetworkCredential for current user (C#)

I'm trying to invoke a webservice from a console application, and I need to provide the client with a System.Net.NetworkCredential object.
Is it possible to create a NetworkCredential object for the user that started the application without prompting for username/password?

like image 300
Paolo Tedesco Avatar asked Jun 04 '09 08:06

Paolo Tedesco


2 Answers

If the web service being invoked uses windows integrated security, creating a NetworkCredential from the current WindowsIdentity should be sufficient to allow the web service to use the current users windows login. However, if the web service uses a different security model, there isn't any way to extract a users password from the current identity ... that in and of itself would be insecure, allowing you, the developer, to steal your users passwords. You will likely need to provide some way for your user to provide their password, and keep it in some secure cache if you don't want them to have to repeatedly provide it.

Edit: To get the credentials for the current identity, use the following:

Uri uri = new Uri("http://tempuri.org/"); ICredentials credentials = CredentialCache.DefaultCredentials; NetworkCredential credential = credentials.GetCredential(uri, "Basic"); 
like image 62
jrista Avatar answered Sep 20 '22 15:09

jrista


You can get the user name using System.Security.Principal.WindowsIdentity.GetCurrent() but there is not way to get current user password!

like image 29
abatishchev Avatar answered Sep 19 '22 15:09

abatishchev