Автоматизируйте создание пользователя в IIS7

Как я могу автоматизировать создание пользователя в IIS7?

Я использую С#. У меня есть код, который автоматизирует создание веб-сайта, и я нашел несколько примеров для автоматизации создания FTP-сайта.

Мне также нужно автоматизировать создание пользователя IIS для каждого FTP-сайта, который я создаю.

Я мог бы просто отредактировать файлadmin.config, в котором я мог бы просто добавить еще один элемент для каждого нового пользователя, но я не знал бы, как установить атрибут пароля, который закодирован. Кроме того, должен быть более простой и надежный способ сделать это.

Пользователи FTP, которых мне нужно настроить, не связаны ни с одним веб-сайтом. Эти пользователи будут входить только на FTP-сайт, а не на какой-либо веб-сайт.

Чтобы вручную добавить пользователя, я могу запустить функцию «Пользователи диспетчера IIS», а затем просто нажать «Добавить пользователя…».

Это добавляет запись в файл конфигурации, как я упоминал в своем исходном сообщении.

Затем я связываю этого пользователя с моим ftp-сайтом, добавляя правило авторизации FTP для этого пользователя.

Что касается моей текущей конфигурации... В IIS7 в разделе «Служба управления» в разделе «Учетные данные удостоверения» я выбрал «Учетные данные Windows или учетные данные диспетчера IIS».


person Joe    schedule 08.11.2010    source источник


Ответы (2)


Для добавления пользователей в Administration.config вы можете использовать API в Microsoft.Web.Management.dll ManagementAuthentication.CreateUser, в следующем блоге показано, как вызвать его из POwerShell: http://blogs.msdn.com/b/carlosag/archive/2009/10/23/добавление-iis-manager-users-and-permissions-through-powershell.aspx

Чтобы добавить правило авторизации FTP, вы можете использовать Microsoft.Web.Administration.dll. См.: http://www.iis.net/ConfigReference/system.ftpServer/security/authorization для примера того, как это сделать.

Также рассмотрите возможность использования редактора конфигурации для создания кода для автоматизации изменений в конфигурации IIS. http://blogs.iis.net/webdevelopertips/archive/2009/01/11/tip-42-did-you-know-configurationeditor-allows-you-to-generate-c-javascript-или-appcmd-script-to-update-configuration.aspx

person Carlos Aguilar Mares    schedule 08.11.2010
comment
Я пытался использовать Microsoft.Web.Manager.dll, но когда я пошел добавлять ссылку, я не смог найти эту dll, которую я ожидал найти в фреймворке... но я нашел ее в каталоге inetsrv, поэтому Я скопировал его в каталог моего проекта и добавил ссылку. (Что-то мне подсказывает, что это неправильный способ добавить ссылку). Затем я вызвал ManagementAuthentication.CreateUser() и получил следующую ошибку: раздел конфигурации «system.webServer/management/authentication» не может быть прочитан, поскольку в нем отсутствует объявление раздела. - person Joe; 09.11.2010
comment
Кроме того, я играл с редактором конфигурации, но, похоже, у меня нет доступа к файлуadmin.config, как показано в примере. - person Joe; 09.11.2010
comment
Редактор конфигураций действительно не предоставляет Administration.config, но использование Microsoft.Web.Management.dll, которая должна находиться в %windir%\system32\inetsrv\, является лучшим вариантом, так как она будет поддерживать пользовательских провайдеров (в случае, если пользователи хранятся в SQL или другое хранилище). - person Carlos Aguilar Mares; 09.11.2010
comment
Когда я использую Microsoft.Web.Management.dll и вызываю ManagementAuthentication.CreateUser(), на каждой машине, на которой я пытаюсь это сделать, я все еще получаю сообщение об ошибке: раздел конфигурации «system.webServer/management/authentication» не может быть прочитан, потому что отсутствует объявление раздела. Есть предположения? - person Joe; 09.11.2010
comment
Да, существует известная проблема при запуске этого кода в 32-разрядных процессах на 64-разрядной машине. Если вы используете Visual Studio, вам необходимо снять флажок «Включить хост-процесс Visual Studio» при отладке или просто запустить его из 64-разрядного процесса. - person Carlos Aguilar Mares; 10.11.2010
comment
У меня работает код администратора, но как хешировать пароль? Оставить его нехешированным не получится. Использование FormsAuthentication.HashPasswordForStoringInConfigFile с MD5 или sha1 также не работает. - person Joe; 18.11.2010

Ответ заключается в использовании:

Microsoft.Web.Management.Server.ManagementAuthentication.CreateUser(имя пользователя, пароль);

Этот метод будет кодировать пароль для нас.

person Joe    schedule 18.11.2010
comment
Вы читали мой ответ выше? Это именно то, что я сказал 10 дней назад. - person Carlos Aguilar Mares; 19.11.2010