Подписать Транзитный токен для входа в ЦА
Полученный Партнером транзитный токен (поле token из ответа /v2/auth/assistant/get-transittoken) необходимо подписать закрытым ключом, хранящимся в защищенном хранилище устройства.
Для этого используется публичный метод SDK SberID signTransitToken.
Вызов метода подписи
Партнер должен передать в SDK только значение jti (UUID), извлеченное из поля token ответа бэкенда.
Важно! В метод передается не весь объект токена, а только его идентификатор jti (строка в формате UUID).
SDK самостоятельно извлекает приватный ключ по alias, выполняет криптографическую подпись и формирует итоговый артефакт signedTransitToken.
Пример вызова:
Android (Kotlin):
// jti - это UUID из поля token ответа /v2/auth/assistant/get-transittoken
val jti = "3a859d28-1cea-4847-ba55-41fccfa0b6b0"
// Вызов метода подписи
SIDLogin.signTransitToken(transitToken = jti)
iOS (Swift):
// jti - это UUID из поля token ответа /v2/auth/assistant/get-transittoken
let jti = "3a859d28-1cea-4847-ba55-41fccfa0b6b0"
// Вызов метода подписи
SIDLogin.signTransitToken(transitToken: jti)
Обработка результата
Метод signTransitToken работает асинхронно.
Результат возвращается через событие AuthEvents.SignTransitTokenEvent.
Партнер должен подписаться на это событие и обработать три возможных сценария:
| Событие | Описание | Действие Партнера |
|---|---|---|
| Success(signedTransitToken: String) | Токен успешно подписан. SDK вернул готовый артефакт signedTransitToken. | Передать полученный signedTransitToken в SDK Цифрового Ассистента. Важно: Формат токена кастомный, не является стандартным JWT. Передавайте строку "как есть", не пытайтесь ее парсить или модифицировать. |
| KeyNotFound | В защищенном хранилище устройства отсутствует приватный ключ (например, пользователь очистил данные приложения, сбросил устройство или ключ был скомпрометирован). | Показать пользователю ошибку на UI (например, "Не удалось перейти в Ассистента, попробуйте позже") и прервать процесс перехода. Или инициировать перелогин пользователя. |
| SignFailed(cause: String?) | Произошла внутренняя ошибка при криптографической операции. | Показать пользователю ошибку на UI (например, "Не удалось перейти в Ассистента, попробуйте позже") и прервать процесс перехода. Или инициировать перелогин пользователя. |