WCF, проверка подлинности в активном каталоге | авторизация и профили пользователей в комбинации SQL - PullRequest
0 голосов
/ 27 ноября 2011

Я занимаюсь разработкой службы WCF, в которой будет размещаться бизнес-логика приложения.Приложение в основном для интранета, но может быть доступно из Интернета.Домен активного каталога запущен и работает, поэтому я планирую аутентифицировать и авторизовать пользователей в соответствии с их именем пользователя и группами, в которых они находятся. Эта служба будет использоваться главным образом на сайте ASP.NET MVC

Итак, сначалаВопрос в том, как аутентифицировать и авторизовать пользователей на основе их профиля AD?

Во-вторых, мне нужно хранить дополнительную информацию о каждом пользователе.Проблема в том, что я не могу изменить схему AD.Количество добавленных полей составляет около 10 или около того.

Можно ли как-то использовать SQL-сервер для хранения профилей?Конечно могу, но как связать это с AD auth?

Ответы [ 2 ]

1 голос
/ 27 ноября 2011

Вы можете использовать WIF для этого.

Вы должны настроить службу WCF для WIF обычным способом, а затем использовать собственный класс ClaimsAuthenticationManager, производный от базового ClaimsAuthenticationManager и переопределяющий его Authenticateметод.Это нормальная точка расширения WIF.WIF получит токен безопасности из входящего запроса и добавит заявки для каждого из соответствующих свойств AD.В переопределении метода Authenticate вы добавите новые утверждения для представления ваших дополнительных свойств.

Основное использование WIF для служб WCF описано здесь:

http://msdn.microsoft.com/en-us/library/ee748476.aspx

Чтобы узнать, как использовать ClaimsAuthenticationManager, начните здесь:

http://msdn.microsoft.com/en-us/library/ee748211.aspx

0 голосов
/ 27 ноября 2011

Ну, я думаю, у вас есть несколько вариантов здесь, но вам придется внимательно рассмотреть реализацию.

Основная проблема с использованием аутентификации в активном каталоге заключается в том, что по умолчанию учетные данные пользователя могут успешно передаваться только между двумя компьютерами. В случае веб-приложения это означает, что учетные данные пользователя могут перемещаться между компьютером конечного пользователя и веб-сервером, но не дальше.

Однако это поведение можно изменить с помощью проверки подлинности Kerberos, которая, по сути, позволяет передавать билет проверки подлинности между всеми доверенными компьютерами в цепочке (т. Е. С веб-сервера на сервер приложений в базу данных, для пример). Успешная настройка Kerberos может быть чрезвычайно сложной, особенно если у вас не было опыта работы с ним.

Я думаю, что вам лучше всего настроить свой веб-сайт так, чтобы он принимал только аутентификацию Windows. Это означает, что IIS выполнит проверку пользователя по активному каталогу. В вашем приложении ASP.Net вы можете получить доменное имя авторизованного пользователя из Request.ServerVariables ("logon_user").

Теперь вы можете войти в систему с помощью FormsAuthentication, например, без необходимости повторного входа в систему.

Затем вы можете либо внедрить поставщика членства в SQL Server, либо создать свой собственный интерфейс к базе данных для дальнейшей проверки пользователя и хранения дополнительной информации. Мы использовали оба механизма, но я предпочитаю самодельный из-за дополнительного контроля, который он предоставляет, и в этом случае вам не понадобится много функций (сброс пароля, восстановление и т. Д.), Которые предлагает поставщик членства .

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