Я пишу некоторый код для использования стороннего компонента, и я должен предоставить объект, который реализует ICredentials, когда я начинаю использовать его.
Если я пишу следующее...
var credential = new NetworkCredential("MyUsername", "MyPassword");
... и передайте "учетные данные", они прекрасны. Но я хотел бы передать учетные данные текущего пользователя (это - служба Windows, так выполнения как указанный пользователь).
Я попробовал оба из следующих, но ни один, кажется, не работает (или возвращает что-либо):
NetworkCredential credential = System.Net.CredentialCache.DefaultCredentials;
NetworkCredential credential = CredentialCache.DefaultNetworkCredentials;
Кто-либо может предложить, как получить объект approriate, который представляет учетные данные имени пользователя, под которым работает услуга?
Спасибо
Вам необходимо выполнить олицетворение, например:
System.Security.Principal.WindowsImpersonationContext impersonationContext;
impersonationContext =
((System.Security.Principal.WindowsIdentity)User.Identity).Impersonate();
//Insert your code that runs under the security context of the authenticating user here.
impersonationContext.Undo();
http://support.microsoft.com/ kb / 306158
Или вы можете использовать web.config:
<identity impersonate="true" />
пробовали ли вы WindowsIdentity.GetCurrent ()?
вы также можете посмотреть этот пример ... http: //www.codeproject .com / KB / vb / Windows_Service.aspx