
При внедрении единой системы аутентификации в компании я столкнулся с задачей организовать SSO-доступ к 1С через протокол OpenID Connect. За основу я взял статью на InfoStart (https://infostart.ru/1c/articles/1538390/), однако в качестве провайдера аутентификации использовал не Keycloak, как в оригинале, а Authentik — современную и удобную альтернативу с простым UI и богатым функционалом.
➡️ Вводные
Сервер 1С 8.3.25.1394 под Windows Server
Authentik 2025.2.1
Nginx как обратный прокси
🔐 Настройка OAuth2/OpenID провайдера для 1С в Authentik
1. Создание нового провайдера
Перейдите в раздел Applications → Providers и нажмите кнопку Create.

Выберите тип OAuth2/OpenID Provider и нажмите Next.

Откроется окно создания провайдера, ClientID и Client Secret сгенерируются автоматически

2. Основные параметры провайдера
Name: Provider for 1c-enterprise-CRM
Authorization Flow: default-provider-authorization-implicit-consent
Client Type: Confidential
Redirect URI: strict: https://apps.<ваш-домен>/CRM/authform.html где https://domain.tld - адрес, по которому доступна веб-публикация 1С, CRM имя базы 1С.
Установите Signing Key — можно использовать self-signed сертификат.

3. Параметры токенов, Scopes и subject mode
По умолчанию:
Access code validity: minutes=1
Access token validity: minutes=5
Refresh token validity: days=30
В Scopes переместите нужные значения в правую колонку:
authentikdefault OAuth Mapping OpenID 'email'
authentikdefault OAuth Mapping OpenID 'openid'
authentikdefault OAuth Mapping OpenID 'profile'

Subject mode: Based on the User's hashed ID
Включите Include claims in id_token
Оставьте Issuer mode: Each provider has a different issuer

4. Привязка провайдера к приложению
Перейдите в раздел Applications → Create

Укажите:
Name: 1C CRM - имя приложения (можно любое), будет отображаться в пользовательском интерфейсе
Slug: 1c-crm - условно id приложения, должно быть уникальным
Provider: Provider for 1c-enterprise-CRM - выбираем провайдера, которого указали ранее

Launch URL: https://apps.<ваш-домен>/CRM/ - url для запуска приложения из пользовательского интерфейса
Open in new tab — включено - по удобству, будет открывать 1С в новой вкладке браузера
Icon: загрузите логотип 1С

5. Проверка отображения
Войдите в User interface.
Убедитесь, что приложение 1C CRM отображается в списке доступных пользователю.

6. Проверка итоговой конфигурации провайдера
Откройте созданного провайдера

Authentik покажет сгенерированные:
OpenID Configuration URL
Authorize URL
Token URL
Userinfo URL
Logout URL
JWKS URL Теперь эти настройки можно использовать для авторизации в 1С

🛠 Настройка default.vrd для подключения OpenID (Authentik) в 1С
Для интеграции 1С с Authentik по протоколу OpenID Connect необходимо отредактировать файл default.vrd, который создаётся автоматически при публикации базы данных 1С на веб-сервере.
📁 Где находится файл
Файл располагается в папке опубликованной базы. Пример пути на сервере Windows:
C:\Apache24\htdocs\1C\CRM\default.vrd
CRM — имя опубликованной базы.
htdocs\1C\CRM — путь, заданный при публикации через веб-сервер 1С.
🔧 Что нужно сделать
Добавить секцию <openidconnect>
в файл default.vrd. Эта секция определяет параметры авторизации через внешнего OpenID-провайдера — в нашем случае, Authentik.
📄 Пример содержимого с OpenID-провайдером
<?xml version="1.0" encoding="UTF-8"?>
<point xmlns="http://v8.1c.ru/8.2/virtual-resource-system"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
base="/CRM"
ib="Srvr="sirena";Ref="CRM";">
<ws pointEnableCommon="true"
publishExtensionsByDefault="true">
<standardOdata enable="true"
reuseSessions="autouse"
sessionMaxAge="20"
poolSize="10"
poolTimeout="5"/>
<analytics enable="true"/>
<openidconnect>
<providers>
<![CDATA[[
{
"name": "authentik",
"title": "authentik",
"discovery": "https://auth.<ваш-домен>/application/o/1c-crm/.well-known/openid-configuration",
"authenticationClaimName": "email",
"authenticationUserPropertyName": "name",
"clientconfig": {
"authority": "https://auth.<ваш-домен>/application/o/1c-crm/",
"client_id": "",
"client_secret": "",
"redirect_uri": "https://apps.<ваш-домен>/CRM/authform.html",
"response_type": "id_token token",
"scope": "email openid",
"filterProtocolClaims": true,
"loadUserInfo": false
}
}
]]]>
</providers>
<allowStandardAuthentication>true</allowStandardAuthentication>
</openidconnect>
</ws>
</point>
Описание параметров OpenID-провайдера в `default.vrd`
"name": "authenti
Описание: Внутреннее имя провайдера (служебное, не отображается пользователю).
Значение: Любое уникальное строковое значение, желательно без пробелов.
Пример: "authentik"
"title": "authentik"
Описание: Отображаемое имя провайдера на странице входа 1С.
Значение: Видимое название кнопки авторизации.
Пример: "authentik" или "Войти через корпоративную учётку"
"discovery": "https://auth.<ваш-домен>/application/o/1c-crm/.well-known/openid-configuration"
Описание: URL для автоматического получения метаданных OpenID провайдера (endpoints, scopes и пр.).
Значение: Должен вести на endpoint .well-known/openid-configuration, соответствующий выбранному приложению.
Пример: https://auth.big-business.tld/application/o/1c-crm/.well-known/openid-configuration
"authenticationClaimName": "email"
Описание: Название claim'а в ID-токене, который будет использоваться для идентификации пользователя.
Значение: Должен совпадать с ключом в ID-токене (email, sub, preferred_username, и т.п.)
Важно: Значение должно быть уникальным в системе 1С (обычно email или sub).
"authenticationUserPropertyName": "name"
Описание: Свойство, в которое будет подставляться имя пользователя в интерфейсе 1С.
Значение: Должно совпадать с claim'ом, содержащим имя (name, given_name, fullname и т.п.).
"authority": "https://auth.<ваш-домен>/application/o/1c-crm/"
Описание: Базовый URL-адрес OpenID-провайдера.
Значение: Совпадает с частью до .well-known/openid-configuration.
"client_id": ""
Описание: Идентификатор клиента, полученный в Authentik.
Где взять: Указывается при создании OAuth2-провайдера в Authentik.
"client_secret": ""
Описание: Секрет клиента — аналог пароля, полученный в Authentik.
Важно: Не публикуйте и не передавайте третьим лицам.
"redirect_uri": "https://apps.<ваш-домен>/CRM/authform.html"
Описание: URI, куда будет перенаправлён пользователь после авторизации.
Важно: Должен совпадать с URI, указанным в настройках OAuth2-приложения в Authentik.
"response_type": "id_token token"
Описание: Тип ответа от провайдера.
Значение: Используется для Implicit Flow (получение токенов прямо в браузере без серверной обработки).
Пример: "id_token token"
"scope": "email openid"
Описание: Запрашиваемые разрешения (scopes) на доступ к данным пользователя.
"filterProtocolClaims": true
Описание: Удаляет служебные OpenID-поля из результата (iss, aud, iat, и т.п.).
Значение: true — рекомендуется включить для чистоты данных.
"loadUserInfo": false
Описание: Определяет, будет ли клиент дополнительно запрашивать /userinfo endpoint.
Значение: false — достаточно информации из ID-токена. Если нужно больше данных — можно установить true.
<allowStandardAuthentication>true</allowStandardAuthentication>
Описание: Разрешает использование обычной авторизации 1С (логин/пароль) наряду с OpenID.
Значение:
true — пользователь может выбрать метод входа.
false — вход только через OpenID.
👤 Настройка пользователя в 1С для OpenID Connect
В поле Имя укажите email — он должен совпадать с email, передаваемым провайдером (см. authenticationClaimName = "email" в default.vrd).
Установите галочку Аутентификация OpenID Connect.

👨💻 Особенности работы (браузер/тонкий клиент)
🌐 В браузере
В браузере все работает отлично:




🖥️ Тонкий клиент
Важно отметить один нюанс, тонкий клиент 1С открывает свое окно для отображения страницы входа SSO провайдера.
В Windows (тестировал на 10 и 11) не отображается интерфейс провайдера, просто белый фон.


В Linux (Fedora 41 Gnome) все работает отлично (вход через WebAuth естественно не работает, нужно использовать TOTP в качестве второго фактора)


🔚 Заключение
В браузере работа SSO проходит безупречно, включая полноценную поддержку второго фактора. В частности, можно использовать WebAuthn-авторизацию с помощью Passkey или аппаратных ключей, таких как YubiKey. Это обеспечивает высокий уровень безопасности без потери удобства.
Однако при работе через тонкий клиент 1С на Windows остаётся проблема: вместо браузера по умолчанию используется встроенное окно, которое в текущей версии не отображает интерфейс авторизации корректно (остаётся белый экран).
В данный момент я нахожусь в поиске решения, которое позволит запускать процесс аутентификации в системном браузере, минуя встроенное окно. Это улучшило бы пользовательский опыт и обеспечило стабильную работу SSO вне зависимости от платформы.
Если вы планируете внедрение единой системы входа для корпоративных сервисов, рекомендую обратить внимание на Authentik как простое и мощное решение. А при интеграции с 1С — не бойтесь экспериментировать: всё возможно при правильной настройке.
Благодарю за внимание.