Как настроить веб-приложение IIS, чтобы оно могло получить доступ к общему сетевому ресурсу без AD?

У меня есть три Windows Server 2012 R2 без какой-либо рекламы в сети DMZ. Два сервера являются передними веб-серверами с ASP.NET, а один имеет SQL Server и сетевую папку, которую оба передних сервера используют для общих данных.

Моя проблема заключается в том, как настроить идентификатор пула приложений и общий сетевой ресурс, чтобы приложение ASP.NET могло читать и записывать в общий сетевой ресурс?

Это просто, если AD доступна, когда вы можете использовать учетные записи домена для удостоверения пула приложений, но в этой настройке AD недоступен.


person Fredrik Haglund    schedule 20.06.2014    source источник


Ответы (3)


Я отвечу на свой вопрос, так как мне удалось настроить сервер. Вот что я сделал:

1) Создайте учетную запись с одинаковым именем пользователя и паролем на всех трех серверах. Убедитесь, что срок действия не истек или его необходимо изменить.

2) Создайте общий сетевой ресурс и дайте новой учетной записи права на чтение/запись. Я также проверил, что могу подключаться с серверов переднего плана, используя новую учетную запись, чтобы убедиться, что на пути нет брандмауэров.

3) Включил пользователя в группу IIS_IUSRS, которая косвенно дает ему права входа в систему как пакетное задание.

4) Запустите следующую команду, чтобы предоставить права пользователю

aspnet_regiis -ga <your_app_pool_user>

Подробнее: Как создать учетную запись службы для приложения ASP.NET 2.0 (MSDN )

5) Перезапустил WAS и IIS, чтобы убедиться, что изменения в членстве в группе учетных записей сохраняются при попытке использовать учетную запись.

C:> net stop was /y
C:> net start w3svc

6) Создайте пул приложений и установите идентификатор.

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

От диспетчера IIS я получил следующее диалоговое окно с ошибкой: «При выполнении этой операции произошла ошибка. Подробности: значение не попадает в ожидаемый диапазон».

Пытаясь установить идентификатор пула приложений из командной строки, я получаю аналогичную ошибку:

C:> appcmd set config /section:applicationPools 
     /[name='test-pool'].processModel.identityType:SpecificUser 
     /[name='test-pool'].processModel.userName:MyAccountName 
     /[name='test-pool'].processModel.password:P@ssw0rd

ERROR ( hresult:80070057, message:Failed to commit configuration changes.
  The parameter is incorrect.
 )

Когда я удалю последний параметр, пароль, команда успешно изменит тип удостоверения и установит имя пользователя, но я так и не понял, почему я не мог установить пароль, поэтому я ответил на редактирование моего файла applicationHost.config напрямую. К сожалению, пароль заканчивается открытым текстом.

<configuration>
   ...
    <system.applicationHost>
        <applicationPools>
            ...
            <add name="test-pool" managedRuntimeVersion="v4.0">
                <processModel identityType="SpecificUser" 
                  userName="MyAccountName" password="P@ssw0rd" />
            </add>
            ...
        </applicationPools>
        ...
    </system.applicationHost>
    ...
</configuration>

7) Наконец, я настроил свое веб-приложение на использование приложения, и оно могло получить доступ к общему сетевому ресурсу без каких-либо проблем.

person Fredrik Haglund    schedule 20.06.2014

У меня была та же проблема, но я не мог ввести пароль в виде открытого текста, поэтому я копнул немного дальше и нашел эту статью: http://social.technet.microsoft.com/wiki/contents/articles/30344.custom-iis-app-pool-identity-value-does-not-fall-in-the-expected-range.aspx

Ключевым шагом диагностики является просмотр правильных событий:

Чтобы выяснить, как решить эту проблему, я зашел в средство просмотра событий. В журнале приложений ничего не было, поэтому я направился к журналам приложений и служб => Microsoft => Windows => IIS-Configuration. Журналы здесь отключены по умолчанию, поэтому их нужно включить. (Для этого щелкните правой кнопкой мыши журнал и выберите «Включить журнал».) После включения повторите попытку установки удостоверения и обновите представление (панель «Действия» или F5) и вуаля! Теперь у нас есть дополнительная информация. на ошибку. В результатах было две ошибки (идентификатор события 42 и 43).

У меня были те же ошибки событий, что и в статье:

Идентификатор 42: не удалось инициализировать поставщика шифрования «IISWASOnlyAesProvider» в «\?\C:\windows\system32\inetsrv\config\applicationHost.config». Пожалуйста, проверьте вашу конфигурацию.

ID 43: не удалось зашифровать атрибут «Microsoft.ApplicationHost.AesProtectedConfigurationProvider».

Затем я сделал следующее:

  • восстановить старую версию файла ConfigEncKey.key (до c:\windows\System32\inetsrv\config )
  • заменить раздел <configProtectedData><providers> старым (в c:\windows\System32\inetsrv\config\applicationHost.config )

Затем я снова могу установить пользовательское удостоверение для пула приложений.

person Benjamin Baumann    schedule 30.03.2015

Была аналогичная проблема. Переустановил диспетчер IIS и получил новый applicationHost.config. Когда я выполнил WinDiff для новых и старых файлов, я заметил, что SessionKey были разными. Работает сейчас. AesProvider и IISWASOnlyAesProvider

person Momo    schedule 13.05.2015