WCF олицетворение / Аутентификация - PullRequest
2 голосов
/ 11 апреля 2011

Я видел примеры для подражания, но у меня все еще есть проблема.

Некоторые детали структуры:

ASP.net: проверка подлинности Windows
WCF: размещен в IIS, в настоящее время работает с использованием разрешения анонимного пользователя

Чего я хочу добитьсяэто позволяет аутентифицированному входу в Windows передаваться в WCF для контроля доступа, например, для запрета анонимным пользователям пытаться вызвать сервис.

При использовании приложения ASP.net, если компьютер вошел в систему как администратор, но не работает в Active Directory, так как он не является определенным пользователем в AD, всплывающее окно в браузере запросит идентификатор пользователя ипароль.

При появлении запроса пользователь вводит правильный идентификатор пользователя и пароль, соответствующие AD.Следовательно, логин пройден.
Но когда я передал учетные данные для проверки подлинности окна в WCF с помощью олицетворения WCF, он показывает меня как администратора, а не информацию о пользователе, прошедшем проверку подлинности на ASP.net.правильная информация о пользователе, авторизованном на ASP.net, вместо того, что входит в Windows.

1 Ответ

4 голосов
/ 11 апреля 2011

В вашем приложении ASP.Net вы должны установить <identity impersonate="true"/> в вашем web.config.

Затем вам придется добавить олицетворение к вашему вызову службы WCF с помощью чего-то подобного внутри ASP.Сетевое приложение:

using (((WindowsIdentity)HttpContext.Current.User.Identity).Impersonate())
{
    WebClient client = new WebClient
       {
        Credentials = CredentialCache.DefaultNetworkCredentials
       };
    string result = client.DownloadString("http://someserver");
}

Также ознакомьтесь с шаблонами и практиками: Руководство по безопасности WCF для пошагового руководства по добавлению олицетворения в вызовах WCF из веб-приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...