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

    Подключение метода аутентификации через Ключ SDK

    Раздел содержит руководство разработчика по работе с Ключ SDK на Сервисе Управления Пользователями. В разделе приведены основные сценарии использования, примеры HTTP-запросов и ответов REST Сервиса Управления Пользователями.

    Также в разделе приведены рекомендации Администраторам по настройке сервиса для реализации различных сценариев работы с Ключ SDK.

    Перед началом интеграции с Сервисом Управления Пользователями Администратору необходимо:

    • Выпустить и зарегистрировать на сервере cертификат аутентификации Оператора
    • Настроить Сервис взаимодействия с Ключ SDK
    • Включить метод аутентификации Ключ SDK на Центре Идентификации
    • Ввести соответствующую лицензию

    Сценарии должны выполняться учетной записью с ролью Оператора.

    Аутентификация Операторов на Сервисе Управления Пользователями осуществляется по сертификату (по протоколу TLS c двусторонней аутентификацией).

    Методы и структуры, используемые в данном разделе, приведены в разделе REST API Сервиса Управления Пользователями (UMS) Методы для работы с Ключ SDK приведены в разделе Настройка аутентификации Ключ SDK.

    Общие шаги по регистрации пользователя:

    1. Регистрация логина пользователя. 2. Назначение метода первичной аутентификации.

    Дальнейшие действия зависят от сценария инициализации устройства пользователя.

    • Регистрация анонимного устройства (сценарий привязки с уникальным идентификатором)

    1. Поиск устройства пользователя 2. Присоединение устройства к УЗ пользователя 3. Назначение метода аутентификации через мобильное приложение 4. Получение QR-кода с Nonce (опционально)

    • Регистрация устройства по QR-коду

      1. Создание QR-кода KInit 2. Назначение метода аутентификации через мобильное приложение

    Вспомогательные действия:

    1. Поиск пользователя 2. Получение сведений о настройках метода аутентификации 3. Отключение аутентификации через мобильное приложение 4. Заполнение профиля пользователя 5. Получение сведений об устройствах пользователя

    Общие шаги

    Регистрация логина пользователя

    В качестве идентификатора (логина) пользователя могут выступать:

    • логин;
    • адрес электронной почты;
    • номер телефона.
    Внимание!

    По умолчанию в СЭП в качестве идентификатора разрешен только логин.

    Разрешить/запретить другие идентификаторы пользователя может Администратор, выполнив команду в консоли PowerShell:

     Set-IdsProperties -AvailableIdentifiers Login,Email,PhoneNumber
    

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

    Описание методов регистрации пользователя доступно по ссылке RegisterUser.

    • Регистрация пользователя по логину
    POST https://{{hostname}}/{{instanceName}}/ums/user HTTP/1.1
    Accept: application/json
    Content-Type: application/json; charset=utf-8
    Host: host
    Content-Length: 28
    Expect: 100-continue
    
    {"Login":"DssTest-6f956360"}
    
    • Регистрация пользователя по логину, email и номеру телефона
    POST https://{{hostname}}/{{instanceName}}/ums/user HTTP/1.1
    Accept: application/json
    Content-Type: application/json; charset=utf-8
    Host: host
    Content-Length: 92
    Expect: 100-continue
    Connection: Keep-Alive
    
    {"Login":"DssTest-05e789e7","PhoneNumber":"+70004064846","Email":"DssTest-0678acd4@dss.com"}
    

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

    В ответ сервер вернет идентификатор созданного пользователя (UserId). UserId используется при вызове любых методов Сервиса Управления Пользователями:

    • возвращающих сведения об учетной записи пользователя;
    • изменяющих учетную запись пользователя.

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

    HTTP/1.1 200 OK
    Cache-Control: no-cache
    Pragma: no-cache
    Content-Type: application/json; charset=utf-8
    Expires: -1
    Date: Thu, 23 Aug 2018 14:59:09 GMT
    Content-Length: 38
    
    "264caee9-b77c-4b8c-b52a-ef9dd502f959"
    

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

    HTTP-код Ошибка Описание
    400 invalid_identifiers Переданный идентификатор запрещенный на сервере.
    400 invalid_phone Пользователь с указанным номер телефона уже зарегистирован.
    400 invalid_email Пользователь с указанным email уже зарегистирован.
    400 invalid_login Пользователь с указанным логином уже зарегистирован.
    500 An error has occurred 1. В поле Login указан номер телефона или email.
    2. Неверно сформирован email.
    3. Неверно сформирован номер телефона.

    Назначение метода первичной аутентификации

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

    Метод Описание
    /user/{UserId}/authmethod/idonly Только идентификация
    /user/{UserId}/authmethod/password Аутентификация по паролю
    /user/{UserId}/authmethod/cert Аутентификация по сертификату
    /user/{UserId}/authmethod/external Аутентификация через сторонний Центр Идентификации

    Чаще всего при использовании Ключ SDK в качестве метода первичной аутентификации назначают "Только идентификация".

    Внимание!

    Назначаемый метод аутентификации должен быть разрешен на сервере. Включить или отключить метод аутентификации должен Администратор.

    Разрешить/запретить метод аутентификации можно на сервере командами:

     Enable-IdsAuthenticationMethod -Id <method_ID>
    
     Disable-IdsAuthenticationMethod -Id <method_ID>
    
    Внимание!

    Совместное включение методов idonly и password допустимо, но использоваться будет метод "Только идентификация".

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

    Назначение метода первичной аутентификации "Только идентификация"

    Описание метода SetUserAuthenticationMethodIdOnly.

    POST https://{{hostname}}/{{instanceName}}/ums/user/d0bfa4e1-808d-4c28-b3cb-0dc5a591d300/authmethod/idonly HTTP/1.1
    Accept: application/json
    Content-Type: application/json; charset=utf-8
    Host: host
    Content-Length: 2
    Expect: 100-continue
    
    {}
    

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

    Назначение метода аутентификации не имеет возвращаемого значения.

    HTTP/1.1 200 OK
    Cache-Control: no-cache
    Pragma: no-cache
    Expires: -1
    Date: Thu, 23 Aug 2018 16:35:38 GMT
    Content-Length: 0
    

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

    HTTP-код Ошибка Описание
    400 wrong_operation Метод аутентификации уже назначен.
    400 invalid_authn_method Метод аутентификации запрещен на сервере.
    404 user_not_found Пользователь не найден.

    Регистрация анонимного устройства

    Поиск устройства пользователя

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

    • kid - идентификатор устройства пользователя
    • Alias - псевдоним устройства пользователя

    Поиск осуществляется с помощью метода authntokens

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

    GET https://{{hostname}}/{{instanceName}}/ums/authntokens HTTP/1.1
    
    Content-Length: 94
    Content-Type: application/json; charset=utf-8
    Accept: application/json
    Expect: 100-continue
    Host: host
    
    {"StartPosition":0,"EndPosition":10,"Filters":[{"Column":1,"Operation":0,"Value":"73128110"}]}
    

    Примеры ответов

    HTTP/1.1 200 OK
    Content-Type: application/json; charset=utf-8
    
    {
        "TokenInfos":
        [
            {
                "Id":35742,
                "Serial":"73128110",
                "UserName":null,
                "TokenType":"MyDss",
                "Parameters":
                    {
                        "DeviceFingerprintRequired":"True",
                        "ProfileId":"84873bac-3205-4030-944f-9eb571627ccc",
                        "CreationType":"Anonymous",
                        "DeviceFingerprint":"9af7e394-76d4-47f5-b0d2-d6217572c5c6",
                        "DeviceName":"MyApple",
                        "PushAddress":"push-address",
                        "OsType":"2",
                        "OsVersion":"4.0.0",
                        "DeviceModel":"AppleIPhoneA",
                        "Locale":"ru-RU",
                        "TimeZoneUTCOffset":"3",
                        "AppVersion":"1.0",
                        "IMEI":null,
                        "TempUserName":"MdagTestUser-D547B268",
                        "NotBefore":"11/27/2019 18:37:45",
                        "NotAfter":"02/27/2021 18:37:45",
                        "VerificationNonce":"cKx+pdmejI/SRz3OQex32wd6vNF7oVni6LsAf7SfOZw="
                    }
            }
        ],
        "TotalCount":4876,
        "AffectedCount":1
    } 
    

    Присоединение устройства к УЗ пользователя

    Описание метода AssignUserMyDssAuthToken.

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

    POST https://{{hostname}}/{{instanceName}}/ums/user/8d16086d-676c-49d6-bf49-09e6f936a596/mydss/assign HTTP/1.1
    Accept: application/json; charset=utf-8
    Host:host
    
    {"Kid":"73128110"}
    

    Примеры ответов

    HTTP/1.1 200 OK
    Pragma: no-cache
    Content-Type: application/json; charset=utf-8
    
    {
        "Uid":"8d16086d-676c-49d6-bf49-09e6f936a596",
        "Kid":"73128110",
        "DeviceName":"MyApple",
        "NotBefore":1574869065,
        "NotAfter":1614440265,
        "State":"NotVerified",
        "UserName":"MdagTestUser-D547B268",
        "Profile":"{\"Version\":1,\"Keys\":{\"1\":\"%D0%9E%D0%93%D0%A0%D0%9D\",\"2\":\"%D0%9E%D0%93%D0%A0%D0%9D%D0%98%D0%9F\",\"3\":\"%D0%A1%D0%9D%D0%98%D0%9B%D0%A1\",\"4\":\"%D0%98%D0%9D%D0%9D\",\"5\":\"%D0%AD%D0%BB%D0%B5%D0%BA%D1%82%D1%80%D0%BE%D0%BD%D0%BD%D0%B0%D1%8F %D0%BF%D0%BE%D1%87%D1%82%D0%B0\",\"6\":\"%D0%A1%D1%82%D1%80%D0%B0%D0%BD%D0%B0\",\"7\":\"%D0%9E%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C\",\"8\":\"%D0%93%D0%BE%D1%80%D0%BE%D0%B4\",\"9\":\"%D0%9E%D1%80%D0%B3%D0%B0%D0%BD%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F\",\"10\":\"%D0%9F%D0%BE%D0%B4%D1%80%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5\",\"11\":\"%D0%9E%D0%B1%D1%89%D0%B5%D0%B5 %D0%B8%D0%BC%D1%8F\",\"12\":\"%D0%90%D0%B4%D1%80%D0%B5%D1%81\",\"13\":\"%D0%94%D0%BE%D0%BB%D0%B6%D0%BD%D0%BE%D1%81%D1%82%D1%8C\",\"14\":\"%D0%98%D0%BD%D0%B8%D1%86%D0%B8%D0%B0%D0%BB%D1%8B\",\"15\":\"%D0%98%D0%BC%D1%8F\",\"16\":\"%D0%A4%D0%B0%D0%BC%D0%B8%D0%BB%D0%B8%D1%8F\"},\"Values\":{}}",
        "NonceRequired":true
    } 
    

    Назначение метода аутентификации через мобильное приложение

    Далее необходимо назначить метод аутентификации через мобильное приложение.

    Описание метода SetUserAuthenticationMethodMyDss.

    POST https://{{hostname}}/{{instanceName}}/ums/user/8d16086d-676c-49d6-bf49-09e6f936a596/authmethod/mydss?level=0 HTTP/1.1
    Accept: application/json; charset=utf-8
    Host:host
    
    {"Kid":"73128110"}
    

    Примеры ответов

    HTTP/1.1 200 OK
    

    Получение QR-код Nonce

    Необходимость выполнения данного шага зависит от флага NonceRequired в сведениях об устройстве пользователя. Если для завершения активации устройства требуется подтверждение через QR-код Nonce, то полученный QR-код необходимо передать пользователю. После того как пользователь отсканирует QR-код устройство пользователя перейдет в состояние Active.

    QrCode - QR-код в кодировке base64

    Описание метода GetUserMyDssVerificationData.

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

    POST https://{{hostname}}/{{instanceName}}/ums/user/8d16086d-676c-49d6-bf49-09e6f936a596/mydss/verify/get HTTP/1.1
    Accept: application/json
    Content-Type: application/json; charset=utf-8
    Host: host
    Content-Length: 2
    Expect: 100-continue
    
    {"Kid":"73128110"}
    

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

    HTTP/1.1 200 OK
    Content-Type: application/json; charset=utf-8
    
    {"QrCode":"R0lGODlh...zuI8zuRczuZ8zuisEgEBADs=",
    "QrCodeData":"{\"type\":\"Verification\",\"version\":1,\"data\":{\"kid\":\"73128110\",\"uid\":\"8d16086d-676c-49d6-bf49-09e6f936a596\",\"service_url\":\"hostname",\"seed\":\"DQiMn1xAvdQFQlAR4ceB3NkWaevDppM7klIVOZZssTc=\",\"nonce\":\"cKx+pdmejI/SRz3OQex32wd6vNF7oVni6LsAf7SfOZw=\"}}",
    "Data":{"type":"Verification","version":1,"data":{"kid":"73128110","uid":"8d16086d-676c-49d6-bf49-09e6f936a596","service_url":"hostname","seed":"DQiMn1xAvdQFQlAR4ceB3NkWaevDppM7klIVOZZssTc=","nonce":"cKx+pdmejI/SRz3OQex32wd6vNF7oVni6LsAf7SfOZw="}}}
    

    Регистрация устройства по QR-коду

    Получение QR-кода для инициализации мобильного приложения

    Описание метода CreateUserMyDssInitializationData.

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

    POST https://{{hostname}}/{{instanceName}}/ums/user/8d16086d-676c-49d6-bf49-09e6f936a596/mydss/init
    Accept: application/json; charset=utf-8
    Host:host
    
    { }
    

    Примеры ответов

    {
        "KeyInfo": {
            "EncryptedBlobs": "ASAAAB5mAAD9UUo3HmYAAEs1zqZR7l3kHbD7BLAGwkyISsJmBdhQvna3mE/SzOGeDaK2KjMp+vfr9rY4MAsGCSqFAwcBAgUBAQECAABAXnQE",
            "PublicKey": null,
            "Seed": null,
            "ActivationRequired": false,
            "ServiceUrl": "https://hostname/mdagname",
            "Alias": null,
            "Uid": "f1f7de85-f423-4d52-bb74-ea8fbdb35028",
            "Kid": "56960103",
            "DeviceName": null,
            "NotBefore": 1631648996,
            "NotAfter": 1632253796,
            "State": "Active",
            "UserName": null,
            "Profile": null,
            "NonceRequired": false,
            "SystemDisplayName": null
        },
        "QrCode": "R0lGODlhLAEsAfc ... 0Rh8QADs=",
        "QrCodeData": "{\"type\":\"Kinit\",\"version\":1,\"data\":{\"kid\":\"56960103\",\"uid\":\"f1f7de85-f423-4d52-bb74-ea8fbdb35028\",\"service_url\":\"hostname",\"key_content\":\"ASAAAB5mAAD9UUo3HmYAAEs1zqZR7l3kHbD7BLAGwkyISsJmBdhQvna3mE/SzOGeDaK2KjMp+vfr9rY4MAsGCSqFAwcBAgUBAQECAABAXnQE\",\"activation_required\":false,\"weakness\":false}}"
    }
    

    Назначение метода аутентификации через мобильное приложение

    Далее необходимо назначить метод аутентификации через мобильное приложение.

    Описание метода SetUserAuthenticationMethodMyDss.

    POST https://{{hostname}}/{{instanceName}}/ums/user/8d16086d-676c-49d6-bf49-09e6f936a596/authmethod/mydss?level=0 HTTP/1.1
    Accept: application/json; charset=utf-8
    Host:host
    
    {"Kid":"73128110"}
    

    Примеры ответов

    HTTP/1.1 200 OK
    

    Вспомогательные действия

    Поиск пользователя

    Сервис Управления пользователями предоставляет несколько возможностей поиска пользователя:

    • По логину, номеру телефона или email
    • По логину пользователя во внешнем ЦИ
    • По идентификатору UserId
    • Расширенный поиск

    По логину, номеру телефона или email

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

    Тип ключа поиска может принимать значения (значение параметра type):

    • Login
    • PhoneNumber
    • Email
    GET https://{{hostname}}/{{instanceName}}/ums/user?type=Login&value=DssTest-dc3bf3f5 HTTP/1.1
    Accept: application/json
    Host: host
    

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

    HTTP/1.1 200 OK
    Cache-Control: no-cache
    Pragma: no-cache
    Content-Type: application/json; charset=utf-8
    Expires: -1
    Content-Length: 334
    
    {"UserId":"d1831dea-985f-4df1-a54b-2497eeace2f2","Login":"DssTest-dc3bf3f5","PhoneNumber":null,"Email":null,"PhoneConfirmed":false,"EmailConfirmed":false,"DisplayName":null,"DistinguishName":"","AccountLocked":false,"Group":"Default","CreationDate":"2018-08-24T14:36:33.02","LockoutDate":null,"LastLoginDate":"2018-08-24T14:36:33.02"}
    

    По логину пользователя во внешнем ЦИ

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

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

    GET https://{{hostname}}/{{instanceName}}/ums/user?type=Login&value=DssTest-dc3bf3f5&issuerName=ADFS HTTP/1.1
    Accept: application/json
    Host: host
    

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

    HTTP/1.1 200 OK
    Cache-Control: no-cache
    Pragma: no-cache
    Content-Type: application/json; charset=utf-8
    Expires: -1
    Content-Length: 334
    
    {"UserId":"d1831dea-985f-4df1-a54b-2497eeace2f2","Login":"DssTest-dc3bf3f5","PhoneNumber":null,"Email":null,"PhoneConfirmed":false,"EmailConfirmed":false,"DisplayName":null,"DistinguishName":"","AccountLocked":false,"Group":"Default","CreationDate":"2018-08-24T14:36:33.02","LockoutDate":null,"LastLoginDate":"2018-08-24T14:36:33.02"}
    

    По идентификатору UserId

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

    GET https://{{hostname}}/{{instanceName}}/ums/user/d1831dea-985f-4df1-a54b-2497eeace2f2 HTTP/1.1
    Accept: application/json
    Host: host
    

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

    HTTP/1.1 200 OK
    Cache-Control: no-cache
    Pragma: no-cache
    Content-Type: application/json; charset=utf-8
    Expires: -1
    Content-Length: 334
    
    {"UserId":"d1831dea-985f-4df1-a54b-2497eeace2f2","Login":"DssTest-dc3bf3f5","PhoneNumber":null,"Email":null,"PhoneConfirmed":false,"EmailConfirmed":false,"DisplayName":null,"DistinguishName":"","AccountLocked":false,"Group":"Default","CreationDate":"2018-08-24T14:36:33.02","LockoutDate":null,"LastLoginDate":"2018-08-24T14:36:33.02"}
    

    Расширенный поиск

    Расширенный поиск позволяет применять различные фильтры для поиска пользователей. Результатом выполнения метода может быть группа пользователей, отвечающая параметрам фильтра.

    Поиск пользователей можно выполнить по одному или нескольким параметрам:

    Параметр Код Описание
    Login 0 Логин пользователя
    PhoneNumber 1 Номер телефона
    Email 2 Адрес электронной почты
    CreateDate 3 Дата создания учетной записи
    GroupId 4 Идентификаторы группы пользователя

    Код параметра указывается в поле Column

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

    Тип Код Описание
    Equal 0 Строгое равенство
    NotEqual 1 Не равно
    Like 2 Содержит
    Greater 3 Больше
    Less 4 Меньше

    Код операции указывается в поле Operation

    Тип cравнения Like определяет, совпадает ли указанная символьная строка с заданным шаблоном. Шаблон может включать обычные символы и символы-шаблоны. Во время сравнения с шаблоном необходимо, чтобы его обычные символы в точности совпадали с символами, указанными в строке. Символы-шаблоны могут совпадать с произвольными элементами символьной строки.

    Поддерживаются следующие символы шаблоны:

    Символ-шаблон Описание Пример
    % Любая строка, содержащая ноль или более символов. %вано%
    (подчеркивание) Любой одиночный символ. _етров
    [ ] Любой одиночный символ, содержащийся в диапазоне ([a-f]) или наборе ([abcdef]). [Л-С]омов
    [^] Любой одиночный символ, не содержащийся в диапазоне ([^a-f]) или наборе ([^abcdef]). 'ив[^а]%

    Параметры StartPosition и EndPosition определяют начальную и конечную позицию из итоговой выборки. Данные параметры могут быть использованы для постраничной выборки пользователей

    При поиске пользователей по времени создания значение фильтра должно иметь следующий формат: yyyy-MM-ddThh:mm:ss

    Общее количество элементов подпадающих под критерии фильтра возвращается в параметре TotalCount. Количество элементов отданных методом возвращается в параметре AffectedCount: AffectedCount <= EndPosition - StartPosition

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

    Получить пользователя с заданным логином:

    POST https://{{hostname}}/{{instanceName}}/ums/users HTTP/1.1
    Accept: application/json
    Content-Type: application/json; charset=utf-8
    Host: host
    Content-Length: 101
    Expect: 100-continue
    
    {"StartPosition":1,"EndPosition":1,"Filters":[{"Column":0,"Operation":0,"Value":"DssTest-dc3bf3f5"}]}
    

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

    POST https://{{hostname}}/{{instanceName}}/ums/users HTTP/1.1
    Accept: application/json
    Content-Type: application/json; charset=utf-8
    Host: host
    Content-Length: 172
    Expect: 100-continue
    
    {"StartPosition":1,"EndPosition":1,"Filters":[{"Column":0,"Operation":0,"Value":"DssTest-2fa204c5"},{"Column":3,"Operation":3,"Value":"2018-08-24T15:12:12.4683672+03:00"}]}
    

    Получить пользователей созданных в указанный промежуток времени:

    POST https://{{hostname}}/{{instanceName}}/ums/users HTTP/1.1
    Accept: application/json
    Content-Type: application/json; charset=utf-8
    Host: host
    Content-Length: 161
    Expect: 100-continue
    
    {"StartPosition":1,"EndPosition":10,"Filters":[{"Column":3,"Operation":4,"Value":"2018-08-25T04:24:50"},{"Column":3,"Operation":3,"Value":"2018-08-23T04:24:50"}]}
    

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

    HTTP/1.1 200 OK
    Cache-Control: no-cache
    Pragma: no-cache
    Content-Type: application/json; charset=utf-8
    Expires: -1
    Content-Length: 386
    
    {"UserInfos":[{"UserId":"d1831dea-985f-4df1-a54b-2497eeace2f2","Login":"DssTest-dc3bf3f5","PhoneNumber":null,"Email":null,"PhoneConfirmed":false,"EmailConfirmed":false,"DisplayName":null,"DistinguishName":"","AccountLocked":false,"Group":"Default","CreationDate":"2018-08-24T14:36:33.02","LockoutDate":null,"LastLoginDate":"2018-08-24T14:36:33.02"}],"TotalCount":2047,"AffectedCount":1}
    

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

    HTTP-код Ошибка Описание
    404 user_not_found Пользователь не найден.
    500 An error has occurred Неверно указано значение или тип фильтра.

    Получение настроек метода аутентификации

    Ниже приведены примеры получения различных настроек метода аутентификации через мобильное приложение:

    • проверка наличия привязанных к учетной записи мобильных устройств;
    • получение информации о сроке действия вектора аутентификации пользователя;
    • назначен ли пользователю метод аутентификации при помощи мобильного приложения на базе Ключ SDK;
    • получение списка операций, требующих подтверждения.

    Проверка наличия привязанных к учетной записи мобильных устройств

    Если у учетной записи пользователя нет привязанных мобильных устройств, ответ будет содержать пустой список Keys:

    Описание метода GetMyDssTokenInfo.

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

    GET https://{{hostname}}/{{instanceName}}/ums/user/c9b4b217-edc1-4329-be4d-1cddaecdea4d/mydss HTTP/1.1
    Accept: application/json
    Host:host
    

    Примеры ответов

    HTTP/1.1 200 OK
    Cache-Control: no-cache
    Pragma: no-cache
    Content-Type: application/json; charset=utf-8
    Expires: -1
    Content-Length: 4
    
    {
        "UserId": "3b104793-1796-4c90-b3ec-09bbbfca6ced",
        "Keys": [],
        "InitializationToken": null,
        "Blocked": false
    }
    

    Получение сведений о назначении пользователю метода аутентификации через мобильное приложение

    Описание метода GetUserAuthenticationScheme.

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

    GET https://{{hostname}}/{{instanceName}}/ums/user/01df2040-3e16-4405-9947-fc4152448c13/authmethod HTTP/1.1
    Accept: application/json
    Host: host
    

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

    Сервис возвращает список следующих элементов:

    • Идентификатор метода аутентификации
    • Уровень метода аутентификации

    Методы первичной аутентификации имеют уровень 0.

    Методы вторичной аутентификации имеют уровень 1.

    Список идентификаторов методов первичной аутентификации:

    Идентификатор Описание
    http://schemas.microsoft.com/ws/2012/09/identity/authenticationmethod/none Только идентификация
    http://dss.cryptopro.ru/identity/authenticationmethod/password По паролю
    http://dss.cryptopro.ru/identity/authenticationmethod/certificate По сертификату
    http://dss.cryptopro.ru/identity/authenticationmethod/saml Через сторонний Центр Идентификации

    Список идентификаторов методов вторичной аутентификации:

    Идентификатор Описание
    http://dss.cryptopro.ru/identity/authenticationmethod/mydss Аутентификация при помощи мобильного приложения
    http://dss.cryptopro.ru/identity/authenticationmethod/otpviasms Одноразовые пароли по SMS
    http://dss.cryptopro.ru/identity/authenticationmethod/otpviaemail Одноразовые пароли по Email
    http://dss.cryptopro.ru/identity/authenticationmethod/oath Аутентификация по протоколу Oath
    HTTP/1.1 200 OK
    Cache-Control: no-cache
    Pragma: no-cache
    Content-Type: application/json; charset=utf-8
    Expires: -1
    Content-Length: 189
    
    [{"MethodUri":"http://schemas.microsoft.com/ws/2012/09/identity/authenticationmethod/none","Level":0},{"MethodUri":"http://dss.cryptopro.ru/identity/authenticationmethod/mobile","Level":1}]
    

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

    HTTP-код Ошибка Описание
    404 user_not_found Пользователь не найден.

    Получение списка операций, требующих подтверждения

    Описание метода GetUserOperationPolicy.

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

    GET https://{{hostname}}/{{instanceName}}/ums/user/8386abb0-b3d0-44c0-96a7-90d635e45d21/operationpolicy HTTP/1.1
    Accept: application/json
    Host: 192.168.109.149
    

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

    Описание операций приведено в соответствующем разделе

    HTTP/1.1 200 OK
    Cache-Control: no-cache
    Pragma: no-cache
    Content-Type: application/json; charset=utf-8
    Expires: -1
    Content-Length: 679
    
    [{"Action":"Issue","ConfirmationRequired":true},{"Action":"SignDocument","ConfirmationRequired":true},{"Action":"SignDocuments","ConfirmationRequired":false},{"Action":"DecryptDocument","ConfirmationRequired":false},{"Action":"CreateRequest","ConfirmationRequired":false},{"Action":"ChangePin","ConfirmationRequired":false},{"Action":"RenewCertificate","ConfirmationRequired":true},{"Action":"RevokeCertificate","ConfirmationRequired":false},{"Action":"HoldCertificate","ConfirmationRequired":false},{"Action":"UnholdCertificate","ConfirmationRequired":false},{"Action":"DeleteCertificate","ConfirmationRequired":false},{"Action":"PrivateKeyAccess","ConfirmationRequired":false}]
    

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

    HTTP-код Ошибка Описание
    404 user_not_found Пользователь не найден.

    Отключение метода аутентификации при помощи мобильного приложения на базе Ключ SDK

    Отключение метода аутентификации состоит из последовательности шагов:

    1. Отключить требование подтверждения операций
    2. Отключить метод аутентификации
    3. Удалить привязанные мобильные устройства пользователя

    Отключение требования подтверждения операций

    Примечание

    Если отключить метод аутентификации при помощи мобильного приложения на базе Ключ SDK, не отключив требование подтверждения операций, то пользователь не сможет выполнять данные операции.

    Описание метода SetUserOperationPolicy.

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

    POST https://{{hostname}}/{{instanceName}}/ums/user/206adc4f-3262-469c-9871-b7a7cabaa979/operationpolicy HTTP/1.1
    Accept: application/json
    Content-Type: application/json; charset=utf-8
    Host: 192.168.109.149
    Content-Length: 2
    Expect: 100-continue
    
    []
    

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

    Метод не имеет возвращаемого значения.

    HTTP/1.1 200 OK
    Cache-Control: no-cache
    Pragma: no-cache
    Expires: -1
    Content-Length: 0
    

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

    HTTP-код Ошибка Описание
    404 user_not_found Пользователь не найден.

    Отключение метода аутентификации

    Описание метода DeleteUserAuthenticationMethodMyDss.

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

    DELETE https://{{hostname}}/{{instanceName}}/ums/user/e06a4bc1-4c31-4f8d-a7a7-920b66ca4ad6/authmethod/mydss HTTP/1.1
    Accept: application/json
    Host: host
    Content-Length: 0
    

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

    Метод не имеет возвращаемого значения

    HTTP/1.1 200 OK
    Cache-Control: no-cache
    Pragma: no-cache
    Expires: -1
    Content-Length: 0
    

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

    HTTP-код Ошибка Описание
    404 user_not_found Пользователь не найден.

    Удаление привязки мобильного устройства

    Описание метода DeleteUserMyDssKey.

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

    DELETE https://{{hostname}}/{{instanceName}}/ums/user/a17efd43-181a-45b7-8d60-088b6889480c/mydss HTTP/1.1
    Accept: application/json
    Host: host
    Content-Length: 0
    

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

    Метод не имеет возвращаемого значения.

    HTTP/1.1 200 OK
    Cache-Control: no-cache
    Pragma: no-cache
    Expires: -1
    Content-Length: 0
    

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

    HTTP-код Ошибка Описание
    404 user_not_found Пользователь не найден.
    400 wrong_operation Нельзя удалить мобильное устройство пользователя, не отключив соответствующий метод аутентификации

    Заполнение профиля пользователя

    Используются методы для работы с Различительным именем пользователя

    Получение сведений об устройстве пользователя

    При регистрации устройство пользователя передает на сервер следующие данные:

    • CreationType - тип регистрации устройства. Anonymous - саморегистрация устройства. Initialization - регистарция по QR-коду.
    • DeviceName - отображаемое имя устройства
    • PushAddress - (опцинально) Push-адрес устройства
    • OsType - тип операционной системы. 1 - iOS; 2 - Android
    • OsVersion - версия ОС
    • DeviceModel - модель устройства
    • Locale - локализация
    • TimeZoneUTCOffset - часовой пояс
    • AppVersion - (опцинально) версия приложения, в которое встроено SDK.
    • IMEI - (опцинально) IMEI

    Так же сведения об устройстве устройства содержат:

    • State - статус ключей аутентификации
    • Alias - псевдоним устройства
    • NotBefore, NotAfter - сроки действия ключей аутентификации в формате MM/dd/yyy HH:mm:ss

    Для получения сведений об устройстве пользователя используется метод authntokens Поиск может осуществляться по kid - идентификатору устройства. Для поиска по kid используется фильтр по колонке Serial.

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

    POST https://{{hostname}}/{{instanceName}}/ums/authntokens
    Accept: application/json
    Host: host
    {
        "StartPosition": 0,
        "EndPosition": 10,
        "Filters": [
            {
                "Column": 1,
                "Operation": 0,
                "Value": "1907645"
            }
        ]
    }
    

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

    {
        "TokenInfos": [
            {
                "Id": 10041,
                "Serial": "1907645",
                "UserName": null,
                "TokenType": "MyDss",
                "Parameters": {
                    "DeviceFingerprintRequired": "True",
                    "ProfileId": "65e6d20b-bc33-4556-9467-b5afa116f232",
                    "CreationType": "Anonymous",
                    "DeviceFingerprint": "2b703f23807f2201d56edf371f9d0405a84f28dbcef3bfadb13f14c795a9f017",
                    "DeviceName": "iPad Pro (9.7-inch)",
                    "PushAddress": "7E5C8E3903F0EF5A72C3FA55A673352EC1C5F95B537F1D86B0F8D0998B8B8279",
                    "OsType": "1",
                    "OsVersion": "12.4",
                    "DeviceModel": "x86_64",
                    "Locale": "en_US",
                    "TimeZoneUTCOffset": "3",
                    "AppVersion": "1.2",
                    "IMEI": null,
                    "TempUserName": "368EC3FE-45AB-4AAE-AEB8-D1EFB97D8CC0",
                    "NotBefore": "12/17/2019 15:28:58",
                    "NotAfter": "03/17/2021 15:28:58",
                    "VerificationNonce": "eNhG2BdE/ZxChwoV5uM0N/HqCVRd94GYYg2guS/is5s=",
                    "Alias": "368EC3FE-45AB-4AAE-AEB8-D1EFB97D8CC0",
                    "State": "Installed"
                }
            }
        ],
        "TotalCount": 2683,
        "AffectedCount": 1
    }
    
    В начало © ООО "КРИПТО-ПРО", 2000–2025