Вызов вспомогательного приложения в момент входа#

В момент входа Blitz Identity Provider может вызвать вспомогательное приложение, которое выполнит дополнительные операции (например, покажет пользователю информационное сообщение или запросит актуализацию сведений), после чего вернет пользователя в Blitz Identity Provider для последующего входа в целевое приложение.

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

  • обработка запроса на открытие вспомогательного приложения,

  • возвращение пользователя в Blitz Identity Provider после окончания обработки.

Запрос об открытии приложения#

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

  1. Переход во вспомогательное приложение происходит посредством перенаправления пользователя на предоставленную приложением ссылку. Ссылка в качестве параметра будет содержать код авторизации (code).

    Пример ссылки для инициирования запроса#
    https://<app_hostname>/?lang=ru&theme=default&code=0Tj…qw
    
  2. Приложение должно обменять код авторизации на маркер доступа согласно спецификации 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 производится следующим образом:

  1. Выполнив необходимые действия (например, показав пользователю информационное сообщение), вспомогательное приложение должно вернуть пользователя в Blitz Identity Provider. Для этого необходимо декодировать полученный маркер доступа, полученный в формате JWT, и извлечь из него утверждение с сессией пользователя (sessionId).

    Пример тела декодированного access_token#
    {
        "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"
    }
    
  2. После декодирования маркера доступа вспомогательное приложение должно сделать 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"}}'
    
  3. В случае успеха Blitz Identity Provider вернет HTTP 204 No Content. Получив его, вспомогательное приложение должно вернуть браузер пользователя по адресу /login/pipe/callback, чтобы пользователь завершил вход в целевое приложение.

    Пример ссылки для перенаправления#
    https://login.company.com/blitz/login/pipe/callback