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

    Авторизация с использованием учетных данных владельца

    Примечание

    Данный сценарий не требует интерактивного взаимодействия Пользователя с Веб-интерфейсом ЦИ.

    Спецификация описана в разделе 4.2 RFC 6749.

    Сценарий может быть представлен следующей схемой:

    image

    Для получения маркера доступа используется конечная точка /token. Клиент формирует следующий HTTP-запрос:

    Пример запроса

    POST https://<hostname>/<stsappname>/oauth/token HTTP/1.1
    Content-Type: application/x-www-form-urlencoded
    content-length: 133
    Connection: keep-alive
    
    grant_type=password&username=Test1&client_id=TestClient&resource=urn:cryptopro:dss:signserver:signserver&password=Test1Test1
    
    Примечание

    Параметры передаются в теле запроса, но не в query-string.

    Параметры запроса:

    • grant_type - в данном сценарии имеет значение password.
    • username - логин Владельца ресурса.
    • password - пароль Владельца ресурса.
    • resource - идентификатор ресурса, для доступа к которому выпускается токен. Для Сервиса Подписи идентификатор фиксирован и имеет вид urn:cryptopro:dss:signserver:<signserverAppName>.
    • client_id - идентификатор клиента OAuth, зарегистрированный на ЦИ.
    Примечание

    Для регистрации клиента и его последующей конфигурации можно воспользоваться командлетами Windows PowerShell Add-IdsClient и Set-IdsClient соответственно.

    Примечание

    При регистрации клиента параметр AllowedFlow должен иметь значение ResourceOwner.

    Если в рамках сценария необходима аутентификация клиентского приложения и известен его секрет, запрос необходимо модифицировать.

    Параметр client_id в теле запроса должен был заменен на заголовок Authorization HTTP-запроса, имеющий значение Basic Base64(client_id:client_secret).

    В случае успешного выполнения данного запроса ЦИ вернет следующий ответ:

    HTTP/1.1 200 OK
    Cache-Control: no-cache
    Pragma: no-cache
    Content-Length: 2196
    Content-Type: application/json; charset=utf-8
    Expires: -1
    Date: Fri, 14 Dec 2018 12:35:53 GMT
    Connection: close
    
    {"access_token":"eyJ0eXAiOiJKV1Qi...","expires_in":300,"token_type":"Bearer"}
    

    Типовые ошибки

    HTTP-код Ошибка Описание
    400 invalid_client OAuth-клиент не зарегистрирован или неверно указан clientID.
    400 unauthorized_client OAuth-клиент использует незарегистрированный сценарий аутентификации (Flow) или был передан некорретный redirect_uri.
    400 invalid_request Неверно сформирован параметр resource.
    400 invalid_grant Для пользователя включено подтверждение операции входа в ЦИ с помощью вторичной аутентификации.
    500 An error has occurred Проверяющая сторона с идентификатором resource не зарегистрирована.

    Пример сообщения об ошибке

    HTTP/1.1 400 Bad Request
    Cache-Control: no-cache
    Pragma: no-cache
    Expires: -1
    Date: Fri, 21 Dec 2018 13:46:42 GMT
    Connection: close
    
    {"error":"invalid_client"}
    
    В начало © ООО "КРИПТО-ПРО", 2000–2025