Настраиваем авторизацию пользователей 1С через Okta

30.04.21

Интеграция - WEB-интеграция

Чем больше в компании различных конфигураций и сервисов, тем актуальнее становится проблема единой системы авторизации single Sign-On. Его лидером практически безоговорочно считается Okta. Но на просторах интернета очень мало информации про интеграцию 1С с Okta через протокол OpenID Connect. Что ж, настало время восполнить недостающие пробелы и перевернуть эту печальную страницу в вашей истории

Введение

Преимущества использования провайдера аутентификации, такого как например Okta, трудно переоценить. У нас появляется централизованное рабочее место для управления пользователями сразу во всех системах - будь то jira, slack, trello, service desk, bitbucket, gitlab, 1С или даже собственное приложение. 

Т.к. многие взрослые сервисы, вроде jira, уже обеспечивают встроенную интеграцию с Okta по одной кнопке, то в данном туториале мы попробуем сосредоточится на 1С и реализовать аутентификацию пользователей и single sign-on (SSO) функциональность, используя поддержку OpenID Connect, доступную начиная с версии платформы 1С 8.3.13. Как это будет выглядеть:

  • Пользователь открывает стартовое окно 1с через браузер и видит окно авторизации 1С
  • При нажатии на кнопку okta пользователь перенаправляется на страницу Okta, где проходит аутентификацию
  • При этом 1с  отправляет в Okta следующий запрос:
https://{YOUR_OKTA_URL}/oauth2/v1/authorize
?client_id={YOUR_CLIENT_ID}
&redirect_uri={YOUR_REDIRECT_URL}
&response_type=id_token%20token
&scope=openid%20email%20okta.users.read
&state={RANDOM_STATE}
&nonce={RANDOM_NONCE}
  • Okta возвращает ID токен в следующем формате:
id_token=AAAAAAA
token_type=Bearer
expires_in=3600
scope=openid+email+okta.users.read
state=445a0effda7a4c23882e5aed99009109
  • 1C авторизует пользователя по email и открывает окно конфигурации

 

Реализация

Для выполнения урока предварительно подготовьте развернутую базу 1С на веб-сервере. Подойдет даже файловая и не опубликованная наружу. Также отмечу, что все работы выполнялись на Платформе 1С версии 8.3.18.1208. Итак, начнем:

1. Создание аккаунта Okta и регистрация приложения 1С

1 В Okta есть два типа аккаунта - клиентский и разработчика. Нам нужен аккаунт разработчика, поэтому регистриуемся здесь https://developer.okta.com/signup/. Стоит отметить, что сервис не является бесплатным, но для наших целей с головой хватит ограничений бесплатного тарифа.
2 После регистрации мы получаем свой домен. Заходим в него. На главной странице консоли админа переходим в меню Applications и жмем Add application

3. Открывается окно со списком говых интеграций с приложениями. Нам оно не подходит, так что кликаем на кнопку в правой части Create new App, в диалоговом окне выбираем OpenID Connect и нажимаем Create

4. В появившемся окне заполняем Application Name и Login Redirect URIs и нажимаем Save. В качестве Login Redirect URIs нужно указать адрес к информационной базе 1С, опубликованной на веб-сервере по следующему формату: http://ХОСТ/ИМЯ_БАЗЫ/authform.html

5. Теперь мы открываем свойства самого приложения, которое только что создали. Напротив General Setting нажимаем на иконку с редактированием и ставим все галочки для поля Allowed Granted types. В реальности для 1С не требуется все типы токенов, но эта особенность находится за рамками данной статьи.

6. Переходим теперь на вкладку Directory -> people и создаем пользователя, которого мы хотим авторизовать в приложении 1С. Все шаги создания пользователя элементарны, и поэтмоу не будем акцентировать на них внимания в данной статье. Обратите внимание только на e-mail пользователя. Почта в 1С и в Okta должна совпадать, т.к. синхронизация будет выполняться именно по ней.

На этом настройка Okta завершена.


2. Настройка публикации 1С

1. Открываем файл default.vrd, который находится в каталоге, в котором была опубликована конфигурация 1С и редактируем его содержимое. Для этого добавляем новый дочерний тег <openidconnect> к родительскому тегу <point>:
 

<openidconnect>
    <providers><![CDATA[[
        {
            "name": "okta",
            "title": "okta",
            "discovery": "https:/ДОМЕН_ОКТЫ/oauth2/default/.well-known/openid-configuration",
            "authenticationClaimName": "email",
            "clientconfig": {
                "authority": "https://ДОМЕН_ОКТЫ",
                "client_id": "ВАШ_CLIENT_ID",
                "redirect_uri": "ВАШ_REDIRECT_URL",
                "response_type": "id_token token",
                "scope": "openid email okta.users.read",
                "filterProtocolClaims": false,
                "loadUserInfo": false
            }
        }
        ]]]>
    </providers>
    <allowStandardAuthentication>true</allowStandardAuthentication>
</openidconnect>

В качестве значения полей подстановки используем следующие:

  • ДОМЕН_ОКТЫ - URL с доменом, как написано в консоли админа Okta (например dev-9999999999.okta.com)
  • ВАШ_CLIENT_ID - Свойство приложения Okta, которое мы создали на прошлом шаге
  • ВАШ_REDIRECT_URL - адрес к информационной базе, должен совпадать с веденным на странице приложения Okta

Все значения полей можно найти на странице приложения в консоли администратора (вкладка applications), которое мы создали на предыдущем шаге.

Как видно из настроек, синронизация пользователей будет выполняться через e-mail

2. Создаем через конфигуратор нового пользователя в базе, которому в качестве имени и e-mail задаем e-mail пользователя, которого мы завели в Okta


3. На этом настройка в 1С завершена. Не забудьте перезагрузить веб-сервер перед тестированием


3. Тестирование


Теперь опишу шаги о том, как это с точки зрения пользователя должно работать:
1. Открывается браузер с окном входа в нашу 1С конфигурацию.
2. В нижней части окна авторизаци видим дополнительную кнопку okta, нажимаем на нее.
3. Открывается страница авторизации Okta, вводим e-mail и пароль пользователя, указанного в Okta и в 1С.
4. Браузер перенаправляет нас обратно в 1С, где  открывается начальная страница 1С приложения после авторизации.

На этом все! Спасибо за внимание. Надеюсь статья будет полезной и прольет немного света на такого замечательного провайдера авторизации, как Okta.

См. также

Заполнение по ИНН или наименованию реквизитов контрагента по данным сайта ФНС

Обмен с ГосИС WEB-интеграция Платформа 1С v8.3 Управляемые формы 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия государственного учреждения 1С:Документооборот 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Платные (руб)

Обработка является альтернативой механизму, разработанному фирмой 1С и заполняющему реквизиты контрагента по ИНН или наименованию. Не требуется действующей подписки ИТС. Вызывается как внешняя дополнительная обработка, т.е. используется, непосредственно, из карточки контрагента. Заполнение по ИНН или наименованию реквизитов контрагента по данным сайта ФНС (egrul.nalog.ru) для БП 2.0, БП 3.0, БГУ 1.0, БГУ 2.0, УТ 10.3, УТ 11.x, КА 1.1, КА 2.x, УПП 1.x, ERP 2.x, УНФ 1.5, УНФ 1.6, УНФ 3.0, ДО 2.1

2400 руб.

28.04.2016    86599    155    211    

310

Интеграция с сервисом vetmanager

WEB-интеграция Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Бытовые услуги, сервис Платные (руб)

Данная обработка разрабатывалась для загрузки документов из Ветменеджер в 1С: Бухгалтерия 3.

12000 руб.

02.02.2021    15213    41    49    

21

Merlion Commander Версия 1.3.9.2 - июль 2022 г. (Интеграция с 1С: УT, редакция 11.4, 1С:Розница 2.3,1С:ERP Управление предприятием 2, УТ 10.3, редакция веб-сервиса MERLION API 3.0 от 18.08.2021)

Оптовая торговля Розничная торговля WEB-интеграция Платформа 1С v8.3 1С:Управление торговлей 11 Россия Платные (руб)

Расширении конфигурации "Управление торговлей, редакция 11" для работы с веб-сервисом Мерлион с помощью Merlion API. Расширение и набор подключаемых дополнительных обработок позволяет без изменения конфигурации получить возможность работы с API крупнейшего российского дистрибьютора http://merlion.com. Логика работы максимально приближена к работе веб-сервиса b2b. Вы сможете создать и исправить заказ, зарезервировать товар прямо из 1С, посмотреть актуальные остатки и цены, импортировать штрихкода EAN13 товаров, загружать заказ c автоматическим созданием номенклатуры в 1С и корректности создания. Можно выбирать характеристики по товарным группам и загружать товар с выбранными характеристиками, загружать изображения товара. Не требуется установки дополнительного ПО для работы с веб-сервисом. Кроссплатформенное решение для ОС Windows и Linux. Весь код модулей открыт и доступен для просмотра и внесения изменений.

8280 руб.

02.05.2017    38476    42    64    

49
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. login1020 131 30.04.21 13:45 Сейчас в теме
и реализовать аутентификацию пользователей и single sign-on (SSO) функциональность, используя поддержку OpenID Connect, доступную начиная с версии платформы 1С 8.3.13.


Галку в 1с напротив Аутентификация OpenID не ставим?
2. optimus12345 518 30.04.21 13:50 Сейчас в теме
(1) Нет, она предназначена для использования платформенного механизма на 1с-ой промежуточной базе
3. zhuntovda 1 30.04.21 14:39 Сейчас в теме
Интересно, пили свою подобную преблуду. В администрирование проще, отрубать и подрубать базы в различных разрезах удобно. Нет геморроя с правами доступа на папки со списками баз. Правда авторизация по домену без openID на тонкий клиент. Сеть внутренняя.
4. Yashazz 4634 02.05.21 20:11 Сейчас в теме
"Отличный" способ. Идеально, чтобы пролюбить всю безопасность всех систем сразу. Потому что, когда эту авторизацию взломают, то влезут сразу всюду. Зоопарк паролей и способов авторизации хорош именно своей хаотичным разнообразием, над каждым случаем злоумышленнику пыхтеть придётся, а инсайдеру - копать инфу. Зато если всё сразу - приходи, кума, любоваться.
chng; faleks; user926893; u_n_k_n_o_w_n; +4 1 Ответить
5. Aleksey.Bochkov 3643 03.05.21 20:40 Сейчас в теме
(4) Okta поддерживает двойную аутентификацию.
14. chng 07.10.21 14:21 Сейчас в теме
(5)
Okta поддерживает двойную аутентификацию

Ну так-то да-а-а, безопасно...
Правда остается надеятся на то, что сия Okta не хостится в облаке фейсбука. Ибо повторись известные события, вам болгарка не поможет... Даже две... болгарки...

Но как экспириенс, статья полезная.
6. Cyberhawk 134 06.05.21 13:40 Сейчас в теме
Создаем через конфигуратор нового пользователя в базе, которому в качестве имени и e-mail задаем e-mail пользователя, которого мы завели в Okta
А как существующих пользователей ИБ (имена входа у них не являются адресами электронной почты) перевести на ОпенИД?
7. optimus12345 518 06.05.21 20:05 Сейчас в теме
(6) В теории настроить default.vrd для синхронизации по логину. И загрузить всех пользователей в в окту обработкой. Но, я, конечно это не проверял.
8. Alexey.remizov 11.05.21 15:57 Сейчас в теме
а в тонкий клиент (не браузер) так пустит?
9. optimus12345 518 12.05.21 21:10 Сейчас в теме
(8) Нет
12. andrew_shamin 154 07.07.21 01:36 Сейчас в теме
(8) Пустит.
тонкий клиент работает с ОКТА, если подключать его через https.
Alexey.remizov; +1 Ответить
13. Alexey.remizov 14.07.21 11:31 Сейчас в теме
(12) и у меня самого тоже получилось.. и через openID самого 1с, и через Google - в тонкий клиент пускает!
andrew_shamin; +1 Ответить
10. optimus12345 518 14.05.21 09:02 Сейчас в теме
Для справки по остальным провайдерам есть хорошая статья на ИТС https://its.1c.ru/db/metod8dev/content/5972/hdoc/google_provider_sample
Alexey.remizov; +1 Ответить
11. andrew_shamin 154 07.07.21 01:36 Сейчас в теме
Спасибо автору!
1. Однако следует отметить, что у меня изначально на платформе 8.3.16.1063 не взлетело.
Однако на платформе 8.3.18.1289 заработало.

2. Также хочу отметить, что тонкий клиент работает с ОКТА, если подключать его через https.
15. Catafot 28 28.10.21 15:48 Сейчас в теме
Спасибо автору. Публикация помогла.

Однако интересно можно ли шагнуть еще чуть дальше.

Можно ли уже после стандартной авторизации в 1С, как то программно обработать те данные что пришли из провайдера?

Например получим "Группы доступа пользователя" и исходя из этого дадим ему то или иное право в 1С.
Или какие-то значения по умолчанию.
16. G_102494916808039393172 20.12.21 00:39 Сейчас в теме
Коллеги, при интеграции с ОКТА тонкий клиент не дает возможности выбора как зайти с ОКТА или без, данный функционал работает только в браузере.
При запуске с тонкого клиента, выбор система дает только один раз, а потом данное окно больше не появляется, сразу идет переключение на ОКТА.
/ClearCache, удаление временных файлов и переустановка подключения не помогает

Может быть есть еще другие варианты?
Оставьте свое сообщение