среда, сентября 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 позиций.