SDK для реализации функций аутентификатора в сторонних мобильных приложениях - Avanpost FAM/MFA+

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

Реализованные операции

Привязка аккаунта по QR-коду: bindNewAccountViaQR(serverPath, signature, bindRequest)

Разработчик приложения выполняет:

  • Получение QR-кода
  • Парсинг QR-кода в строку
  • Выпуск RSA пары и сохранение в локальном хранилище
  • Отображение информации о новой привязке пользователю

Входные данные:

  • serverPath - адрес сервера, issuer значение полученное с QR кода
  • signature - подписанная приватным ключом из локального хранилища строка RandomBind, полученная с QR кода
  • bindRequest
    • transactionId - идентификатор транзакции
    • publicKey - публичный ключ RSA пары
    • deviceInfo - объект типа DeviceInfo
      • identifier - UUID значение
      • name - наименование устройства
      • version - версия устройства
      • platform - платформа устройства, принимает значения
        • Android
        • HarmonyOS - для huawei устройств
        • iOS
      • deviceToken - токен выписанный Firebase сервисом

Результат:

  • HttpResponse
    • Статус ответа
    • Структура с информацией о привязке

Разработчик приложения выполняет:

  • Обработка ответа сервера
  • При успешной привязки аккаунта, сохраняет сведения в локальном хранилище приложения
  • Расшифровка EncryptedSecret по указанному алгоритму
    • SHA-256 - encryption Oaep with MGF1-SHA256
    • SHA-512 - encryption Oaep with MGF1-SHA512
  • Сохраняет расшифрованный секрет TOTP в безопасном хранилище, для дальнейшего формирования totp кода

Получение строки, для привязки аккаунта по одноразовому коду: getJsonInfoViaTempCode(serverPath, tempCode)

Разработчик приложения выполняет:

  • Подключить хранилище Cloud Storage for Firebase
  • Получить одноразовый код из коллекции в хранилище Firebase

Входные данные:

  • serverPath - адрес сервера
  • tempCode - одноразовый код

Результат:

  • HttpResponse
    • Статус ответа
    • Строка с параметрами, для привязки аккаунта
      • issuer - адрес сервера
      • secret - TOTP секрет
      • randomBind - рандомная строка, для формирования подписи на привязку аккаунта
      • randomUnbind - рандомная строка, для формирования подписи на удаление привязки
      • organizationName - наименование организации
      • transactionId - идентификатор транзакции
      • enc - алгоритм, для расшифровки секрета

Разработчик приложения выполняет:

  • Обработка ответа сервера
  • Парсинг строки для привязки аккаунта
  • Формирование запроса привязки аккаунта

Получение требований безопасности сервера: getSecurityPolicyRequest(serverPath)

Входные данные:

  • serverPath - адрес сервера

Результат:

  • HttpResponse
    • Статус ответа 
    • Структура с информацией об имеющихся требований безопасности

Разработчик приложения выполняет:

  • Сохраняет требования в локальном хранилище приложения

Обработка запроса на аутентификацию: handleAuthPushRequest(serverPath, signature, pushId, bindingId, approveType)

Разработчик приложения выполняет:

  • реализация метода OnMessageReceived средствами Firebase, для получения запросов на аутентификацию
  • получение и обработка запроса
  • формирование пуш-уведомления, для отображения пользователю
  • поиск активной привязки по BindingId

Входные данные:

  • serverPath - адрес сервера
  • signature - подписанная приватным ключом строка RandomString
  • pushId - идентификатор уведомления, полученный в теле запроса на аутентификацию
  • bindingId - идентификатор привязки, полученный после привязки
  • approveType - тип подтверждения, принимает значение approve/deny

Результат:

  • HttpResponse

Разработчик приложения выполняет:

  • Обработка ответа сервера

Внедрение jar сборки в мобильное приложение Android:

В файле проекта build.gradle добавить строку подключения

implementation(fileTree(mapOf(
"dir" to "<путь к файлу>AvanpostSDK.jar",
"include" to listOf("*.aar", "*.jar")
)))

Для вызова методов необходимо вызвать класс AvanpostHttpClient и импортировать пакет sdk

import ru.avanpost.authenticator.avanpostsdk.AvanpostHttpClient

 




Обсуждение