Как я аутентифицирую пользователя между ASP.NET и WCF?

Мы разрабатываем приложение интранет на базе браузера. У всех пользователей есть активная учетная запись каталога, таким образом, очевидным выбором было бы использование Интегрированная аутентификация Windows. Но будут многочисленные пользователи, получающие доступ к той же клиентской машине, таким образом, мы решили использовать основанную на форме аутентификацию (но аутентифицируемый против AD).

В этом сценарии, что лучший способ состоит в том, чтобы аутентифицировать между моим приложением ASP.NET (IIS) и WCF Services (другой сервер IIS 7). Я не хочу использовать asp. Сетевой Режим эмуляции или сертификат.

Я думаю для создания другой учетной записи домена для аутентификации ASP.NET и WCF. Я также передаю информацию о текущем пользователе ASP.NET к WCF как информация о заголовке. Действительно ли это - правильный способ сделать? Следующий код будет звонить от ASP.NET до доступа и получать каждый сервисный метод.

 // Call WCF service from ASP.NET Application using a new domain account for each call.
 proxy.ClientCredentials.Windows.ClientCredential.Domain = "mydomain";
 ServiceReference.HelloWorldClient proxy = new ServiceReference.HelloWorldClient();
 proxy.ClientCredentials.Windows.ClientCredential.UserName = "new_domain_account";
 proxy.ClientCredentials.Windows.ClientCredential.Password = "password";

Там какой-либо лучший путь состоит в том, чтобы аутентифицировать WCF из ASP.NET?

Спасибо, пепел.

5
задан Ash 19 February 2010 в 01:07
поделиться

4 ответа

Нет ничего особенного в аутентификации приложения ASP.NET к службе WCF. Все обычные параметры аутентификации доступны (имя пользователя, X.509, windows).

Интересным здесь является то, что вы хотите также передать учетные данные клиента на основе браузера. Это известная схема, называемая доверенной подсистемой. И да, вы можете передавать их в заголовке, если сообщение защищено (зашифровано).

3
ответ дан 14 December 2019 в 19:11
поделиться

ммм ... если у вас есть AD, и они входят в систему со своими учетными данными, не имеет значения, на какой машине они работают, просто используйте AD. Ну и что, если они используют одну и ту же машину.

В любом случае, у Microsoft есть много информации по этой проблеме здесь:

http://wcfsecurity.codeplex.com/wikipage?title=Application%20Scenarios&referringTitle=Home

Проверьте это.

0
ответ дан 14 December 2019 в 19:11
поделиться

Я вообще не знаю ASP.NET, но я кое-что сделал с WCF и думаю, что вам нужно сделать, это получить "форму входа", чтобы затем выдать себя за другое лицо. пользователя в текущем потоке, а затем инициировать соединение WCF с другим сервером. Взгляните на эту статью на msdn , чтобы получить краткий обзор некоторых из них исключительно в рамках WCF. Я не знаю, как вы интегрируете это в сторону ASP.NET (как я уже сказал, я ничего не знаю об этой технологии), но концептуально я думаю, что это то, что вам придется делать.

1
ответ дан 14 December 2019 в 19:11
поделиться

Похоже, это не проблема WCF, а проблема с прозрачной аутентификацией браузера.

Попробуйте отключить встроенную проверку подлинности Windows в IIS для приложения ASP.NET и переключиться на обычную или дайджест-проверку подлинности. Оба они по-прежнему будут аутентифицироваться в AD, но браузер не будет прозрачно аутентифицировать вошедшего в систему пользователя.

Затем в своем приложении ASP.NET просто используйте олицетворение и передайте все учетные данные, известные IIS, службе WCF, которую вы вызываете.

1
ответ дан 14 December 2019 в 19:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: