1С:Предприятие — вход в веб-клиент через Zentro
Платформа 8.3.14 и выше, публикация на веб-сервере (Apache / IIS). Аутентификация OpenID Connect задаётся в
default.vrd публикации; работает для веб-клиента (и тонкого клиента через веб-сервер).
1. Приложение в Zentro
Заголовок раздела «1. Приложение в Zentro»redirect_uris: https://1c.example.com/<имя_публикации>/authform.html, scopes openid email profile,
first_party: true. См. README.
2. default.vrd
Заголовок раздела «2. default.vrd»В элемент <point …> публикации добавьте:
<openidconnect> <providers><![CDATA[[ { "name": "zentro", "title": "Zentro", "discovery": "https://id.example.com/.well-known/openid-configuration", "authenticationClaimName": "email", "authenticationUserPropertyName": "name", "clientconfig": { "authority": "https://id.example.com", "client_id": "<client_id>", "client_secret": "<client_secret>", "redirect_uri": "https://1c.example.com/<имя_публикации>/authform.html", "response_type": "code", "scope": "openid email profile", "filterProtocolClaims": false, "loadUserInfo": false } } ]]]></providers> <allowStandardAuthentication>true</allowStandardAuthentication></openidconnect>Перезапустите веб-сервер. На форме входа появится кнопка «Zentro».
3. Сопоставление пользователей
Заголовок раздела «3. Сопоставление пользователей»1С ищет пользователя информационной базы, у которого свойство authenticationUserPropertyName равно claim
authenticationClaimName из токена Zentro:
| Вариант | authenticationClaimName |
authenticationUserPropertyName |
Что заполнить в 1С |
|---|---|---|---|
| по почте (как выше) | email |
name |
имя пользователя ИБ = его email в Zentro |
| по логину | preferred_username |
name |
имя пользователя ИБ = логин в Zentro |
Claim email / preferred_username Zentro кладёт в id_token при scope email / profile. У пользователя ИБ
должен быть включён вход через OpenID Connect (Конфигуратор → Администрирование → Пользователи → «Аутентификация
OpenID Connect»; в части версий — флаг «Аутентификация OpenID»).
Частые ошибки
Заголовок раздела «Частые ошибки»- «Пользователь не найден» — имя пользователя ИБ не совпадает с email/логином в Zentro (регистр и пробелы).
- «network error» после входа — сервер 1С не достучался до
https://id.example.com(DNS, прокси, сертификат — цепочка сертификата Zentro должна доверяться на сервере 1С). response_typeid_token token(из старых примеров) Zentro не поддерживает — толькоcode.