WCF -> ILM -> Веб-службы -> SQL Server - PullRequest
2 голосов
/ 11 октября 2009

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

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

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

У меня вопрос, будет ли это работать или это будет слишком медленно?

  1. Клиент вызывает процедуру на WCF, запрашивая данные
  2. WCF-сервер проверяет ILM, чтобы проверить, нормально ли это сделать
  3. WCF вызывает сервер webServices для получения данных
  4. Набор данных или коллекция передаются обратно клиенту.

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

Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 12 октября 2009

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

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

[EDIT]

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

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

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

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

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

0 голосов
/ 11 октября 2009

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

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

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