Интеграция с 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, так и на стороне портала | + | + | Пользователь успешно авторизован |
|
Учетные записи найдены и активны как на стороне Okta, так и на стороне портала, но при перенаправлении Okta возвращает ошибку | + | + | Пользователь не авторизован на портале, при перенаправлении на страницу портала выводится ошибка | При авторизации возникла ошибка. Обратитесь в Службу поддержки - при нажатии на ссылку открывается стандартная форма обратной связи. |
По идентификатору пользователя невозможно получить токен пользователя | + | + | Пользователь не авторизован на портале, при перенаправлении на страницу портала выводится ошибка | При авторизации возникла ошибка. Обратитесь в Службу поддержки - при нажатии на ссылку открывается стандартная форма обратной связи. |
Учетная запись в Motivity не активна, либо не найдена | + | - | Пользователь не авторизован на портале, при перенаправлении на страницу портала выводится ошибка | Пользователь не найден, обратитесь в Службу поддержки - при нажатии на ссылку открывается стандартная форма обратной связи |
Учетная запись в Okta не активна, либо не найдена | - | + | Вход на портал через Okta недоступен, при авторизации через логин и пароль выводится ошибка | Авторизация недоступна, обратитесь в Службу поддержки - при нажатии на ссылку открывается стандартная форма обратной связи |
По идентификатору пользователя невозможно получить токен пользователя | + | + | Пользователь не авторизован на портале, при перенаправлении на страницу портала выводится ошибка | При авторизации возникла ошибка. Обратитесь в Службу поддержки - при нажатии на ссылку открывается стандартная форма обратной связи. |
Жизненный цикл сессии пользователя
Длительность сессии пользователя ограничена и равна 24 часам.
После автоматически выполняется выход из системы.
Для продолжения работы на портале требуется повторная авторизация.
Если пользователь активен, за 30 минут до завершения сессии, происходит автоматическое продление сессии на 30 минут.
Для выхода из системы в ручном режиме необходимо выполнить следующие действия:
выйти из Okta
выйти из Motivity через кнопку “Выход” в шапке портала.
Правила отображения кнопки Выход если включена интеграция с OktaНе отображается обычным пользователям.
Отображается если пользовать: имеет роль “Верховный администратор” или “Администратор” или происходит маскировка под пользователем.
Требования для сквозной авторизации посредством Okta
Для осуществление своевременной и оперативной поддержки пользователей администраторы портала должны иметь доступ в систему (минимум 2 учетные записи).
Для пользователей с системными ролями “Верховный администратор“ и “Администратор” доступна авторизация по логину и паролю по адресу https://[адрес портала]/admin.
Все возникающие ошибки соединения попадают в лог ошибок.
Как настроить подключение
Перед подключением сквозной авторизации необходимо отключить опцию “Изменение пароля пользователя” и рассылку пригласительных писем.
Для настройки подключения нужно заполнить поля во вкладке “Настройки”.
Что отключить | Где находится | Скриншот |
---|---|---|
Рассылка пригласительных писем |
|
|
Опция “Изменение пароля пользователя” |
|
|
Настройка подключения выполняется в разделе Параметры системы - Интеграция с Okta.
Во вкладке “Настройки” (1) заполните поля. Если отключение указанных ранее опций не было проведено перейдите по ссылкам из подсказки (2) в соответствующие разделы для отключения опций.
После этого вернитесь во вкладку “Настройки” и заполните поля:
Все поля имеют ограничение – 255 символов.
Okta Domain (3)
По умолчанию выключен
Поле обязательно для заполнения.
Пример:
subdomain.Okta.com
Authorization Server ID (4)
Заполняется последней сгенерированной строкой идентификатора из свойства Issuer, подробнее в разделе Настройка пакета
Поле необязательно для заполнения
Пример: auss5kkzkkzYune155e6
Client ID (5)
ID служебной учётной записи
Поле обязательно для заполнения
Client Secret (6)
Поле обязательно для заполнения
Все возникающие ошибки соединения попадают в лог ошибок.
Как настроить интеграцию с Okta
Последовательность действий для настройки интеграции с Okta:
Необходимо авторизоваться в Okta под учетной записью администратора
В консоли администратора выбрать пункт “Applications > Applications”
Нажать на кнопку “Create App Integration”
Выбрать OIDC - OpenID Connect в качестве метода входа (Sign-in method)
Выбрать Web Application в качестве типа приложения (Application type) и нажать Next
Важно выбрать соответствующий тип приложения для приложений, которые являются общедоступными клиентами. Невыполнение этого требования может привести к тому, что конечные точки API Okta попытаются проверить секретный ключ приложения, для которого не предназначены общедоступные клиенты, и нарушат процесс входа или выхода
Ввести имя для интеграции приложения, либо оставить значение по умолчанию
Ввести значение для 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.Важно! Использование поддоменов с подстановочными знаками не рекомендуется как небезопасная практика, поскольку это может позволить злоумышленникам иметь токены или коды авторизации, отправленные на случайные или контролируемые злоумышленником страницы
Пояснение термина поддомены – если у сайта есть разные поддомены:
ru.example.com
,en.example.com
– то можно ввести*.example.com
Добавить Base URI приложения для локальной разработки, например
http://localhost:3000
.
Также необходимо добавить базовые URI, в которых приложение работает в производственной среде, напримерhttps://app.example.com
Назначить нужную группу доступа, если для приложения заданы групповые назначения, либо оставить значение по умолчанию для всех (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
Motivity перенаправляет браузер на страницу входа, размещенную на Okta
Пользователь вводит логин и пароль от Okta
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, для возможности использования пользовательского сервера авторизации.