Как решить проблему авторизации при публикации базы 1С на веб-сервере IIS в Windows Server 2019?

Системный администратор 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При настройке публикации информационных баз 1С на веб-сервере Internet Information Services (IIS) в операционной системе Windows Server 2019 многие пользователи сталкиваются с затруднениями при авторизации. Основные симптомы проблемы включают постоянный запрос логина и пароля, невозможность войти в систему даже с корректными учетными данными, а также появление ошибок вида 401.x в логах веб-сервера и сообщения о пользователе NT AUTHORITY\IUSR в журнале регистрации 1С. Давайте разберем эту ситуацию по шагам и выясним, какие настройки необходимо проверить и как устранить данную проблему.

Первые шаги диагностики: куда смотреть?

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

  1. Журнал регистрации 1С:Предприятия: Мы начинаем с изучения журнала регистрации 1С. Если вы видите записи, подобные Пользователь ОС: NT AUTHORITY\IUSR, это сразу дает нам важный намек. Данная учетная запись по умолчанию используется IIS для анонимных запросов. Появление ее в логах 1С при попытке авторизации через веб-сервис обычно означает, что IIS успешно принял анонимный запрос, но сама платформа 1С не смогла идентифицировать пользователя, которого вы пытались ввести.
  2. Логи веб-сервера IIS: Далее мы обращаемся к логам IIS. Здесь нас интересуют ошибки с кодом 401, которые указывают на проблемы с аутентификацией.
    • Ошибка 401.5: Эта ошибка может указывать на то, что какое-то ISAPI расширение или CGI веб-приложение (в нашем случае это wsisapi.dll от 1С) вернуло структурированный 401 ответ. Это означает, что проблема может быть глубже, чем просто настройки IIS, и лежит в области взаимодействия IIS с модулем 1С.
    • Ошибка 401.2: Если вы наблюдаете эту ошибку, она обычно связана с проблемой при проверке подлинности на уровне IIS. Часто она возникает, если включена, например, NTLM-аутентификация, но неверно настроены права или нет возможности установить доверительные отношения.

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

Пошаговая настройка IIS для публикации 1С

Рассмотрим подробнее каждый этап настройки веб-сервера IIS для успешной публикации базы 1С. Даже если вы уже выполняли эти шаги, мы рекомендуем проверить каждый пункт, так как малейшая неточность может привести к ошибкам авторизации.

  1. Установка необходимых компонентов IIS

    Прежде чем публиковать базу, убедитесь, что на Windows Server 2019 установлены все необходимые компоненты IIS. Мы выполняем установку следующих ролей и компонентов:

    • Веб-сервер (IIS): Основной компонент.
    • Внутри Веб-сервера (IIS) выбираем:
      • Общие функции HTTP:
        • Статическое содержимое
        • Документ по умолчанию
        • Обзор каталогов (по желанию)
        • Ошибки HTTP
      • Здоровье и диагностика (по желанию, но полезно для отладки):
      • Производительность:
        • Статическое сжатие содержимого
      • Безопасность:
      • Разработка приложений:
        • Расширяемость .NET 3.5 (если используется старая платформа 1С или другие компоненты)
        • Расширяемость .NET 4.7 (или выше) (для современных версий 1С и .NET приложений)
        • ASP.NET 3.5 (может потребоваться для некоторых ISAPI расширений)
        • ASP.NET 4.7 (или выше) (для современных версий)
        • Расширения ISAPI (критически важны для работы wsisapi.dll)
        • Фильтры ISAPI (рекомендуется для стабильной работы)
      • Средства управления:
        • Консоль управления IIS (обязательно для настройки)
        • Совместимость управления IIS 6 (по желанию, для старых скриптов)

    Обращаем ваше внимание, что выбор версии .NET (3.5 или 4.7) зависит от конкретной версии платформы 1С и требований к другим веб-приложениям. Иногда сисадмины устанавливают обе версии, что само по себе не является проблемой, если это не вызывает конфликтов в пулах приложений.

  2. Настройка пула приложений (Application Pool)

    Для корректной работы веб-сервисов 1С нам необходимо правильно настроить пул приложений в IIS:

    1. Откроем Диспетчер служб IIS.
    2. Перейдем в раздел Пулы приложений.
    3. Найдем пул, который использует ваше опубликованное приложение 1С (часто это DefaultAppPool, но для стабильности рекомендуется создавать отдельный пул).
    4. Щелкнем правой кнопкой мыши по пулу и выберем Дополнительные параметры....
    5. Мы проверяем и устанавливаем следующие параметры:
      • Разрешены 32-разрядные приложения (Enable 32-Bit Applications): Устанавливаем значение True, если вы используете 32-разрядную платформу 1С (а это очень частое требование). Если платформа 1С 64-разрядная, то может быть False, но для совместимости и по умолчанию чаще всего устанавливают True.
      • Режим управляемого конвейера (Managed Pipeline Mode): Устанавливаем значение No Managed Code (Без управляемого кода). Это особенно важно, если в пуле работают только ISAPI-приложения 1С, и мы хотим избежать наложения управляемого кода .NET.
      • Версия .NET Framework: Выбираем Без управляемого кода (No Managed Code) для пула, используемого исключительно для 1С, чтобы избежать потенциальных конфликтов и излишней нагрузки.
      • Модель удостоверения (Identity): Убедитесь, что для пула приложений выставлено значение ApplicationPoolIdentity. Это учетная запись по умолчанию для пула, которая предоставляет ему ограниченные, но достаточные права для взаимодействия с файловой системой и другими компонентами сервера. Это критически важно для безопасности и правильной работы.

    После изменения параметров пула приложений обязательно перезапустите его или весь IIS.

  3. Предоставление прав доступа

    Некорректные права доступа к файлам и папкам — одна из самых распространенных причин ошибок 401. Мы должны убедиться, что веб-сервер имеет необходимые разрешения для чтения, выполнения и записи (при необходимости) файлов 1С.

    Предоставляем следующие права:

    1. Для папки с установленной информационной базой 1С (например, C:\Bases\MyBase):
      • Группе IUSR (учетная запись для анонимного доступа IIS) необходимо предоставить права на Чтение и выполнение, Список содержимого папки, Чтение.
      • Группе IIS_IUSRS (группа, к которой принадлежит ApplicationPoolIdentity) также необходимо предоставить права на Чтение и выполнение, Список содержимого папки, Чтение.
      • Если база 1С является файловой (не клиент-серверной), то для обеих групп (IUSR и IIS_IUSRS) также потребуются права на Изменение, так как веб-сервер будет записывать данные в файлы базы. Если база клиент-серверная (SQL), то права на изменение файловой базы не нужны.
    2. Для папки bin установленной платформы 1С (например, C:\Program Files\1cv8\8.3.XX.XXXX\bin):
      • Группам IUSR и IIS_IUSRS необходимо предоставить права на Чтение и выполнение, Список содержимого папки, Чтение. Это важно, так как именно в этой папке находится исполняемый модуль wsisapi.dll, который IIS использует для взаимодействия с платформой 1С.

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

  4. Публикация базы 1С

    После всех настроек IIS и прав доступа, мы приступаем к публикации базы 1С:

    1. Запускаем Конфигуратор 1С (желательно от имени администратора).
    2. Открываем нужную информационную базу.
    3. Переходим в меню Администрирование -> Публикация на веб-сервере....
    4. Мы указываем необходимые параметры публикации:
      • Имя базы на веб-сервере.
      • Каталог публикации на веб-сервере (например, C:\inetpub\wwwroot\My1CService).
      • Веб-сервер (IIS).
      • Если используется безопасное соединение, устанавливаем флажок "Публиковать веб-сервисы по HTTPS" и настраиваем сертификаты.
    5. Нажимаем кнопку Опубликовать. 1С автоматически создаст необходимые файлы конфигурации и настроит приложение в IIS.

    При использовании клиент-серверного варианта базы 1С публикация на веб-сервере более предпочтительна для обеспечения стабильной работы при одновременном доступе нескольких пользователей и минимизации блокировок файлов. Файловый вариант менее производителен и подвержен проблемам с блокировками при веб-доступе.

  5. Сопоставления обработчиков (Handler Mappings)

    Очень важный аспект, который часто упускается из виду, особенно после обновления платформы 1С. Мы должны убедиться, что для расширений файлов 1С настроены корректные обработчики. Общий модуль для быстрой организации HTTP сервиса (набор функций и процедур)

    1. Открываем Диспетчер служб IIS.
    2. Переходим к вашему опубликованному приложению 1С.
    3. Дважды щелкаем на Сопоставления обработчиков (Handler Mappings).
    4. Мы проверяем наличие записей для расширений *.1cws, *.1crs (для веб-сервисов и HTTP-сервисов).
    5. Для каждого такого расширения мы убеждаемся, что путь к исполняемому файлу модуля 1С — wsisapi.dll — указывает на актуальную версию платформы 1С.
      • Пример пути: C:\Program Files\1cv8\8.3.XX.XXXX\bin\wsisapi.dll, где 8.3.XX.XXXX — это конкретная версия вашей платформы.

    Если вы обновили платформу 1С, но не переопубликовали базу, или при публикации произошел сбой, старый путь к wsisapi.dll может остаться. В этом случае мы должны вручную исправить путь в сопоставлениях обработчиков или переопубликовать веб-сервис через конфигуратор 1С.

Разбираемся с аутентификацией в IIS

Проблемы с авторизацией (ошибки 401) напрямую связаны с тем, как настроена проверка подлинности в IIS и как она взаимодействует с механизмом авторизации 1С.

  1. Анонимная аутентификация

    В большинстве случаев для веб-сервисов 1С достаточно включить Анонимную проверку подлинности (Anonymous authentication) в IIS. Это позволяет веб-серверу принимать входящие запросы без предварительной проверки учетных данных на уровне IIS. Дальнейшую проверку пользователя и пароля берет на себя сама платформа 1С.

    • Мы открываем Диспетчер служб IIS, переходим к вашему приложению 1С.
    • Выбираем раздел Проверка подлинности (Authentication).
    • Мы убеждаемся, что Анонимная проверка подлинности включена (Enabled).
    • Остальные методы проверки подлинности (например, Проверка подлинности Windows, Проверка подлинности по основной схеме) мы, как правило, отключаем, если не имеем четкого понимания, зачем они нам нужны, и не хотим, чтобы IIS пытался проводить свою аутентификацию перед 1С.

    Появление пользователя NT AUTHORITY\IUSR в логах 1С, когда IIS запрашивает логин/пароль, но не пускает, как раз и указывает на то, что IIS успешно обрабатывает анонимный запрос (используя учетную запись IUSR по умолчанию), но затем 1С не может идентифицировать пользователя, введенного вами в окне авторизации.

  2. Проверка на «ASP.NET Impersonation»

    Мы также должны проверить, не задействована ли модель доступа ASP.NET impersonation. При ее использовании иногда тоже случается зацикливание на учетной записи NT AUTHORITY\IUSR или некорректная передача учетных данных.

    Для проверки:

    • В Диспетчере служб IIS перейдем к вашему приложению 1С.
    • Выберем раздел Проверка подлинности (Authentication).
    • Мы убеждаемся, что Олицетворение ASP.NET (ASP.NET Impersonation) отключено, если это не требуется специально для других частей вашего приложения.

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

Частые причины ошибок 401 и способы их устранения

Давайте рассмотрим дополнительные моменты, которые могут вызывать ошибки авторизации 401.x и как их диагностировать.

  1. Ошибка HTTP 401.5

    Эта ошибка, как мы уже упоминали, отличается от других 401 ошибок тем, что она возвращается не самим IIS, а ISAPI-расширением (wsisapi.dll). Это означает, что IIS успешно передал запрос модулю 1С, но модуль 1С по какой-то причине не смог обработать авторизацию и вернул свою собственную ошибку 401.

    Причины могут быть разными:

    • Неверные учетные данные 1С: Самая простая причина — вы вводите неверный логин или пароль для пользователя в базе 1С.
    • Отсутствие пользователя в базе 1С: Пользователь, под которым вы пытаетесь авторизоваться, не существует в информационной базе 1С.
    • Проблемы с лицензированием 1С: Если веб-серверу не удалось получить доступ к лицензиям 1С (аппаратным или программным), это может привести к невозможности запуска сеанса и ошибкам авторизации. Мы проверяем доступность HASP-ключа или файлов программных лицензий с учетной записи пула приложений.
    • Настройки безопасности 1С: Возможно, в самой базе 1С есть специфические настройки безопасности, которые препятствуют входу.
    • Зацикливание аутентификации: Если 1С дважды запрашивает пароль, это может быть связано с использованием встроенной аутентификации 1С, которая перехватывает управление после прохождения IIS.

    Для диагностики этой ошибки мы должны внимательно изучать журнал регистрации 1С после появления 401.5, чтобы понять, на каком этапе платформа 1С отклоняет пользователя.

  2. Несоответствие версий платформы 1С

    Если веб-сервис перестает работать после обновления платформы 1С, одной из частых причин является несоответствие пути к файлу wsisapi.dll в настройках IIS (в Сопоставлениях обработчиков) и текущей версии платформы. Мы должны всегда проверять, что путь указывает на правильную, установленную версию платформы.

  3. Прокси-серверы и брандмауэры

    Если запросы к веб-сервису проходят через прокси-сервер или сложный сетевой брандмауэр, они могут изменять заголовки аутентификации, прежде чем достигнут веб-сервера. Это может приводить к ошибкам 401.

    • Мы проверяем настройки прокси-сервера и убеждаемся, что он не модифицирует заголовки HTTP, связанные с аутентификацией (Authorization).
    • Мы проверяем правила брандмауэра на сервере и на сетевом оборудовании, чтобы убедиться, что порт, используемый для публикации веб-сервиса (обычно 80 или 443), не блокируется и разрешает доступ к веб-серверу.
  4. Модуль URL Rewrite

    В некоторых случаях, особенно если требуется перенаправление трафика (например, с HTTP на HTTPS) или изменение URL-адресов, может использоваться модуль IIS URL Rewrite. Некорректные правила перенаправления могут влиять на процесс аутентификации, изменяя запросы или заголовки.

Кардинальное решение: Переустановка веб-сервера

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

В таких случаях, как это произошло и в описываемой ситуации, наиболее эффективным решением является полная переустановка веб-сервера IIS. Это позволяет сбросить все его настройки к дефолтным значениям и исключить влияние ранее сделанных ошибок или конфликтов.

Мы рекомендуем следующий алгоритм:

  1. Удаление роли Веб-сервера (IIS): Мы полностью удаляем роль Веб-сервера через Диспетчер серверов -> Удалить роли и компоненты. После удаления перезагружаем сервер.
  2. Чистая установка роли Веб-сервера (IIS): Затем мы устанавливаем роль Веб-сервера снова, тщательно выбирая все необходимые компоненты, которые мы перечислили выше в разделе "Установка необходимых компонентов IIS".
  3. Пошаговая настройка по проверенной инструкции: После чистой установки мы не спешим, а выполняем настройку IIS и публикацию базы 1С строго по проверенной и актуальной инструкции. Мы можем использовать надежные источники, такие как статьи на Infostart.ru или официальную документацию 1С.
  4. Проверка каждого шага: На каждом этапе мы проверяем, что все параметры установлены корректно: права доступа, настройки пула приложений, сопоставления обработчиков и параметры аутентификации.

Часто проблема заключается не в одной крупной ошибке, а в совокупности нескольких мелких неточностей, которые накопились в процессе настройки. Полная переустановка и пошаговая настройка с нуля по проверенной методике позволяют исключить эти скрытые проблемы и добиться стабильной работы веб-сервисов 1С.

Если после выполнения всех этих шагов проблема все еще сохраняется, мы можем обратиться к специалистам, предоставив им максимально подробную информацию из всех логов и описание выполненных действий.

← На главную