среда, сентября 05, 2007

Комбинированная авторизация в WSS v.3

Задача была - организовать авторизацию пользователей внутренней сети при помощи Windows-авторизации, а для пользователей внешней сети - авторизацию при помощи формы.

Исходная информация тут, тут, тут, тут и кино тут. Почитав всё это (и кое-что ещё), сумел сделать на своей системе (Vista x64, Virtual PC с Windows 2003 и Шарепойнтом) двойную авторизацию с анонимным доступом. Сайты с Windows- и Forms-авторизацией разведены по портам.

Выяснилось, что большинство авторов не обращает внимание на необходимость дать доступ на чтение к базе, в которой будут храниться данные по membership (пользователи, пароли и т.д.), пользователю, под которым функционирует пул приложений Шарепойнта (AppPool в IIS).

Кроме того, в том случае, если используются собственные названия для строки соединения (как в первом источнике) и не делается модификации machine.config, то соответствующий фрагмент web.config надо писать так:

<connectionStrings>
<remove name="LocalSqlServer" />
<add name="LocalSqlServer"
connectionString="server=xxxx;database=AcAspDB;Integrated Security=SSPI;"
providerName="System.Data.SqlClient" />
<add name="AcSqlConnString"
connectionString="server=xxxx;database=AcAspDB;Integrated Security=SSPI;"
providerName="System.Data.SqlClient" />
</connectionStrings>

Ещё один немаловажный вопрос, которому мало уделяется внимания - добавление пользователей в систему. Выяснилось, что существует не менее четырёх способов выполнения этой операции:

  1. При помощи средств управления сайтом, встроенных в Visual Studio 2005+. Вроде, вполне можно пользоваться, но не ставить же на "боевой" сервер Студию!?smile_omg

  2. При помощи хранимых процедур, имеющихся в базе AcAspDB - aspnet_Membership_CreateUser и др.
  3. При помощи страницы, на которую при помощи Sharepoint Designer установлен стандартный Asp.NET-визард добавления пользователя. Страница может быть помещена, например, в библиотеку на сайте.
  4. При помощи разработки Manage Form Users от stacyDraper, устанавливающей в систему "возможность", которая позволяет редактировать список пользователей и ролей.
Последний способ представляется самым предпочтительным. Немного только изменил скрипт установки (убрал слово bin\ в командах и заменил url-адрес в двух командах на адрес своего сервера), да в файле UserDisp.aspx изменил значение параметра PageSize="5" на 50 - очень уж неудобно работать со списком в 5 позиций.

5 комментариев:

Анонимный комментирует...

Супер!!!
То, что надо для новичка!
Спа-си-бо!!!!!

Анонимный комментирует...

Спасибо за советы по настройке.
По поводу настройки вопрос.
Произвел настройку комбинированной авторизации по 3 статье. Для зоны Intrernet указал авторазицаю формы. Есть база ASP.NET с двумя учетными записями. При попытке войти на данный узел при вводе в форме авторизации данных по существующим в базе записям, выдает ОШИБКА Неизвестная ошибка. И скажите в принципе возможно ли в WSS 3.0 чтобы одновременно внутри авторизация шла по AD, а в зоне INTERNET по учетным записям из базы ASP.NET форм авторизации?
Константин (kan-tri@ttk.ru)

Анонимный комментирует...

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

Анонимный комментирует...

Все настроил, работает, одно маленькое НО... При обращении к Manage FBA Users (через администрирование) выдает неизвестную ошибку.
Павел Токарев (tokarevps@yandex.ru)

DkmS комментирует...

У меня в своё время работало, ничего не падало.
Попробуйте к первоисточнику компонента обратиться - http://www.codeplex.com/fba