Перейти к основному содержимому

Тихая ревалидация

Использует движок Тихая ревалидация, который анализирует поведенческий контекст пользователя в рамках сетевого эффекта Unico и выдаёт сигнал уверенности для текущей транзакции. Другими словами, мы предоставляем уровень уверенности в том, что это именно тот пользователь, который ожидается в транзакции.

Требование

Минимальная версия: 3.3.0

Атрибуты PrepareInfo
АтрибутТипОбязательноОписание
externalUserIdString✅Идентификатор пользователя в вашей системе. Автоматически хешируется с помощью SHA-256 перед передачей, никогда не отправляется в открытом виде.
Запуск тихой ревалидации
Шаг 1 — Реализуйте initializeSDK

Вызовите статический метод UnicoSDK.initializeSDK, передав ваш AcessoBioConfigDataSource и environment.

Вызывайте его при запуске приложения

UnicoSDK.initializeSDK должен вызываться как можно раньше при запуске приложения (например, в application(_:didFinishLaunchingWithOptions:)). Более поздний вызов сокращает время фоновой обработки и увеличивает вероятность неопределённых ответов аутентификации.

UnicoSDK.initializeSDK(
config: YourUnicoConfig(),
environment: .UAT
)

config — это тот же AcessoBioConfigDataSource, который вы уже реализовали для захвата — sdkKey берётся из getHostKey(), а bundle — из getBundleIdentifier():

final class YourUnicoConfig: NSObject, AcessoBioConfigDataSource {
func getBundleIdentifier() -> String { "your_bundle_id" }
func getHostKey() -> String { "your_sdk_key" }
}

Если environment не указан, по умолчанию используется .PROD.

Шаг 2 — Реализуйте startSilentValidation

После initializeSDK свяжите уже выполняющийся сбор данных с идентифицированным пользователем, вызвав startSilentValidation с PrepareInfo, содержащим externalUserId.

let prepareInfo = PrepareInfo(externalUserId: "external_user_id")

UnicoSDK.startSilentValidation(prepareInfo: prepareInfo) { result in
switch result {
case .success:
break
case .failure(let error):
print(error.code, error.desc, error.info)
}
}

Если валидация происходит в начале потока, например при входе в систему, дождитесь успешного колбэка, прежде чем переходить к Шагу 3.

Ошибки
КодСмысл
75001SDK не инициализирован. initializeSDK не был вызван, ещё не завершился или завершился с ошибкой.
75000Общая ошибка захвата.
Шаг 3 — Создайте процесс и выполните аутентификацию

Пока валидация выполняется, создайте процесс верификации для завершения аутентификации. См. Справочник API ▸ API ▸ Создание процесса.

Включите в тело запроса тот же externalUserId, который был отправлен в PrepareInfo на Шаге 2 — именно это позволяет бэкенду сопоставить создание процесса с уже выполняющейся валидацией.

curl -X POST https://api.id.unico.app/processes/v1 \
-H "Authorization: Bearer $TOKEN" \
-H "APIKEY: $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"subject": {
"duiType": 1,
"code": "12345678909",
"name": "Luke Skywalker",
"gender": "M",
"birthDate": "2000-05-20",
"email": "[email protected]",
"phone": "5519725570707"
},
"useCase": "Onboarding",
"externalUserId": "external_user_id"
}'

Ответ содержит поле silentAuth.result с результатом аутентификации:

{
"id": "80371b2a-3ac7-432e-866d-57fe37896ac6",
"status": 3,
"silentAuth": {
"result": "yes"
}
}
ПолеТипОписание
silentAuth.resultstringyes или no — см. возможные значения ниже.
silentAuth.result — возможные значения
ЗначениеСмысл
yesАутентификация одобрена, пользователь распознан с достаточной уверенностью, дополнительный захват не требуется.
noНедостаточно данных для одобрения в тихом режиме. Рекомендуется аутентификация с помощью биометрии (селфи) или другого альтернативного метода.