Авторизация с использованием учетных данных владельца
Примечание
Данный сценарий не требует интерактивного взаимодействия Пользователя с Веб-интерфейсом ЦИ DSS.
Спецификация описана в разделе 4.2 RFC 6749.
Сценарий может быть представлен следующей схемой:
Для получения маркера доступа используется конечная точка /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, зарегистрированный на ЦИ DSS.
Примечание
Для регистрации клиента и его последующей конфигурации можно воспользоваться командлетами Windows PowerShell Add-DssClient и Set-DssClient соответственно.
Примечание
При регистрации клиента параметр 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"}