Настраиваем авторизацию пользователей 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С:Управление торговлей 10 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Платные (руб)

Онлайн-заказ - это решение для автоматизации процесса оформления заказов на сайте в торговых организациях. Продукт обеспечивает легкое взаимодействие между компанией и клиентами через веб-интерфейс, интегрированный с 1С:Предприятие. Система позволяет снизить операционные расходы, повысить лояльность клиентов и оптимизировать работу отдела продаж.

57600 руб.

26.11.2024    5090    4    3    

7

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

Модуль "Подсистема интеграции AmoCRM с 1С" позволяет обеспечить единое информационное пространство, в котором пользователи могут эффективно управлять клиентской базой, следить за статусами сделок и поддерживать актуальность данных как в AmoCRM, так и в 1С.

60000 руб.

07.05.2019    37780    73    45    

31

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

Модуль "Экспортер" — это расширение для 1С, предназначенное для автоматизации процессов выгрузки данных. Оно позволяет эффективно извлекать, преобразовывать и передавать данные из систем 1С в интеграционную платформу Spot2D. Подсистема упрощает настройку, снижает количество ручных операций и обеспечивает удобный контроль данных.

14400 руб.

20.12.2024    2689    14    2    

16

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

3000 руб.

28.04.2016    96468    109    218    

359

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

В расширении реализован механизм интеграции между системой поставщика и Личным кабинетом СДТ. Реализован обмен заказами и реализациями (накладными), предусмотрено отслеживание статусов документов. Расширение предназначено для 1С:УТ 11.4.

35856 руб.

27.11.2024    1280    1    0    

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


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

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

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

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

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

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

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

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