Почему CredentialCache.DefaultCredential содержит пустые строки для домена, имени пользователя и пароля - PullRequest
3 голосов
/ 02 октября 2011

У кого-нибудь есть идеи относительно того, почему CredentialCache.DefaultCredential возвращает экземпляр ICredential с пустыми строками для домена, имени пользователя и пароля?Я запускаю службу WCF на IIS 7.5.Он отлично работает на одном сервере, но никогда не работает на другом.Я проверил, что в приложении IIS включена аутентификация Windows ....

Вот как это используется:

string url = string.Format("{0}/departments/finance/_vti_bin/listdata.svc", _IntranetAddress);
var financeDataContext = new FinanceDataContext(new Uri(url))
{
    Credentials = CredentialCache.DefaultCredentials
};

Ответы [ 2 ]

3 голосов
/ 17 октября 2011

Я не уверен, как это работает на одном из ваших серверов?Я надеюсь, что вы уже прочитали это http://msdn.microsoft.com/en-us/library/system.net.credentialcache.defaultcredentials.aspx, но в нем четко сказано: «Экземпляр ICredentials, возвращаемый DefaultCredentials, нельзя использовать для просмотра имени пользователя, пароля или домена текущего контекста безопасности».

1 голос
/ 18 октября 2011

NetworkCredential, возвращаемый из CredentialCache.DefaultCredential, является просто заполнителем. Если вы посмотрите на него с помощью отладчика, вы увидите, что он имеет тип SystemNetworkCredential. Внутренняя проверка API для этого типа, чтобы увидеть, должна ли использоваться встроенная аутентификация или нет. Есть и другие способы получения текущего имени пользователя (например, WindowsIdentity.GetCurrent ()).

EDIT: Чтобы указать олицетворение для операции WCF, добавьте этот атрибут в метод, реализующий контракт:

[OperationBehavior(Impersonation = ImpersonationOption.Required)]
public void SomeMethod() 
{
    // do something here
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...