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

13

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

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

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

5040 руб.

04.05.2021    17891    6    15    

12

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

Обмен с ГосИС 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    88952    163    216    

318

[Расширение] БОР-Навигатор.Культура

Зарплата Бюджетный учет WEB-интеграция Обмен с ГосИС Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бюджетный учет Платные (руб)

Расширение конфигурации, включающее в себя объекты, необходимые для подготовки и сдачи отчета "Штатная численность" системы "БОР-Навигатор.Культура" в программе "1С:Зарплата и кадры государственного учреждения", редакция 3.1.

8400 руб.

01.02.2019    25874    9    0    

7

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

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

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

12000 руб.

02.02.2021    16480    42    49    

23
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. login1020 133 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 4723 02.05.21 20:11 Сейчас в теме
"Отличный" способ. Идеально, чтобы пролюбить всю безопасность всех систем сразу. Потому что, когда эту авторизацию взломают, то влезут сразу всюду. Зоопарк паролей и способов авторизации хорош именно своей хаотичным разнообразием, над каждым случаем злоумышленнику пыхтеть придётся, а инсайдеру - копать инфу. Зато если всё сразу - приходи, кума, любоваться.
chng; faleks; user926893; u_n_k_n_o_w_n; +4 1 Ответить
5. Aleksey.Bochkov 3660 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, удаление временных файлов и переустановка подключения не помогает

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