Показать/Скрыть содержание

    Сервисный OAuth-клиент

    В случае если интегрируемая система не предусматривает интерактивного взаимодействия с пользователем для получения учетных данных или не хранит учетные данные, то взаимодействие с СЭП может быть реализовано по схеме Сервис-Сервис.

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

    • по паролю
    • по сертификату

    При использовании данной схемы сторонняя система может вызывать API от имени пользователя.

    Примечание

    Сервисный Oauth-клиент не позволяет выполнить действия, требующие двухфакторной аутентификации, без подтверждения пользователя. Исключение составляет операция подтверждения входа.

    Ограничения

    При работе по схеме Сервис-Сервис на сценарий аутентификации накладывается ряд ограничений. Для того, чтобы сторонняя система смогла корректно работать в рамках данной схемы, необходимо следующее:

    • Запрос на авторизацию должен проходить по сценарию Пароль (password) или Обмен токена (Token Exchange);
    • Клиент должен быть конфиденциальным, то есть обладать назначенным ему секретом.
    Примечание

    При выполнении сценариев аутентификации, отличных от описанных выше, данный клиент работает в соответствии со спецификацией.

    Регистрация

    Для регистрации клиента в режиме сервисного необходимо воспользоваться командлетом Add-IdsClient с параметром SuppressAuthForIssue, а также параметром GenerateSecret для регистрации конфиденциального клиента.

    Пример команды:

    Add-IdsClient -Identifier test_id -Name testId -AllowedFlow ResourceOwner -GenerateSecret -SuppressAuthForIssue 1
    

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

    • Выполнить назначение секрета модифицируемому клиенту при помощи командлета Add-IdsClientSecret.

    Пример команды:

    Add-IdsClientSecret -ClientId test_id -Type SharedSecret -Value 12345
    
    Примечание

    В случае, если клиент уже является конфиденциальным, данный шаг можно пропустить.

    • Задать параметр SuppresAuthForIssue Oauth-клиента в значение true посредством командлета PowerShell Set-IdsClientSecret.

    Пример команды:

    Set-IdsClient -ClientId test_id -SuppressAuthForIssue 1
    

    Примеры

    В данном примере использован метод аутентификации сторонней системы по паролю.

    Пример запроса на аутентификацию:

    POST /STS/oauth/token HTTP/1.1
    Host: grand-pc
    Content-Type: application/x-www-form-urlencoded
    Authorization: Basic dGVzdF9pZDoxMjM0NQ==
    
    grant_type=password&username=Test1&resource=urn%3Acryptopro%3Adss%3Asignserver%3ASignServer&password=
    
    Примечание

    Несмотря на то, что пароль пользователя не проверяется, параметр password должен обязательно присутствовать в запросе.

    Пример ответа:

    {
        "access_token": "eyJ0eXAiOiJK...",
        "expires_in": 300,
        "token_type": "Bearer"
    }
    
    В начало © ООО "КРИПТО-ПРО", 2000–2025