Конечная точка Devices
Конечная точка Devices
предоставляет методы для управления устройствами пользователя DSS.
Список методов:
- Регистрация первого устройства
- Регистрация первого устройства с использованием Kinit
- Подтверждение установки векторов аутентификации
- Получение данных для подтверждения присоединения МУ к УЗ при помощи подписи
- Подтверждение присоединения МУ к УЗ
- Получение сведений об устройствах
- Удаление устройства
- Регистрация другого устройства
- Проверка статуса запроса на регистрацию другого устройства
- Одобрение запроса на регистрацию другого устройства
- Отклонение запроса на регистрацию другого устройства
- Обновление сведений об устройстве пользователя
Протокол Secure Storage Key (SSK)
Метод вызывается для выполнения протокола SSK и/или аутентификации КриптоПроКлюч. В зависимости от типа запроса клиент может запросить:
- инициализацию протокола SSK (Setup)
- выполнение протокола SSK (получение доступа к ключам аутентификации)
- запрос аутентификационных данных
Параметр | Значение |
---|---|
HTTP-метод | POST |
Путь | /v1/devices/ssk |
Аутентификация | Аутентификация на ключе Kauth . |
Параметры | Объект SskRequest, содержащий параметры протокола SSK. |
Возвращаемое значение | Объект SskResponse, содержащий параметры протокола SSK. |
Типовые ошибки
HTTP-код | Ошибка | Описание |
---|---|---|
Пример запроса
POST https://testkey.cryptopro.ru:4430/Mdag/v1/devices/ssk
Authorization: myDSS 49372985:iYOxjp4AObrsZ+d/BQtMoxlMAt2B3yqGP13I/fn/dNA=:u9yKXR5KiMxhXMbgb0P7Rtp86/Jr9IvlquBW6e9eTAA=
{
"ClientA": "BiAAAEkuAABNQUcxAAIAADALBgkqhQMHAQ ... p/dd2gepx+7ONoyTC6tritwXh3bqZvMfp",
"Type": 1
}
** Пример ответа**
Transfer-Encoding: chunked
Connection: keep-alive
api-supported-versions: 1.0
{
"serverB": "BiAAAEkuAABNQUcxAAIAADAL ... s0d/uzJc7mAulUCJLqu6UyygFfhzY5GTc",
"random": null,
"error": null,
"errorDescription": null,
"sessionExpiresAt": 1699817971,
"passwordAttempts": 5,
"lockOutTimeOut": 0
}
Пример запроса
POST https://testkey.cryptopro.ru:4430/Mdag/v1/devices/ssk
Authorization: myDSS 49372985:pbKPDUlRmB3DKxpjlG1zeXH49IU3RJwRd5Iph4OL134=:gdeRa68/a2nIoMBxa5n14+u88OLDpnKcxki/iJIuPuU=
{
"ClientA": "BiAAAEkuAABNQUcxAAIAADALBgkqhQMHA ... W100dm4Nw9NERX0qw6",
"Type": 0
}
** Пример ответа**
Transfer-Encoding: chunked
Connection: keep-alive
api-supported-versions: 1.0
{
"serverB": "BiAAAEkuAABNQUcxAAIAADALBgkqh ... JJ+Y6XGx39xDmE7Enr",
"random": "TYg+iSVCLYHvj3tJzx7YdqUIwNHSUWBNHbZDvdIN+BM=",
"error": null,
"errorDescription": null,
"sessionExpiresAt": 0,
"passwordAttempts": 5,
"lockOutTimeOut": 0
}
Протокол Secure Storage Key (SSK) Authentication
Метод вызывается для завершения аутентификации в протоколе SSK.
Параметр | Значение |
---|---|
HTTP-метод | POST |
Путь | /v1/devices/ssk/auth |
Аутентификация | Аутентификация на ключе Kauth . |
Параметры | Объект SskAuthRequest, содержащий параметры протокола SSK Auth. |
Возвращаемое значение | Объект SskAuthResponse, содержащий параметры протокола SSK Auth. |
Запрос должен выполняться с type = usage (1)
Типовые ошибки
HTTP-код | Ошибка | Описание |
---|---|---|
Пример запроса
POST https://testkey.cryptopro.ru:4430/Mdag/v1/devices/ssk/auth
Authorization: myDSS 49372985:K62npCTPBcUwMHq9r5HiyyQNWjtjV7L/XUR1dcdd9iE=:cJ4x6w5GHCqeetLvy79n8JuzmDKzg0SmITdW6x8Wg44=
{
"Response": "wZdtenDpXrWt1p2tBz5GbIiFd9MMjpu1Uixscsg8up0="
}
Пример ответа
Transfer-Encoding: chunked
Connection: keep-alive
api-supported-versions: 1.0
{
"error": null,
"errorDescription": null,
"sessionExpiresAt": 1699818061,
"passwordAttempts": 5,
"lockOutTimeOut": 0
}
Смена ПИН-кода в протоколе Secure Storage Key (SSK)
Запрос смены ПИН-код
Параметр | Значение |
---|---|
HTTP-метод | POST |
Путь | /v1/devices/ssk/change |
Аутентификация | Аутентификация на ключе Kconf . |
Параметры | Объект SskRequest, содержащий параметры протокола SSK. |
Возвращаемое значение | Объект SskResponse, содержащий параметры протокола SSK. |
Запрос должен выполняться с type = change (2)
Типовые ошибки
HTTP-код | Ошибка | Описание |
---|---|---|
Пример запроса
POST https://testkey.cryptopro.ru:4430/Mdag/v1/devices/ssk/change
Authorization: myDSS 22818299:M4SLcySu9YnJYsSsXRR3KxSbGsBnaDIsxEW0ya2ENgk=:FAYRvY20tlQGLSfuM6GG+dc8yfYT92raG5Y6lLOoL4I=
{
"ClientA": "BiAAAEkuAABNQUcxAAIAADALBgkqhQMHAQ ... hdBdbPFJ",
"Type": 2
}
** Пример ответа**
Transfer-Encoding: chunked
Connection: keep-alive
api-supported-versions: 1.0
{
"serverB": "BiAAAEkuAABNQUcxAAIAADAL ... s0d/uzJc7mAulUCJLqu6UyygFfhzY5GTc",
"sessionExpiresAt": 1699817971,
"passwordAttempts": 5,
"lockOutTimeOut": 0
}
Подтверждение смены ПИН-кода в протоколе Secure Storage Key
Метод вызывается для завершения смены ПИН-кода в протоколе SSK.
Параметр | Значение |
---|---|
HTTP-метод | POST |
Путь | /v1/devices/ssk/change/confirm |
Аутентификация | Аутентификация на ключе Kauth . |
Параметры | Нет параметров |
Возвращаемое значение | Нет возвращаемого значения |
Типовые ошибки
HTTP-код | Ошибка | Описание |
---|---|---|
Пример запроса
POST https://testkey.cryptopro.ru:4430/Mdag/v1/devices/ssk/change/confirm
Authorization: myDSS 22818299:GBR2IjgTka84QBdDzCj/ZCraDlB2AL657xh2eC8H68g=:Ew6SFIgTFIeNmXMZXHMbUScYOpxMWH0QRm8LUtJ7aCY=
Регистрация первого мобильного устройства
Метод отправляет запрос на регистрацию первого мобильного устройства (МУ). Метод создает на сервере неподтвержденное мобильное устройство и возвращает зашифрованный блоб с векторами аутентификации.
В запросе могут быть переданы два необязательных параметра:
UserName
- желаемое имя пользователя (login), имя пользователя может быть использовано вызывающей системой для управления учетной записью пользователя. Если данный параметр отсутствует в запросе, то его значение будет создано автоматически на стороне сервера.Alias
- уникальный человекочитаемый идентификатор, используемый для подтверждения владения МУ пользователем. Если данный параметр отсутствует в запросе, то его значение будет создано автоматически на стороне сервера.
Параметр | Значение |
---|---|
HTTP-метод | POST |
Путь | /v1/devices |
Аутентификация | Запрос не аутентифицирован. |
Параметры | Объект RegInfo, содержащий сведения о регистрируемом устройстве. |
Возвращаемое значение | Объект Device, содержащий сведения о ключах аутентификации. |
Примечание
Запрос не аутентифицирован.
Типовые ошибки
HTTP-код | Ошибка | Описание |
---|---|---|
400 | invalid_input |
Отсутвует тело запроса |
400 | invalid_identifier |
Не передана информация о регистрируемом устройстве |
400 | wrong_operation |
Операция саморегистрации пользователей myDSS запрещена |
400 | invalid_login |
Логин не задан или имеет невалидный формат |
400 | not_unique_login |
Пользователь с данным логином уже существует |
400 | invalid_phone |
Полученное значение не является номером телефона |
400 | not_unique_phone |
Пользователь с таким номером телефона уже существует |
400 | invalid_email |
Полученное значение не является адресом электронной почты |
400 | not_unique_email |
Пользователь с таким адресом электронной почты уже существует |
400 | invalid_device_fingerprint |
Параметр deviceFingerprint не задан |
400 | not_unique_device_fingerprint |
Пользователь с таким отпечатком мобильного устройства уже существует |
400 | invalid_device_params |
Значение парметра osType не поддерживается |
400 | invalid_device_params |
Парметр pushAddress не задан |
400 | invalid_device_params |
Парметр deviceName не задан |
500 | internal_error |
Внутренняя ошибка сервера |
Пример
Запрос
POST /mydss/v1/devices HTTP/1.1
Host: teststand.cryptopro.ru
Content-Type: application/json
Content-Length: 299
{
"deviceFingerprint": "0054e5fc-6797-421b-8917-dc0298804158",
"pushAddress": "push-address",
"osType": "Android",
"osVersion": "4.0.0",
"deviceMode": "AppleIPhoneA",
"deviceName": "MyApple",
"locale": "ru-RU",
"timeZoneUtcOffset": "3",
"appVersion": "1.0",
"phone": "79998887766",
"email": "test@cryptropro.ru",
"publicKey" : "BiAAAEkuAABNQUcxAAIAADATBgcqhQMCAiQABggqhQMHAQECAoEft+BSCBo5dfpTu9Ih6a1TXoNg1la2Z13q1NBAGHY3m9aVJsHoccwVXhzlMM72Nr3EF4QhNTbUYvYYJ7Ale+M="
}
Ответ
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Date: Fri, 17 May 2019 04:53:09 GMT
{
"kid": "63002723",
"uid": "0dbea5eb-667c-4284-a5e6-1deaa838911f",
"publicKey": "BiAAAEkuAABNQUcxAAIAADATBgcqhQMCAiQABggqhQMHAQECAhDFOrLWRqF0tDgteCjHJkGybqT/LBxqGfA9+5whXr3qCpFK8AK8RxaHaiANgz5b+2yQ9kyhVfJRdU5i633Sn58=",
"encryptedBlobs": "ta70SK/cjHZOotrmVRQ2aGsxe/cfnjDjRDeIAPhnTY2MmkJa5H72sQNiwIL792rh+9SC7wM35Tle2hky8KDHaJo/300S+xNTgPC9nhpGmjDDKKKLiRpwRQX/YrBob9SjuEGTpgru8AeHxYKh0oGxudPhf0ZXG2GAYdZ+xb/ms3FahPdUUAxLF7dY146zsmefvZBtCkELqYo3bYSj0X1ilBub",
"seed": "HUOPiIjAtvTqLjTbZwOt1ge1VosAqjaF1sksYXzEbiE=",
"notBefore": 1559201303,
"notAfter": 1598772503,
"state": "Created",
"serviceUrl": "https://teststand.cryptopro.ru/mydss",
"alias": "x0893zbt",
"userName": "0dbea5eb-667c-4284-a5e6-1deaa838911f"
}
Регистрация первого устройства с использованием предварительного вектора аутентификации
Метод отправляет запрос на регистрацию первого мобильного устройства (МУ). Метод создает на сервере неподтвержденное мобильное устройство и возвращает зашифрованный блоб с векторами аутентификации.
Запрос аутентифицируется на предварительно созданном для данной учетной записи
(УЗ) векторе аутентификации Kinit
.
В запросе могут быть переданы два необязательных параметра:
UserName
- желаемое имя пользователя (login), имя пользователя может быть использовано вызывающей системой для управления учетной записью пользователя. Если данный параметр отсутствует в запросе, то его значение будет создано автоматически на стороне сервера.Alias
- уникальный человекочитаемый идентификатор, используемый для подтверждения владения МУ пользователем. Если данный параметр отсутствует в запросе, то его значение будет создано автоматически на стороне сервера.
Параметр | Значение |
---|---|
HTTP-метод | POST |
Путь | /v1/devices/kinit |
Аутентификация | Запрос аутентифицирован на векторе Kinit. |
Параметры | Объект RegInfo, содержащий сведения о регистрируемом устройстве. |
Возвращаемое значение | Объект Device, содержащий сведения о ключах аутентификации. |
Типовые ошибки
HTTP-код | Ошибка | Описание |
---|---|---|
400 | invalid_input |
Отсутствует тело запроса |
400 | invalid_identifier |
Не передана информация о регистрируемом устройстве |
400 | wrong_operation |
Самостоятельная регистрации пользователей myDSS запрещена |
400 | invalid_login |
Логин не задан или имеет некорректный формат |
400 | not_unique_login |
Пользователь с данным логином уже существует |
400 | invalid_phone |
Полученное значение не является номером телефона |
400 | not_unique_phone |
Пользователь с таким номером телефона уже существует |
400 | invalid_email |
Полученное значение не является адресом электронной почты |
400 | not_unique_email |
Пользователь с таким адресом электронной почты уже существует |
400 | invalid_device_fingerprint |
Параметр deviceFingerprint не задан |
400 | not_unique_device_fingerprint |
Пользователь с таким отпечатком мобильного устройства уже существует |
400 | invalid_device_params |
Значение параметра osType не поддерживается |
400 | invalid_device_params |
Параметр pushAddress не задан |
400 | invalid_device_params |
Параметр deviceName не задан |
500 | internal_error |
Внутренняя ошибка сервера |
Пример
Запрос
POST /mydss/v1/devices/kinit HTTP/1.1
Host: teststand.cryptopro.ru
Authorization: myDSS 63002723:AAAATEST...HMACAAAAAA=
Content-Type: application/json
Content-Length: 299
{
"deviceFingerprint": "0054e5fc-6797-421b-8917-dc0298804158",
"pushAddress": "push-address",
"osType": "Android",
"osVersion": "4.0.0",
"deviceMode": "AppleIPhoneA",
"deviceName": "MyApple",
"locale": "ru-RU",
"timeZoneUtcOffset": "3",
"appVersion": "1.0",
"phone": "79998887766",
"email": "test@cryptropro.ru",
"publicKey" : "BiAAAEkuAABNQUcxAAIAADATBgcqhQMCAiQABggqhQMHAQECAoEft+BSCBo5dfpTu9Ih6a1TXoNg1la2Z13q1NBAGHY3m9aVJsHoccwVXhzlMM72Nr3EF4QhNTbUYvYYJ7Ale+M="
}
Ответ
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Date: Fri, 17 May 2019 04:53:09 GMT
{
"kid": "63002723",
"uid": "0dbea5eb-667c-4284-a5e6-1deaa838911f",
"publicKey": "BiAAAEkuAABNQUcxAAIAADATBgcqhQMCAiQABggqhQMHAQECAhDFOrLWRqF0tDgteCjHJkGybqT/LBxqGfA9+5whXr3qCpFK8AK8RxaHaiANgz5b+2yQ9kyhVfJRdU5i633Sn58=",
"encryptedBlobs": "ta70SK/cjHZOotrmVRQ2aGsxe/cfnjDjRDeIAPhnTY2MmkJa5H72sQNiwIL792rh+9SC7wM35Tle2hky8KDHaJo/300S+xNTgPC9nhpGmjDDKKKLiRpwRQX/YrBob9SjuEGTpgru8AeHxYKh0oGxudPhf0ZXG2GAYdZ+xb/ms3FahPdUUAxLF7dY146zsmefvZBtCkELqYo3bYSj0X1ilBub",
"notBefore": 1559201303,
"notAfter": 1598772503,
"state": "Created",
"serviceUrl": "https://teststand.cryptopro.ru/mydss",
"alias": "x0893zbt",
"userName": "0dbea5eb-667c-4284-a5e6-1deaa838911f"
}
Подтверждение установки векторов аутентификации
Метод используется для подтверждения установки векторов аутентификации. Данный
метод всегда необходимо вызывать после выполнения регистрации нового
неподтвержденного МУ на сервере. Данный метод может быть вызван только для
векторов аутентификации, находящихся в состоянии Created
.
Параметр | Значение |
---|---|
HTTP-метод | POST |
Путь | /v1/devices/confirm |
Аутентификация | Аутентификация на ключе Kauth . |
Параметры | Метод не имеет параметров. |
Возвращаемое значение | Объект DeviceInfo, содержащий обновленные сведения о ключе аутентификации. |
Типовые ошибки
HTTP-код | Ошибка | Описание |
---|---|---|
401 | См. Ошибки аутентификации | |
400 | key_already_confirmed |
Статус ключа аутентификации myDSS не может быть изменен, так как устройство уже подтверждено |
500 | internal_error |
Внутренняя ошибка сервера |
Пример
Запрос
POST /mydss/v1/devices/confirm HTTP/1.1
Host: teststand.cryptopro.ru
Content-Type: application/json
Authorization: myDSS 63002723:AAAATEST...HMACAAAAAA=
Ответ
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Date: Fri, 17 May 2019 04:53:09 GMT
{
"kid": "63002723",
"uid": "3dff67cc-a53f-4660-aa4c-9879f7f3eb48",
"profile": "{\"CN\":\"Иванов Иван Иванович\", \"key_CN\":\"Общее имя\"}",
"deviceName": "MyApple",
"notBefore": 1559201303,
"notAfter": 1598772503,
"state": "Installed"
}
Подтверждение присоединения МУ к УЗ
Метод используется для подтверждения присоединения МУ к УЗ пользователя.
Данный метод может быть вызван только для векторов аутентификации,
находящихся в состоянии NotVerified
.
Для подтверждения присоединения МУ к УЗ необходимо передать значение HMAC от
профиля пользователя, вычисленное на ключе Kconf
. Профиль пользователя
возвращается в структуре DeviceInfo
.
Если для данного мобильного устройства требуется осуществлять подтверждение
присоединения с использованием nonce
, то в поле nonceRequired
структуры
DeviceInfo
будет указано значение true
. В этом случае перед отправкой
запроса мобильное приложение должно отсканировать QR-код, содержащий nonce
.
Если для данного мобильного устройства требуется осуществлять подтверждение
присоединения с использованием подписи на ключе подписи, то в поле signatureRequired
структуры
DeviceInfo
будет указано значение true
. В этом случае перед отправкой
запроса мобильное приложение должно получить данные для подписи, используя метод /verify/random.
Параметр | Значение |
---|---|
HTTP-метод | POST |
Путь | /v1/devices/verify |
Аутентификация | Аутентификация на ключе Kauth . |
Параметры | Объект VerifyInfo, содержащий сведения для подтверждения присоединения. |
Возвращаемое значение | Объект DeviceInfo, содержащий обновленные сведения о ключе аутентификации. |
Типовые ошибки
HTTP-код | Ошибка | Описание |
---|---|---|
401 | См. Ошибки аутентификации | |
400 | invalid_input |
Отсутствует тело запроса |
400 | invalid_phone |
Полученное значение не является номером телефона |
400 | not_unique_phone |
Пользователь с таким номером телефона уже существует |
400 | invalid_email |
Полученное значение не является адресом электронной почты |
400 | not_unique_email |
Пользователь с таким адресом электронной почты уже существует |
400 | invalid_device_fingerprint |
Параметр deviceFingerprint не задан |
400 | not_unique_device_fingerprint |
Пользователь с таким отпечатком мобильного устройства уже существует |
400 | existing_device_fingerprint |
Мобильное устройство с таким отпечатком уже добавлено пользователю |
400 | invalid_device_params |
Значение парметра osType не поддерживается |
400 | invalid_device_params |
Параметр pushAddress не задан |
400 | invalid_device_params |
Параметр deviceName не задан |
400 | key_already_confirmed |
Информация об устройстве уже заполнена для ключа аутентификации |
500 | internal_error |
Внутренняя ошибка сервера |
Пример
Запрос
POST /mydss/v1/devices/verify HTTP/1.1
Host: teststand.cryptopro.ru
Content-Type: application/json
Content-Length: 299
{
"nonce": "0054e5fc-6797-421b-8917-dc0298804158",
"profileHmac": "AAAATESTHMACAAAAAA="
}
Ответ
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Date: Fri, 17 May 2019 04:53:09 GMT
{
"kid": "63002723",
"uid": "3dff67cc-a53f-4660-aa4c-9879f7f3eb48",
"profile": "{\"CN\":\"Иванов Иван Иванович\", \"key_CN\":\"Общее имя\"}",
"deviceName": "MyApple",
"notBefore": 1559201303,
"notAfter": 1598772503,
"state": "Active"
}
Получение данных для подтверждения присоединения МУ к УЗ при помощи подписи
Метод возвращает данные необходимые для завершения присоединения МУ к УЗ.
Метод может быть вызван только для мобильного устройства в статусе NotVerified.
Если для мобильного устройства требуется осуществлять подтверждение
присоединения с использованием подписи на ключе подписи, то в поле signatureRequired
структуры
DeviceInfo
будет указано значение true
.
Параметр | Значение |
---|---|
HTTP-метод | GET |
Путь | /v1/devices/verify/random |
Аутентификация | Аутентификация на ключе Kauth . |
Параметры | Запрос без параметров. |
Возвращаемое значение | Объект SignatureRandom, содержащий данные для подписи. |
Типовые ошибки
HTTP-код | Ошибка | Описание |
---|---|---|
401 | См. Ошибки аутентификации | |
500 | internal_error |
Внутренняя ошибка сервера |
Пример
Получение сведений об устройствах
Метод возвращает сведения об устройствах пользователя.
Параметр | Значение |
---|---|
HTTP-метод | GET |
Путь | /v1/devices |
Аутентификация | Аутентификация на ключе Kauth . |
Параметры | Запрос без параметров. |
Возвращаемое значение | Объект DevicesInfo, содержащий сведения о зарегистрированном пользователе и его ключах аутентификации. |
Типовые ошибки
HTTP-код | Ошибка | Описание |
---|---|---|
401 | См. Ошибки аутентификации | |
500 | internal_error |
Внутренняя ошибка сервера |
Пример
Запрос
GET /mydss/v1/devices HTTP/1.1
Host: teststand.cryptopro.ru
Content-Type: application/json
Authorization: myDSS 63002723:AAAATEST...HMACAAAAAA=
Ответ
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Date: Fri, 17 May 2019 04:53:09 GMT
{
"devices": [
{
"kid": "63002723",
"uid": "3dff67cc-a53f-4660-aa4c-9879f7f3eb48",
"profile": "{\"CN\":\"Иванов Иван Иванович\", \"key_CN\":\"Общее имя\"}",
"deviceName": "MyApple",
"notBefore": 1559201303,
"notAfter": 1598772503,
"state": "Installed"
}
]
}
Удаление устройства
Метод отправляет запрос на удаление устройства.
Параметр | Значение |
---|---|
HTTP-метод | POST |
Путь | /v1/devices/delete |
Аутентификация | Аутентификация на ключе Kconf . |
Параметры | Объект DeleteDeviceInfo, содержащий сведения об удаляемом устройстве. |
Возвращаемое значение | Не имеет возвращаемого значения. |
Типовые ошибки
HTTP-код | Ошибка | Описание |
---|---|---|
401 | См. Ошибки аутентификации | |
400 | invalid_input |
Отсутвует тело запроса |
400 | invalid_key_id |
Параметр [kid] не задан |
400 | key_not_found |
Пользователь не имеет назначенный токен аутентификации |
500 | internal_error |
Внутренняя ошибка сервера |
Пример
Запрос
GET /mydss/v1/devices HTTP/1.1
Host: teststand.cryptopro.ru
Content-Type: application/json
Content-Length: 19
Authorization: myDSS 63002723:AAAATEST...HMACAAAAAA=
{
"kid" : "63002723"
}
Ответ
HTTP/1.1 200 OK
Регистрация другого устройства
Метод отправляет запрос на подключение другого устройства пользователя.
Параметр | Значение |
---|---|
HTTP-метод | POST |
Путь | /v1/devices/add |
Аутентификация | Запрос не аутентифицирован. |
Параметры | Объект NewDeviceInfo, содержащий сведения о новом устройстве пользователя. |
Возвращаемое значение | Объект Device, содержащий сведения о ключах аутентификации, создаваемых на подключаемом устройстве. |
Примечание
Запрос не аутентифицирован.
Примечание
В структуре Device
поле Alias
не заполняется.
Типовые ошибки
HTTP-код | Ошибка | Описание |
---|---|---|
400 | invalid_input |
Отсутвует тело запроса |
400 | requested_user_not_found |
Пользователь не найден |
400 | wrong_operation |
Пользователь уже имеет максимально возможное количество ключей myDSS |
400 | invalid_phone |
Полученное значение не является номером телефона |
400 | not_unique_phone |
Пользователь с таким номером телефона уже существует |
400 | invalid_email |
Полученное значение не является адресом электронной почты |
400 | not_unique_email |
Пользователь с таким адресом электронной почты уже существует |
400 | invalid_device_fingerprint |
Параметр deviceFingerprint не задан |
400 | not_unique_device_fingerprint |
Пользователь с таким отпечатком мобильного устройства уже существует |
400 | existing_device_fingerprint |
Мобильное устройство с таким отпечатком уже добавлено пользователю |
400 | invalid_device_params |
Значение парметра osType не поддерживается |
400 | invalid_device_params |
Парметр pushAddress не задан |
400 | invalid_device_params |
Парметр deviceName не задан |
500 | internal_error |
Внутренняя ошибка сервера |
Пример
Запрос
POST /mydss/v1/devices/add HTTP/1.1
Host: teststand.cryptopro.ru
Content-Type: application/json
Content-Length: 299
{
"uid": "0dbea5eb-667c-4284-a5e6-1deaa838911f",
"deviceFingerprint": "0054e5fc-6797-421b-8917-dc0298804158",
"pushAddress": "push-address",
"osType": "Android",
"osVersion": "4.0.0",
"deviceMode": "AppleIPhoneA",
"deviceName": "MyApple",
"locale": "ru-RU",
"timeZoneUtcOffset": "3",
"appVersion": "1.0",
"phone": "79998887766",
"email": "test@cryptropro.ru",
"publicKey" : "BiAAAEkuAABNQUcxAAIAADATBgcqhQMCAiQABggqhQMHAQECAoEft+BSCBo5dfpTu9Ih6a1TXoNg1la2Z13q1NBAGHY3m9aVJsHoccwVXhzlMM72Nr3EF4QhNTbUYvYYJ7Ale+M="
}
Ответ
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Date: Fri, 17 May 2019 04:53:09 GMT
{
"kid": "63002723",
"uid": "cb76412a-d0cc-46f5-963e-5741f48081c7",
"publicKey": "BiAAAEkuAABNQUcxAAIAADATBgcqhQMCAiQABggqhQMHAQECAhDFOrLWRqF0tDgteCjHJkGybqT/LBxqGfA9+5whXr3qCpFK8AK8RxaHaiANgz5b+2yQ9kyhVfJRdU5i633Sn58=",
"encryptedBlobs": "ta70SK/cjHZOotrmVRQ2aGsxe/cfnjDjRDeIAPhnTY2MmkJa5H72sQNiwIL792rh+9SC7wM35Tle2hky8KDHaJo/300S+xNTgPC9nhpGmjDDKKKLiRpwRQX/YrBob9SjuEGTpgru8AeHxYKh0oGxudPhf0ZXG2GAYdZ+xb/ms3FahPdUUAxLF7dY146zsmefvZBtCkELqYo3bYSj0X1ilBub",
"seed": "cOJSd2LZ5LcCh8lpB87W2Cf90DtonlZ1+IuIdEVa6QU=",
"notBefore": 1562061337,
"notAfter": 1601632537,
"state": "Created",
"serviceUrl": "https://teststand.cryptopro.ru/mydss"
}
Проверка статуса запроса на регистрацию другого устройства
Метод отправляет запрос на получение сведений об операции регистрации нового устройства пользователя.
Параметр | Значение |
---|---|
HTTP-метод | POST |
Путь | /v1/devices/check |
Аутентификация | Запрос аутентифицирован на Kauth ключе. |
Параметры | Запрос без параметров |
Возвращаемое значение | Объект Device, содержащий статус нового устройства и QR-код с данными для подтверждения. |
Типовые ошибки
HTTP-код | Ошибка | Описание |
---|---|---|
400 | invalid_input |
Отсутвует тело запроса |
400 | invalid_identifier |
Не передан идентификатор пользователя |
400 | requested_user_not_found |
Пользователь не найден |
500 | internal_error |
Внутренняя ошибка сервера |
Пример
Запрос
POST /mydss/v1/devices/check HTTP/1.1
Host: teststand.cryptopro.ru
Authorization: myDSS 63002723:AAAATEST...HMACAAAAAA=
Ответ
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Date: Fri, 17 May 2019 04:53:09 GMT
{
"kid": "63002710",
"state": "NotConfirmed"
}
Примечание
- Если
state
имеет значениеNotConfirmed
, то добавление другого устройства еще не подтверждено пользователем. - Если
state
имеет значениеRejected
, то добавление другого устройства отклонено пользователем. - Если
state
имеет значениеActive
, то добавление другого устройства одобрено пользователем.
Одобрение запроса на добавление нового устройства
Метод отправляет запрос на получение сведений об операции регистрации нового устройства пользователя.
Параметр | Значение |
---|---|
HTTP-метод | POST |
Путь | /v1/devices/approve |
Аутентификация | Аутентификация на ключе Kconf . |
Параметры | Идентификатор ключа kid. |
Возвращаемое значение | Не имеет возвращаемого значения. |
Типовые ошибки
HTTP-код | Ошибка | Описание |
---|---|---|
401 | См. Ошибки аутентификации | |
400 | invalid_input |
Отсутвует тело запроса |
400 | invalid_key_id |
Параметр [kid] не задан |
400 | key_not_found |
Пользователь не имеет назначенный токен аутентификации |
400 | key_already_confirmed |
Запрос на добавление нового устройства уже одобрен |
500 | internal_error |
Внутренняя ошибка сервера |
Пример
Запрос
POST /mydss/v1/devices/approve HTTP/1.1
Host: teststand.cryptopro.ru
Content-Type: application/json
Content-Length: 18
Authorization: myDSS 63002723:AAAATEST...HMACAAAAAA=
{
"kid": "63002710"
}
Ответ
HTTP/1.1 200 OK
Отклонение запроса на добавление нового устройства
Метод отправляет запрос на получение сведений об операции регистрации нового устройства пользователя.
Параметр | Значение |
---|---|
HTTP-метод | POST |
Путь | /v1/devices/reject |
Аутентификация | Аутентификация на ключе Kconf . |
Параметры | Идентификатор ключа kid. |
Возвращаемое значение | Не имеет возвращаемого значения. |
Типовые ошибки
HTTP-код | Ошибка | Описание |
---|---|---|
401 | См. Ошибки аутентификации | |
400 | invalid_input |
Отсутвует тело запроса |
400 | invalid_key_id |
Запрос на добавление устройства не найден |
500 | internal_error |
Внутренняя ошибка сервера |
Пример
Запрос
POST /mydss/v1/devices/reject HTTP/1.1
Host: teststand.cryptopro.ru
Content-Type: application/json
Content-Length: 18
Authorization: myDSS 63002723:AAAATEST...HMACAAAAAA=
{
"kid": "63002710"
}
Ответ
HTTP/1.1 200 OK
Обновление сведений об устройстве пользователя
Метод отправляет запрос на обновление сведений о мобильном устройстве пользователя (МУ). Сведения передаются в той же структуре данных RegInfo, что и при Online-регистрации или регистрации по QR-коду.
Поля deviceFingerprint
, userName
, publicKey
, alias
, phone
, email
, osType
игнорируются.
Другие поля опциональны. Это означает, что МУ может передать только необходимый набор обновленных данных.
Главное назначение метода - обновить Push-адрес устройства. Дополнительно МУ может передать сведения об актуальной версии приложения, версии ОС, имени устройства и т.п.
Так как метод является вспомогательным и не влияет на работу основных функций сервера и МУ, то МУ следует игнорировать ошибки, которые может вернуть метод.
Параметр | Значение |
---|---|
HTTP-метод | POST |
Путь | /v1/devices/updateinfo |
Аутентификация | Запрос аутентифицирован на векторе Kauth. |
Параметры | Объект RegInfo, содержащий сведения об устройстве. |
Возвращаемое значение | - |
Пример
Запрос
POST /mydss/v1/devices/updateinfo HTTP/1.1
Host: teststand.cryptopro.ru
Authorization: myDSS 63002723:AAAATEST...HMACAAAAAA=
Content-Type: application/json
Content-Length: 299
{
"pushAddress": "push-address",
"osType": "Android",
"osVersion": "4.0.0",
"deviceMode": "AppleIPhoneA",
"deviceName": "MyApple",
"locale": "ru-RU",
"timeZoneUtcOffset": "3",
"appVersion": "1.0"
}
Ответ
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Date: Fri, 17 May 2019 04:53:09 GMT