Интеграция Web3Auth для социального логина в мобильном криптоприложении
Клиенты часто приходят с запросом: «Хотим, чтобы пользователи заходили в приложение через Google, но при этом получали настоящий некастодиальный кошелёк». Seed-фраза — самое слабое звено: пользователи её теряют, забывают, не записывают. Мы предлагаем интеграцию Web3Auth — распределённое хранение ключей через Multi-Party Computation, которое устраняет этот барьер, не жертвуя безопасностью. За нашими плечами более 5 лет опыта в блокчейн-разработке и 20+ внедрений MPC-решений.
Web3Auth решает классическую проблему крипто-onboarding'а: пользователь хочет войти через Google или Apple ID, но при этом получить некастодиальный кошелёк. Seed-фразу никто не запоминает — её теряют. Web3Auth распределяет части ключа через MPC, не требуя от пользователя хранить мнемонику.
Как работает архитектура ключей
Web3Auth разделяет приватный ключ на части через протокол tKey (threshold key). При логине через Google часть ключа хранится в сети узлов Torus Network, часть — на устройстве пользователя, часть — в облачном бэкапе (iCloud / Google Drive). Для восстановления нужны минимум 2 из 3 частей — схема 2-of-3.
Пользователь теряет устройство → логинится через Google на новом → ключ восстанавливается. Никакой seed-фразы. Но важно понимать: это не полностью некастодиальное решение — Torus Network держит одну из частей.
Почему Web3Auth безопаснее seed-фразы?
Seed-фраза — единая точка отказа: один скомпрометированный файл или фишинговая страница дают злоумышленнику полный доступ. В MPC-модели Web3Auth злоумышленнику нужно одновременно скомпрометировать два из трёх хранилищ (устройство, iCloud, Torus). Пороговая схема ECDSA гарантирует, что ни один узел Torus не может подписать транзакцию в одиночку. Кроме того, приватный ключ реконструируется только в памяти устройства и не сохраняется на диск — это снижает риск при компрометации ОС.
Как интегрировать Web3Auth с поддержкой MFA?
Web3Auth позволяет задать уровень MFA при логине. Параметр mfaLevel принимает значения "optional", "mandatory" или "off". При "mandatory" пользователь после первого входа через Google будет вынужден настроить второй фактор (например, резервное устройство или биометрию). Для криптоприложений с реальными активами мы рекомендуем "optional" — пользователь может пропустить настройку сейчас, но мы напоминаем о ней через push-уведомления.
Интеграция SDK
Web3Auth предоставляет web3auth-react-native-sdk для React Native и нативные обёртки для iOS/Android.
// React Native import { Web3Auth, LOGIN_PROVIDER } from "@web3auth/react-native-sdk"; const web3auth = new Web3Auth(WebBrowser, { clientId: "YOUR_CLIENT_ID", network: "mainnet", redirectUrl: "your-app-scheme://auth", loginConfig: { google: { verifier: "your-google-verifier", typeOfLogin: LOGIN_PROVIDER.GOOGLE, clientId: "YOUR_GOOGLE_CLIENT_ID", }, }, }); const login = async () => { const state = await web3auth.login({ loginProvider: LOGIN_PROVIDER.GOOGLE, mfaLevel: "optional", }); const privateKey = web3auth.privKey; // hex-строка // Создаём кошелёк из приватного ключа const wallet = new ethers.Wallet(privateKey); }; После получения privKey создаём кошелёк через ethers.js или viem. Приватный ключ не хранится на устройстве напрямую — он реконструируется при каждой сессии и живёт только в памяти.
Настройка Verifier в Dashboard
Перед интеграцией нужно создать Custom Verifier в Web3Auth Dashboard. Для Google — OAuth 2.0 Client ID из Google Cloud Console, verifier name. Для Apple Sign In — дополнительная настройка через JWT-верификатор, потому что Apple использует нестандартный OIDC.
Deep Link / Universal Link настраивается для redirect после OAuth. На Android — Intent Filter в AndroidManifest.xml:
<intent-filter android:autoVerify="true"> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="yourapp" android:host="auth" /> </intent-filter> На iOS — URL Scheme в Info.plist + обработка в AppDelegate.application(_:open:options:).
Сравнение методов входа в криптокошелёк
| Метод | Удобство для пользователя | Безопасность | Восстановление доступа |
|---|---|---|---|
| Seed-фраза (12/24 слов) | Низкое (требуется запись) | Зависит от хранения (фраза) | Возможно с seed-фразой |
| Web3Auth (Google/Apple) | Высокое (1 клик) | MPC, 2-of-3, ключ в памяти | Автоматическое через соцлогин |
| Аппаратный кошелёк (Ledger) | Низкое (устройство) | Максимальное (офлайн) | Требуется сид-фраза или новый девайс |
Что входит в интеграцию
Мы выполняем интеграцию Web3Auth под ключ. В состав работ входит:
- Создание Custom Verifier в Web3Auth Dashboard для Google и Apple
- Настройка OAuth-клиентов в Google Cloud Console и Apple Developer
- Интеграция SDK в React Native / iOS / Android
- Конфигурация Deep Link и Universal Link
- Тестирование на обоих окружениях (dev/prod) с разными Client ID
- Настройка MFA (optional/mandatory) и биллинг-систем (StoreKit 2 / Billing 6)
- Документация по эксплуатации и обучение вашей команды
- Поддержка в течение 30 дней после сдачи
Что может пойти не так
Самая частая проблема — redirect_uri_mismatch. OAuth-провайдер (Google, Apple) отклоняет redirect на URL схему приложения, если он не добавлен в список разрешённых в консоли провайдера. Проверить нужно оба окружения: development и production — у них разные Client ID и разные redirect URI.
Второй момент — mfaLevel. Web3Auth поддерживает опциональный второй фактор через устройство. Если mfaLevel = "mandatory", пользователь будет вынужден настроить резервное устройство при первом логине. Для крипто-приложений с реальными активами — рекомендуем "optional" с последующим prompting.
Интеграция Web3Auth с социальным логином (Google + Apple) занимает от 1 до 3 недель. Оценим ваш проект бесплатно — свяжитесь с нами, чтобы обсудить детали.







