WCF -> ILM -> Веб-службы -> SQL Server

2

В настоящее время мой работодатель имеет большую часть своего доступа к базе данных через С# sqlDataAdapters и sqlCommands на сервере или компонентах WebServices в приложениях. Это в основном приложения Windows Forms, которые запускаются в интрасети и в Интернете в зависимости от их функциональности.

Я изучаю WCF совсем немного, и я чувствую, что это будет хорошо для нас. Также у моего менеджера есть копия ILM (сервера управления жизненным циклом удостоверений личности), которую он хотел бы использовать для обеспечения поддержки SSO для аутентификации и авторизации для всех наших приложений.

Наши приложения запрашивают данные из базы данных и в основном возвращаются в dataTables. Я знаю, что коллекции лучше, это всего лишь обычная практика. Поэтому я пытаюсь найти решение, которое будет безопасно, аутентифицироваться через ILM и возвращать данные клиенту в наборе данных (сначала переносить на коллекции позже) с сервера webServices.

Мой вопрос будет ли это работать или будет слишком медленным?

  • Клиент вызывает процедуру обработки данных WCF
  • Сервер WCF проверяет с помощью ILM, чтобы убедиться, что это нормально.
  • WCF вызывает сервер webServices для получения данных
  • Набор данных или коллекция передаются клиенту.

Если это осуществимо, как я могу подключиться к ILM для аутентификации. Есть ли способ сделать это в файле Web.Config или мне нужно будет сделать это на уровне сообщений самостоятельно?

Спасибо заранее.

Теги:
sql-server
ldap
web-services
wcf

2 ответа

2
Лучший ответ

Я знаком с ILM. Это не служба проверки подлинности. ILM означает Identity Lifecule Manager, и это довольно хорошее описание того, что он может сделать. Он может предоставлять новых пользователей, обезопасить старых пользователей и позволяет копировать данные идентификации между хранилищами идентификаторов. Он также предоставляет службу синхронизации паролей. Вы по-прежнему используете Active Directory или AD LDS (ex-ADAM) или какой-либо другой каталог для AuthN и AuthZ.

В то время как ILM хранит всю нагрузку данных о ваших пользователях, вам настоятельно не рекомендуется напрямую обращаться к этим данным.

[EDIT]

ILM не предоставляет услуги LDAP. Подумайте об этом как о менеджере: он не выполняет никакой работы, он просто периодически переписывает вещи. Когда ваш менеджер перемещает данные в форме электронных писем, он перемещает данные в форме данных учетной записи.

ILM - это инструмент для управления идентификационными данными в каталогах и базах данных. Не имеет смысла рассматривать ILM в контексте одного хранилища, SQL, AD или любого другого - его задачей является сортировка данных между магазинами. Было бы нечего делать, если бы был только один магазин.

Здесь типичный сценарий: вы создаете таблицу SQL, называемую Люди, содержащие столбцы для firstName, lastName, jobTitle, department, uniqueID, startDate и endDate. ILM подключен к этой таблице. Он выполняет ежедневный импорт и появляется новая строка. ILM использует данные в этой строке для создания идентификатора пользователя в AD, другого в Domino и другого в другой базе данных SQL. Он использует поля jobTitle и department для назначения членства в группе AD, списков рассылки в Domino и разрешений в SQL.

Пользователь запускается и работает в течение нескольких недель, а затем уходит в отставку. Вы устанавливаете endDate в таблице, и ILM замечает это изменение при следующем импорте. Он обновляет учетную запись AD до истечения этой даты и сохраняет отложенное действие для ее удаления через 90 дней. Через 90 дней он удаляет учетную запись. Аналогично с другими учетными записями.

Вы можете использовать свою кадровую систему вместо таблицы SQL, но (а) она обычно не в правильном формате или не поддерживается достаточно своевременно, и (б) они часто зудятся о том, чтобы предоставить вам доступ к их данным.

  • 0
    Таким образом, если наши пользователи в настоящее время управляются через пользовательскую таблицу пользователей в SQL Server, ILM может управлять этим, или мы должны создать для них пользователей AD или ASP.net, и ILM будет управлять ими таким образом? Мы также обсуждали использование LDAP в ILM. Это обеспечивает какую-либо аутентификацию? Спасибо!
  • 0
    Я уточнил свой ответ в свете ваших комментариев.
Показать ещё 2 комментария
0

Я не очень хорошо знаком с ILM, но я предполагаю, что он довольно подробный для конкретных запросов данных. С WCF вы можете подключить своего собственного поставщика удостоверений, реализовав IAuthorizationPolicy (как это) и предоставляя свой собственный "главный". Я подозреваю, что было бы довольно легко написать принципала, который работает против ILM, но это, вероятно, будет для довольно широких проверок - "у меня есть доступ к ClientAudit", а не "могу ли я получить доступ к CustomerAudit для клиентов на северо-востоке".

Хорошая вещь об использовании принципала заключается в том, что вы также можете использовать методы проверки [PrincipalPermission], поэтому вам не нужно добавлять к вашему коду расширенные проверки безопасности (CLR принудительно устанавливает [PrincipalPermission]).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню