Настраиваем авторизацию пользователей 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.

См. также

Интеграция Альфа Авто 5 / Альфа Авто 6 и AUTOCRM / Инфотек

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

Интеграционный модуль обмена между конфигурацией Альфа Авто 5 и Альфа Авто 6 и порталом AUTOCRM. Данный модуль универсален. Позволяет работать с несколькими обменами AUTOCRM разных брендов в одной информационной базе в ручном и автоматическом режиме.

36000 руб.

03.08.2020    16087    13    18    

13

Интеграция 1С — Битрикс24. Обмен задачами

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

Интеграция 1С и Битрикс24. Разработка имеет двухстороннюю синхронизацию 1С и Битрикс24 задачами. Решение позволяет создавать пользователя в 1С из Битрикс24 и наоборот. Данная разработка технически подходит под все основные конфигурации линейки продуктов 1С:Предприятие 8.3 (платформа начиная с 8.3.23). При приобретении предоставляется 1 месяц бесплатных обновлений разработки. Доступна демо-версия продукта с подключением Вашего Битрикс24

5040 руб.

04.05.2021    18181    10    15    

16

Автоматическая загрузка файлов (например, прайс-листов) из электронной почты, FTP, HTTP, их обработка и выгрузка на FTP (на сайт) и для других целей

Прайсы WEB-интеграция Ценообразование, анализ цен Файловый обмен (TXT, XML, DBF), FTP Автомобили, автосервисы Оптовая торговля, дистрибуция, логистика Управленческий учет Платные (руб)

Программа с заданным интервалом времени (или по ручной команде) скачивает файлы (например, прайс-листы поставщиков) из различных источников: письма электронной почты, FTP или HTTP-адреса, и сохраняет их в каталог упорядоченной структуры. При этом извлекает файлы из архивов, может переименовывать файлы и менять их формат (csv, xls, txt). Можно настроить выгрузку обработанных файлов на сайт (через FTP-подключение). Программа будет полезна компаниям, у которых есть большое количество поставщиков и/или прайс-листы поставщиков обновляются часто (необязательно прайс-листы, файлы могут быть любого назначения). Собранные таким образом актуальные версии прайс-листов можно выгрузить с помощью программы себе на сайт (или на любой FTP-сервер) или выполнить другие необходимые задачи.

25200 руб.

28.05.2015    85396    26    51    

50

Модуль для обмена "1С:Предприятие 8. УАТ. ПРОФ" с FortMonitor

WEB-интеграция 8.3.8 Конфигурации 1cv8 Автомобили, автосервисы Беларусь Украина Россия Казахстан Управленческий учет Платные (руб)

Расширение предназначено для конфигурации "1С:Предприятие 8. Управление Автотранспортом. ПРОФ". Функционал модуля: 1. Заполнение регистров сведений по подсистеме "Мониторинг", а именно: события по мониторингу, координаты по мониторингу, пробег и расход по мониторингу, текущее местоположение ТС по мониторингу 2. Заполнение путевого листа: пробег по мониторингу, время выезда/заезда, табличная часть ГСМ, места стоянок по геозонам. 3. Отчеты по данным загруженным в регистры сведений. 4. Предусмотрена автоматическая загрузка данных в фоновом режиме (условия работы данной загрузке читайте в описании товара) Модуль работает без включенной константы по настройкам мониторинга. Модуль формы предоставляется с открытым кодом, общий модуль защищен. Любой заинтересованный пользователь, имеет возможность скачать демо-версию расширения.

22656 руб.

25.05.2021    12997    33    8    

12

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

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

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

12000 руб.

02.02.2021    16624    43    49    

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


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

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

Но как экспириенс, статья полезная.
6. Cyberhawk 135 06.05.21 13:40 Сейчас в теме
Создаем через конфигуратор нового пользователя в базе, которому в качестве имени и e-mail задаем e-mail пользователя, которого мы завели в Okta
А как существующих пользователей ИБ (имена входа у них не являются адресами электронной почты) перевести на ОпенИД?
7. optimus12345 521 06.05.21 20:05 Сейчас в теме
(6) В теории настроить default.vrd для синхронизации по логину. И загрузить всех пользователей в в окту обработкой. Но, я, конечно это не проверял.
8. Alexey.remizov 11.05.21 15:57 Сейчас в теме
а в тонкий клиент (не браузер) так пустит?
9. optimus12345 521 12.05.21 21:10 Сейчас в теме
12. andrew_shamin 164 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 521 14.05.21 09:02 Сейчас в теме
Для справки по остальным провайдерам есть хорошая статья на ИТС https://its.1c.ru/db/metod8dev/content/5972/hdoc/google_provider_sample
Alexey.remizov; +1 Ответить
11. andrew_shamin 164 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, удаление временных файлов и переустановка подключения не помогает

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