Как 1С узнаёт, кто вошёл в базу: пароль, Windows, веб и внешние подключения
Содержание
Идентификация пользователя в 1С включается, как только в базе появляется хотя бы один пользователь: Конфигуратор → Администрирование → Пользователи. С этого момента платформа при запуске спрашивает имя и пароль или узнаёт человека по учётной записи Windows. Пока список пустой, база открывается кому угодно и с полными правами.
Выполнить идентификацию пользователя можно паролем 1С, через домен Windows, через веб-сервер или в строке программного подключения. Способ выбирают под то, как люди и программы заходят в базу; самая частая ошибка входа — Идентификация пользователя не выполнена.
Как платформа 1С определяет пользователя: три механизма
В 1С 8.3 у каждого пользователя информационной базы можно включить один или несколько способов входа. Они не исключают друг друга.
| Способ | Как работает | Где уместен |
|---|---|---|
| 🔑 Аутентификация 1С:Предприятия | Имя и пароль хранятся в самой базе | Небольшие офисы, внешние бухгалтеры, удалённый доступ |
| 🪟 Аутентификация операционной системы | Платформа берёт учётную запись Windows, под которой запущен клиент | Офис с доменом Active Directory |
| 🌐 Аутентификация OpenID | Вход через провайдер, обычно другую опубликованную базу | Веб-клиент, единый вход для нескольких баз |
Порядок при запуске такой. Если в строке запуска не указаны имя и пароль, платформа сначала пробует вход по Windows. Нашёлся пользователь базы, к которому привязана текущая учётная запись, — окно входа не появляется. Не нашёлся — показывается диалог с именем и паролем.
Различайте два слова. Идентификация — платформа понимает, кто вы. Авторизация — решает, что вам можно, по ролям. Ошибка входа и ошибка Нарушение прав доступа! — разные проблемы с разными решениями.
Создание пользователей и настройка входа в Конфигураторе
Первый пользователь — администратор
Первым всегда создают администратора. Если начать с обычного сотрудника без административных прав, войти в Конфигуратор после этого будет некому.
- Откройте базу в режиме
Конфигуратор. - Меню
Администрирование → Пользователи, кнопка добавления. - На вкладке
ОсновныезаполнитеИмя(его видно в окне входа) иПолное имя. - Поставьте флажок
Аутентификация 1С:Предприятия, задайте пароль. - На вкладке
Прочиеотметьте роль с полными правами (в типовых конфигурациях на БСП этоПолныеПрава) и роль администратора системы, если она есть в конфигурации. - Там же проверьте
Основной интерфейсиЯзык. - Сохраните. При следующем запуске база спросит пароль.
Остальные флажки на вкладке Основные:
- 👁
Показывать в списке выбора— имя будет в выпадающем списке окна входа. Для баз с десятками пользователей и для доступа из интернета флажок лучше снять: список имён — подарок подборщику паролей. - 🔒
Пользователю запрещено изменять пароль— для общих технических учёток (обмены, регламентные задания). - 🪟
Аутентификация операционной системыи полеПользователь— привязка к Windows, подробнее в следующем разделе.
В типовых конфигурациях заводите пользователей из программы
В БП 3.0, ЗУП 3.1, УТ 11 и других конфигурациях на БСП есть справочник Пользователи со своей логикой: профили групп доступа, ограничения по организациям, связь с физлицом и сотрудником. Если создать пользователя
только в Конфигураторе, он сможет войти, но справочник о нём не узнает, и права по профилям не применятся.
Правильный путь — Администрирование → Настройки пользователей и прав → Пользователи. В карточке есть флажок Вход в программу разрешен, под ним — те же способы аутентификации, а права задаются кнопкой Права доступа через профили.
Конфигуратор для типовых баз нужен только для первого администратора, если пользователей ещё нет вообще.
Требования к паролям
Платформенные ограничения задаются в Конфигуратор → Администрирование → Параметры информационной базы: минимальная длина пароля и проверка сложности. В конфигурациях на БСП есть ещё Администрирование → Настройки пользователей и прав → Настройки входа: срок действия пароля, запрет повторов, отключение неактивных пользователей.
Задавайте требования к паролю до того, как раздадите логины. Существующие пароли платформа задним числом не проверяет — правило сработает при следующей смене.
Вход без пароля через учётную запись Windows
Аутентификация операционной системы избавляет от второго пароля: человек вошёл в Windows — 1С его узнала.
Как привязать пользователя к домену
- Откройте карточку пользователя (в Конфигураторе или в справочнике
Пользователи). - Включите
Аутентификация операционной системы. - В поле
Пользовательукажите учётную запись в формате\\ДОМЕН\имя, например\\BUH\ivanova. Кнопка выбора рядом с полем открывает список пользователей домена. - Пароль 1С можно оставить как запасной способ или выключить.
Если в базе нет никого с такой учётной записью, автоматического входа не будет — появится обычное окно.
Файловый и клиент-серверный вариант
В файловой базе платформа просто берёт текущую учётную запись Windows на компьютере пользователя. Достаточно, чтобы компьютер был в домене.
В клиент-серверном варианте проверку выполняет сервер 1С по протоколу Kerberos (или NTLM как запасной вариант). Здесь нужна работа администратора домена:
- ⚙️ служба сервера 1С запускается от доменной учётной записи, а не от локальной;
- ⚙️ для этой учётной записи зарегистрировано имя службы (SPN), по которому клиент находит сервер в Kerberos;
- ⚙️ на сервере под Linux нужен keytab-файл с ключом этой учётной записи;
- ⚙️ клиент обращается к серверу по полному доменному имени, а не по IP-адресу — по IP Kerberos не работает .
Смена учётной записи службы сервера 1С требует её перезапуска. При перезапуске оборвутся все сеансы пользователей — делайте это вне рабочего времени и предупредите людей заранее.
Параметры запуска
Поведение можно переключать ключами командной строки или в поле Дополнительные параметры запуска в свойствах базы в окне запуска:
| Ключ | Что делает |
|---|---|
/WA- | Не пытаться войти по Windows, сразу спросить имя и пароль |
/WA+ | Принудительно входить по Windows (поведение по умолчанию) |
/N"Имя" | Имя пользователя 1С |
/P"Пароль" | Пароль пользователя 1С |
/WA- выручает, когда нужно зайти в базу под другим пользователем с того же компьютера — например, администратору на машине бухгалтера.
Идентификация пользователя при веб-доступе через IIS и Apache
При работе через веб-клиент, тонкий клиент по HTTP или мобильный клиент между пользователем и базой стоит веб-сервер с модулем расширения 1С. Публикацию делают из Конфигуратора (Администрирование → Публикация на веб-сервере) или утилитой webinst. Настройки публикации лежат в файле default.vrd в каталоге публикации.
Вход по имени и паролю 1С
Это вариант по умолчанию. Веб-сервер пропускает запрос анонимно, а имя и пароль спрашивает уже 1С. Для IIS в настройках сайта должна быть включена анонимная проверка подлинности.
Публикация в интернет без HTTPS передаёт пароль открытым текстом. Ставьте сертификат на веб-сервер до того, как откроете доступ снаружи.
Вход по Windows через IIS
- В диспетчере IIS для приложения публикации включите
Проверка подлинности Windows. Если компонент не виден — доустановите роль «Проверка подлинности Windows» в компонентах веб-сервера. - У пользователей 1С включите аутентификацию ОС с привязкой
\\ДОМЕН\имя. - В браузере адрес публикации должен попадать в зону «Местная интрасеть», иначе браузер не передаст учётные данные автоматически и будет спрашивать пароль Windows.
На Apache то же самое делают модулем Kerberos/GSSAPI для Apache и keytab-файлом. Настройка похожа на серверную: доменная учётная запись, SPN для имени веб-сервера, обращение по полному имени.
OpenID для нескольких баз
Если опубликовано несколько баз, одну можно сделать провайдером OpenID, остальные — потребителями. Пользователь вводит пароль один раз, а при переходе в другую базу она узнаёт его через провайдера. Имена пользователей в базах должны совпадать, а в карточке у каждого — включён флажок Аутентификация OpenID.
Идентификация во внешних подключениях: COM, HTTP-сервисы, OData
Программа, которая обращается к 1С снаружи, тоже проходит идентификацию. Окна входа у неё нет, поэтому учётные данные передаются в строке подключения или в заголовке запроса.
Командная строка и ярлыки
Запуск под конкретным пользователем без диалога:
"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /F"D:\Bases\Buh" /N"Обмен" /P"Пароль123"
Для серверной базы вместо /F указывают /S"srv1c\buh". Пароль в ярлыке виден любому, кто откроет его свойства, поэтому так запускают только технические учётки с минимальными правами.
COM-соединение
Внешняя обработка, скрипт или другая база подключается через V83.COMConnector. Имя и пароль передаются параметрами Usr и Pwd:
Коннектор = Новый COMОбъект("V83.COMConnector");
СтрокаПодключения = "Srvr=""srv1c"";Ref=""buh"";Usr=""Обмен"";Pwd=""Пароль123"";";
База = Коннектор.Connect(СтрокаПодключения);
Для файловой базы вместо Srvr и Ref пишут File=""D:\Bases\Buh"". Если Usr не указать, платформа попробует аутентификацию ОС от имени учётной записи, под которой работает вызывающий процесс.
HTTP-сервисы, веб-сервисы и OData
Здесь используется базовая HTTP-аутентификация: заголовок Authorization: Basic <строка>, где строка — это имя:пароль в кодировке Base64. Если имя на кириллице, перед кодированием его переводят в UTF-8, иначе 1С пользователя не найдёт.
curl -u "Обмен:Пароль123" "https://1c.example.ru/buh/odata/standard.odata/Catalog_Номенклатура?\$format=json"
Для OData дополнительно нужно открыть состав объектов: в типовых конфигурациях это делают обработкой настройки стандартного интерфейса OData, а у технического пользователя должны быть права на чтение этих объектов.
Заведите для каждой интеграции свою учётку («Обмен_сайт», «Обмен_банк») с узким набором прав. В журнале регистрации сразу видно, какая система что записала, а при утечке пароля меняете одну учётку, не трогая остальные.
Как узнать текущего пользователя из кода конфигурации
Разработчику часто нужно не настроить вход, а определить, кто сейчас работает: подставить ответственного в документ, скрыть поле, записать автора изменения.
| Задача | Чем решается |
|---|---|
| Имя для входа | ИмяПользователя() |
| Полное имя | ПолноеИмяПользователя() |
| Объект пользователя ИБ | ПользователиИнформационнойБазы.ТекущийПользователь() |
| Проверка роли | РольДоступна("ПолныеПрава") |
| Ссылка на элемент справочника в БСП | Пользователи.ТекущийПользователь() |
Создать пользователя программно, например при массовом заведении из списка, можно так:
НовыйПользователь = ПользователиИнформационнойБазы.СоздатьПользователя();
НовыйПользователь.Имя = "Петрова";
НовыйПользователь.ПолноеИмя = "Петрова Анна Сергеевна";
НовыйПользователь.АутентификацияСтандартная = Истина;
НовыйПользователь.Пароль = "ВременныйПароль1";
НовыйПользователь.АутентификацияОС = Истина;
НовыйПользователь.ПользовательОС = "\\BUH\petrova";
НовыйПользователь.Роли.Добавить(Метаданные.Роли.БазовыеПраваБП);
НовыйПользователь.Записать();
Имя роли в примере взято из БП 3.0 — подставьте роль своей конфигурации. В базах на БСП этим кодом создают только служебных пользователей. Сотрудников заводят через справочник Пользователи, иначе профили доступа к ним не применятся.
Почему не получается войти: диагностика
Первое, куда смотреть, — журнал регистрации: Администрирование → Обслуживание → Журнал регистрации в БП 3.0 или меню Администрирование → Журнал регистрации в Конфигураторе. Отберите события Сеанс. Аутентификация и Сеанс. Ошибка аутентификации: видно время, компьютер и имя, под которым пытались войти.
Отдельный случай — забыт пароль единственного администратора. Если в базе есть другой пользователь с административными правами, сбросьте пароль через него. Если нет — восстанавливайте базу из резервной копии, сделанной до смены пароля, или обращайтесь к специалисту, который обслуживает базу. Инструкции из интернета с правкой файлов базы вслепую часто заканчиваются повреждённой базой.
Перед массовыми изменениями в списке пользователей сделайте выгрузку базы в .dt или убедитесь, что есть свежая резервная копия. Удалённого пользователя ИБ не вернуть, а в БСП с ним теряется связь с профилями и настройками.