Вызов вспомогательного приложения в момент входа#
В момент входа Blitz Identity Provider может вызвать вспомогательное приложение, которое выполнит дополнительные операции (например, покажет пользователю информационное сообщение или запросит актуализацию сведений), после чего вернет пользователя в Blitz Identity Provider для последующего входа в целевое приложение.
С технической точки зрения вспомогательное приложение должно выполнять следующие действия:
обработка запроса на открытие вспомогательного приложения,
возвращение пользователя в Blitz Identity Provider после окончания обработки.
Запрос об открытии приложения#
Прием запроса о вызове вспомогательного приложения происходит следующим образом:
Переход во вспомогательное приложение происходит посредством перенаправления пользователя на предоставленную приложением ссылку. Ссылка в качестве параметра будет содержать код авторизации (
code
).https://<app_hostname>/?lang=ru&theme=default&code=0Tj…qw
Приложение должно обменять код авторизации на маркер доступа согласно спецификации OAuth 2.0. Маркер доступа будет использован для получения идентификатора сессии, чтобы вернуть пользователя в Blitz Identity Provider, а также данных пользователя при необходимости.
Пример
curl -k -d "grant_type=authorization_code&redirect_uri=https%3A%2F%2Fapp.company.com%2F&client_id=app&client_secret=EW…l0&code=0Tj…qw" -X POST https://login.company.com/blitz/oauth/te
{ "access_token": "ey…J9.ey…n0.Wa…Pw", "token_type": "Bearer", "expires_in": 3600, "scope": "profile" }
Важно
Вспомогательное приложение должно быть предварительно зарегистрировано в Blitz Identity Provider с учетом следующих особенностей:
должен быть указан предопределенный URL возврата, именно он далее должен быть использован для получения токена;
должны быть настроены разрешения по умолчания (
scope
), именно они определяют объем данных, получаемых вспомогательным приложением.
Возврат пользователя в Blitz Identity Provider#
Возврат пользователя в Blitz Identity Provider производится следующим образом:
Выполнив необходимые действия (например, показав пользователю информационное сообщение), вспомогательное приложение должно вернуть пользователя в Blitz Identity Provider. Для этого необходимо декодировать полученный маркер доступа, полученный в формате JWT, и извлечь из него утверждение с сессией пользователя (
sessionId
).{ "scope": "blitz_api_user blitz_api_user_chg blitz_api_usec_chg", "jti": "kfP…jA", "client_id": "app", "exp": 1631026605, "sessionId": "ce9f3109-ac79-46b4-b277-099ff1aa1ff0", "iat": 1631023005, "sub": "8b970179-e141-43b9-b9d5-25997be99261", "aud": [ "app" ], "crid": "u9th2LzMXZdwb3rRmI3Paw", "iss": "https://login.company.com/blitz" }
После декодирования маркера доступа вспомогательное приложение должно сделать POST-запрос на URL обработчика завершения аутентификации Blitz Identity Provider
/login/pipe/save/<sessionId>
. В теле запроса может быть указан набор утверждений (claims
), которые следует добавить в сессию пользователя, либо информация об ошибке (error
).curl -v --location --request POST 'https://login.company.com/blitz/login/pipe/save/ce9f3109-ac79-46b4-b277-099ff1aa1ff0' \ --header 'Content-Type: application/json' \ --header 'Authorization: Basic Z2…ww' \ --data-raw '{"claims":{"org_id":"12345678"}}'
В случае успеха Blitz Identity Provider вернет
HTTP 204 No Content
. Получив его, вспомогательное приложение должно вернуть браузер пользователя по адресу/login/pipe/callback
, чтобы пользователь завершил вход в целевое приложение.https://login.company.com/blitz/login/pipe/callback