Интеграция с Okta

Общие сведения

Цель модуля

Бизнес-цель использования Okta – аутентификация на платформе посредством облачного сервиса управления удостоверениями и доступом.

Авторизация пользователей в приложении

Процесс авторизации

Схема процесса авторизации

Процесс входа на портал:

  • Способ 1:

    • Пользователь переходит на страницу авторизации на портале

    • Портал автоматически перенаправляет пользователя на страницу входа, размещенную на Okta

    • Пользователь вводит логин и пароль от учетной записи Okta

    • Okta перенаправляет обратно в Motivity, при этом в адресной стоке браузера есть Код;

    • Motivity обменивает этот Код на данные о пользователе, выполняя запрос к Okta;

    • Из полученных данных от Okta для авторизации нужен только email, чтобы сопоставить его с адресом, хранящимся в Motivity. Данные, полученные от Okta, в Motivity не хранятся и никак не обрабатываются.

    • Если пользователь с таким email найден - авторизуем его.

    • Проверяется наличие пользователя портала с введенным логином Okta, сценарии авторизации описаны в разделе Сценарии авторизации

  • Способ 2:

    • Пользователь на дашборде Okta выбирает подключенное приложение Motivity

    • При переходе из Okta в Motivity – Motivity перенаправляет его обратно в Okta за кодом, и пользователь возвращается уже с кодом по которому авторизуем способом 1.

Важно! При использовании авторизации посредством Okta, пользователям недоступна страница авторизации портала, вход в систему осуществляется только через страницу входа, размещенную на Okta, либо через дашборд Okta. Информация о пользователях Okta, например, уникальные идентификаторы, не хранятся на портале в целях обеспечения информационной безопасности.

В Okta администраторы Okta настраивают доступы к интеграциям.
Процесс определения пользователей и их прав доступа – внутренний. Поэтому, если такой процесс в компании есть, определение прав пользователей и соответствующая настройка производится самостоятельно.

Если у пользователя нет доступа к интеграции с Motivity, пользователь вернётся с ошибкой – отображается сообщение, что произошла ошибка и нужно обратиться к администратору.

Если у пользователя есть доступ к интеграции с Motivity, пользователь возвращается в Motivity с данными и мы производим авторизацию по email, который нам предоставила Okta.

Важно! На портале при использовании авторизации посредством Okta, пользователям смена пароля в личном кабинете недоступна.

Сценарии авторизации

При авторизации возможны следующие сценарии:

Кейс

Учетная запись Okta

Учетная запись Motivity

Результат

Копирайт

Кейс

Учетная запись Okta

Учетная запись Motivity

Результат

Копирайт

Учетные записи найдены и активны как на стороне Okta, так и на стороне портала

+

+

Пользователь успешно авторизован

 

Учетные записи найдены и активны как на стороне Okta, так и на стороне портала, но при перенаправлении Okta возвращает ошибку

+

+

Пользователь не авторизован на портале, при перенаправлении на страницу портала выводится ошибка

При авторизации возникла ошибка.

Обратитесь в Службу поддержки - при нажатии на ссылку открывается стандартная форма обратной связи.
Важно! На площадке должна быть создана хотя бы одна тема в разделе Помощь → Обратная связь.

По идентификатору пользователя невозможно получить токен пользователя

+

+

Пользователь не авторизован на портале, при перенаправлении на страницу портала выводится ошибка

При авторизации возникла ошибка.

Обратитесь в Службу поддержки - при нажатии на ссылку открывается стандартная форма обратной связи.

Учетная запись в Motivity не активна, либо не найдена

+

-

Пользователь не авторизован на портале, при перенаправлении на страницу портала выводится ошибка

Пользователь не найден, обратитесь в Службу поддержки - при нажатии на ссылку открывается стандартная форма обратной связи

Учетная запись в Okta не активна, либо не найдена

-

+

Вход на портал через Okta недоступен, при авторизации через логин и пароль выводится ошибка

Авторизация недоступна, обратитесь в Службу поддержки - при нажатии на ссылку открывается стандартная форма обратной связи

По идентификатору пользователя невозможно получить токен пользователя

+

+

Пользователь не авторизован на портале, при перенаправлении на страницу портала выводится ошибка

При авторизации возникла ошибка.

Обратитесь в Службу поддержки - при нажатии на ссылку открывается стандартная форма обратной связи.

Жизненный цикл сессии пользователя

Длительность сессии пользователя ограничена и равна 24 часам.
После автоматически выполняется выход из системы.
Для продолжения работы на портале требуется повторная авторизация.

Если пользователь активен, за 30 минут до завершения сессии, происходит автоматическое продление сессии на 30 минут.

Для выхода из системы в ручном режиме необходимо выполнить следующие действия:

  • выйти из Okta

  • выйти из Motivity через кнопку “Выход” в шапке портала.
    Правила отображения кнопки Выход если включена интеграция с Okta

    • Не отображается обычным пользователям.

    • Отображается если пользовать: имеет роль “Верховный администратор” или “Администратор” или происходит маскировка под пользователем.

Требования для сквозной авторизации посредством Okta

Для осуществление своевременной и оперативной поддержки пользователей администраторы портала должны иметь доступ в систему (минимум 2 учетные записи).
Для пользователей с системными ролями “Верховный администратор“ и “Администратор” доступна авторизация по логину и паролю по адресу https://[адрес портала]/admin.

Все возникающие ошибки соединения попадают в лог ошибок.

Как настроить подключение

Перед подключением сквозной авторизации необходимо отключить опцию “Изменение пароля пользователя” и рассылку пригласительных писем.

Для настройки подключения нужно заполнить поля во вкладке “Настройки”.

Что отключить

Где находится

Скриншот

Что отключить

Где находится

Скриншот

Рассылка пригласительных писем

/admin/sender/email_constructor/edit/user_invite

 

Опция “Изменение пароля пользователя”

/admin/system/settings

 

Настройка подключения выполняется в разделе Параметры системы - Интеграция с Okta.

Во вкладке “Настройки” (1) заполните поля. Если отключение указанных ранее опций не было проведено перейдите по ссылкам из подсказки (2) в соответствующие разделы для отключения опций.

После этого вернитесь во вкладку “Настройки” и заполните поля:
Все поля имеют ограничение – 255 символов.

  • Okta Domain (3)

    • По умолчанию выключен

    • Поле обязательно для заполнения.

    • Пример: subdomain.Okta.com

  • Authorization Server ID (4)

  • Client ID (5)

    • ID служебной учётной записи

    • Поле обязательно для заполнения

  • Client Secret (6)

    • Поле обязательно для заполнения

Все возникающие ошибки соединения попадают в лог ошибок.

Как настроить интеграцию с Okta

Последовательность действий для настройки интеграции с Okta:

  1. Необходимо авторизоваться в Okta под учетной записью администратора

  2. В консоли администратора выбрать пункт “Applications > Applications”

  3. Нажать на кнопку “Create App Integration”

  4. Выбрать OIDC - OpenID Connect в качестве метода входа (Sign-in method)

  5. Выбрать Web Application в качестве типа приложения (Application type) и нажать Next

    1. Важно выбрать соответствующий тип приложения для приложений, которые являются общедоступными клиентами. Невыполнение этого требования может привести к тому, что конечные точки API Okta попытаются проверить секретный ключ приложения, для которого не предназначены общедоступные клиенты, и нарушат процесс входа или выхода

  6. Ввести имя для интеграции приложения, либо оставить значение по умолчанию

  7. Ввести значение для Sign-in redirect URIs - обратный вызов, описанный в разделе Маршрут обратного вызова. Добавить значения для локальной разработки (пример, http://localhost:8080/authorization-code/callback) и продуктивной среды (пример, https://app.example.com/authorization-code/callback).
    Если клиент OpenID Connect имеет несколько redirect URIs и есть необходимость использовать один URI перенаправления с подстановочным знаком для поддомена, установите признак Allow wildcard * in sign-in redirect URI.

    1. Важно! Использование поддоменов с подстановочными знаками не рекомендуется как небезопасная практика, поскольку это может позволить злоумышленникам иметь токены или коды авторизации, отправленные на случайные или контролируемые злоумышленником страницы

    2. Пояснение термина поддомены – если у сайта есть разные поддомены: ru.example.com, en.example.com – то можно ввести *.example.com

  8. Добавить Base URI приложения для локальной разработки, например http://localhost:3000.
    Также необходимо добавить базовые URI, в которых приложение работает в производственной среде, например https://app.example.com

  9. Назначить нужную группу доступа, если для приложения заданы групповые назначения, либо оставить значение по умолчанию для всех (Everyone).
    См. раздел Назначение приложений для людей и групп в документации по продукту Okta (инструкции по назначению интеграции приложения отдельным пользователям и группам)

10. Нажать на кнопку Save для завершения создания интеграции приложения Okta.

11. На вкладке General  в разделе Client Credentials отображаются значения идентификатора клиента и секретный ключ для интеграции приложения

12. Необходимо скопировать Client ID и Client secret нажав на кнопку Copy to Clipboard рядом с каждым текстовым полем.
Позже вам нужно будет скопировать некоторые значения в приложение, поэтому оставьте консоль администратора открытой.

13. В разделе General Settings нажать кнопку Edit и прокрутить страницу вниз до поля Login.
Далее необходимо включить URI в поле Initiate login URI, чтобы сервис Okta инициировал процесс входа.
То есть при открытии определённых адресов, например example.com/login автоматически происходил запрос на авторизацию, без клика на кнопку авторизации.
Когда Okta перенаправляется на эту конечную точку (например, https://example.com/login), клиент запускается для отправки запроса на авторизацию.
Этот URI также используется, когда пользователи сбрасывают свои пароли при входе в приложение.
Сервис перенаправляет пользователя обратно на этот URI после сброса пароля, чтобы пользователь мог продолжить вход.

Маршрут обратного вызова

Что это такое

Маршрут, по которому Okta возвращает информацию о пользователя в момент входа в систему, называется маршрутом обратного вызова.

Маршрут обратного вызова не отображается в пользовательской части портала.

В чём суть процесса

Администратор создаёт специальный маршрут. Сам пользователь по этому маршруту не заходит.

Motivity посылает пользователя в Okta. Okta после успешной авторизации перенаправляет пользователя на наш специальный адрес вместе с данными о пользователе.

Когда пользователь приходит на этот адрес, Motivity получает пользовательские данные, сравнивает их с данными на платформе и авторизовывает, если данные обнаружены.
После Motivity перенаправляет пользователя на заданную страницу. Пример: главная страница.

Какова механика подключения через Okta

  1. Motivity перенаправляет браузер на страницу входа, размещенную на Okta

  2. Пользователь вводит логин и пароль от Okta

  3. Okta перенаправляет запрос обратно в приложение с информацией о пользователе

Настройка пакета

Для настройки пакета необходима информация, которая была сгененирована на этапе подключения приложения к Okta:

  • Client ID - в списке приложений или на вкладке приложения General

  • Client Secret - найдите его на вкладке General  приложения.

  • Okta Domain - домен Okta располагается в заголовке консоли администратора в правом верхнем углу страницы. Нажав на раздел, в котором отображается адрес электронной почты и название компании, в выпадающем списке будет отображаться общая информация об организации, включая полный домен Okta (например, subdomain.Okta.com).

Можно использовать настраиваемый сервер авторизации по умолчанию, который предоставляется в версии Okta Developer Edition.
Для использования другого настраиваемого сервера авторизации, потребуются следующие значения из консоли администратора:

  • Authorization Server ID  - располагается в разделе Security > API > Authorization Server name > вкладка Settings. ID сервера авторизации (Authorization Server ID) – это последняя сгенерированная строка идентификатора из свойства Issuer.
    Пример, если Issuer - https://dev-000000.Okta.com/oauth2/auss5kkzkkzYune155e6, ID сервера авторизации auss5kkzkkzYune155e6.

Важно! Функция Управление доступом к API, должна быть включена для организации в Okta, для возможности использования пользовательского сервера авторизации.