При работе с SharePoint 2010 возникает потребность использовать авторизацию, при которой данные о пользователях хранятся не в Active Directory, а во внешних источниках, например, в SQL Server. Для таких целей используется Forms Based Authentication (FBA).
ASP.NET Membership Provider
Настроим ASP.NET Membership Provider, который использует базу данных в SQL Server для хранения ролей, пользователей и их членства. Установить этот поставщик довольно легко. Приступим!
На стенде с SharePoint 2010 или SQL Server, запустите файл aspnet_regsql.exe, который можно найти в C:\Windows\Microsoft.NET\Framework64\v2.0.50727. Запускается мастер для настройки ASP.NET SQL Server (рис. 1).
Рис. 1. Мастер для настройки ASP.NET SQL Server
Кликаем на Далее. На следующем шаге (рис. 2) нужно выбрать, что мы хотим сделать с базой данных. В первом случае создается новая или настраивается старая база данных для хранения информации о членстве, профилях и ролях. Во втором случае подобная информация удаляется из указанной базы данных.
В нашем случае выбираем первый пункт, и кликаем на Далее.
Рис. 2. Выбираем задачу для настройки базы данных
На следующем шаге (рис. 3) указываем данные для подключения к SQL Server. В качестве базы данных можно использовать существующую (выбрав ее из выпадающего списка), либо создать новую (просто набрав ее имя в поле).
Рис. 3. Подключение к SQL Server
Заполнив данные, кликаем на Далее, и переходим к просмотру указанных параметров подключения к SQL Server (рис. 4).
Рис. 4. Подтверждение параметров подключения к базе данных
Если все указано верно, то кликаем на Далее. На следующем (последнем) шаге кликаем на Готово.
После завершения работы мастера запускаем SQL Server Management Studio и даем права db_owner аккаунтам веб-приложений и пула приложений Центра администрирования для созданной базы данных.
Веб-приложение
Заходим в Центр администрирования (нужно обладать правами администратора фермы), и создаем новое веб-приложение (Управление веб-приложениями, далее Создать). В появившемся окне обязательно нужно выбрать Проверка подлинности на основе утверждений (рис. 5). Данный тип проверки подлинности позволяет использовать FBA.
Рис. 5. Тип проверки подлинности при создании веб-приложения
Далее выбираем тип проверки подлинности на основе утверждений (рис. 6). Также нужно написать имя поставщика контроля членства и имя диспетчера ролей ASP.NET. Названия нужно запомнить, так как они нам еще пригодятся.
Рис. 6. Типы проверки подлинности на основе утверждений
Заполним остальные поля, и создадим веб-приложение. Для тестирования создадим коллекцию сайтов на основе любого шаблона.
Настройка SharePoint 2010 для ASP.NET Membership Provider
Таким образом, у нас уже создано веб-приложение, и база данных для ASP.NET Membership Provider. Остается их связать. Для этого нужно будет отредактировать web.config для следующих веб-приложений и сервиса:
- Центр администрирования
- Security Token Service
- Наше веб-приложение
На помощь приходит FBA Configuration Manager for SharePoint 2010. Утилита позволяет изменить 3 конфигурационных файла за один клик.
Интерфейс программы минималистичен (рис. 7). Удобно, что в выпадающем списке Sample Configuration можно выбрать шаблон SqlMembership, который нужно будет отредактировать, и кликнуть на Update Configs.
Рис. 7. Пример конфигурационного файла для настройки FBA
Уже на этой стадии можно проверить, что мы сделали. Откроем созданную нами коллекцию сайтов. При этом для входа на сайт нужно будет выбрать один из доступных способов (рис. 8)
Рис. 8. Выбор учетных данных для входа
На данный момент у нас нет пользователей, которые смогли бы войти на сайт с помощью проверки подлинности на основе форм. Есть несколько способов создания пользователей:
- В Visual Studio создаем новое веб-приложение ASP.NET и добавляем строку подключения, MembershipProvider и RoleManager в web.config. Далее запускаем Конфигурацию ASP.NET из меню Проект, в результате чего открывается средство администрирования веб-узла
- Используем SharePoint 2010 FBA Pack. После установки входим на сайт с помощью проверки подлинности Windows. В параметрах сайта находим FBA User Management. Кроме этого, у утилиты есть и другие полезные возможности.
Заключение
Использовать FBA не так сложно, как кажется. Да, процесс конфигурации занимает время, но его можно значительно уменьшить, используя различные утилиты.
Ссылки
Элемент membership (схема параметров ASP.NET)
Configuring claims and forms based authentication for use with a SQL provider in SharePoint 2010
Configure Forms Based Authentication (FBA) with SharePoint 2010
Configuring Forms Based Authentication for SharePoint 2010 using IIS7
Потратив много времени прочитав кучу инструкций по правке web.config-ов нашёл как это делать из интерфейса IIS (http://donalconlon.wordpress.com/2010/02/23/configuring-forms-base-authentication-for-sharepoint-2010-using-iis7/)
Сергей, это тоже неплохой вариант. Я же показал, что можно использовать инструменты, явно не изменяя web.comfig (изменения на самом деле происходят, но неправильные действия не приведут к печальным последствиям)
Да, Дмитрий я про тоже, без понимания структуры, ручные изменения web.config – верный способ его испортить, а тут готовый инструмент. Жаль я не наткнулся на вашу статью в начале своих “мытарств” :) сэкономил бы кучу времени. Спасибо!
Спасибо и заходите еще!
Надо только не забыть, что при неверном вводе пароля несколько раз, пользователь может быть заблокирован, потому следует заранее продумать интерфейс разблокирования пользователей :)
Да, обязательно. Эту задачу решает SharePoint 2010 FBA Pack, ссылка на который есть в статье.
прекрассно, без сучка и задоринки сделала сразу то что нужно было, осталось тока залить бд автоматом со всеми пользователями,т.к. они уже есть со всеми данными ! :)
Отлично, рад за вас!
Дмитрий, можно как дополнение к статье сделать разбор конфига того что редактируется в Configration Manager
дескать add key= (берем оттуда или указывали там)
без сноровки сложно )
Configuration Manager генерирует основную часть
и уже затем указываются последовательно строка подключения к базе данных, далее Membership и Role
Спасибо за статью, Дмитрий!
Нужен совет. Вопрос возможно глупый, если не ответите, не обижусь =)
Есть интранет портал, нобходимо предоставить мобильным (с АйПадами) пользователям возможность заходить на портал через интернет. Портал за Forefront TMG. У всех пользователей есть учетки в AD. Так вот вопрос по аутентификации. Придется использовать все-таки FBA и создавать для пользователей дополнительные учетки, или можно будет вводить учетные данные AD?
Если есть на примете, какие-нибудь статьи на тему, как дать пользователям из AD доступ к порталу через интернет, буду благодарен, если поделитесь ссылками.
Здравствуйте,
Посмотрите схему настройки здесь (ч.1) и здесь (ч.2). Материал на английском.
Спасибо за пинок в нужном направлении. По-моему, это то, что нужно.
Добрый день, Дмитрий. Скажите, а если у меня уже есть настроенное web-приложение для windows aутентификации, как мне его настроить еще и для FBA?
Здравствуйте,
А чем вас не устраивает данная статья?
Статья то меня устраивает. Возможно неправильно выразился. У меня на web application стоял классический тип проверки подлинности. Проверка с помощью FBA была не доступна. Пришлось применить powershell скрипт