Ми інтегруємо AWS Cognito в мобільні додатки, щоб вирішити одну з найчастіших проблем — плутанину між User Pools та Identity Pools. User Pool керує користувачами та видає JWT, а Identity Pool надає тимчасові IAM credentials для доступу до S3, DynamoDB та інших сервісів. Багато проєктів витрачають тижні на налагодження неправильної конфігурації. Наш досвід показує, що правильна архітектура з самого початку економить 30–50% часу на подальші доопрацювання.
Як AWS Cognito допомагає уникнути типових помилок?
Одна з найпоширеніших помилок — використання App Client з Client Secret. Мобільні додатки не можуть безпечно зберігати секрет, тому при створенні App Client обов'язково знімаємо позначку "Generate client secret". Якщо секрет уже створено — створюємо новий App Client без нього. Аутентифікація за SRP (Secure Remote Password) вирішує проблему передачі пароля: пароль ніколи не покидає пристрій. Hosted UI підходить для швидкого старту та соціальних провайдерів, але кастомізація обмежена CSS. SRP дає нативний UX та максимальну безпеку. Рекомендуємо SRP для production-додатків.
Чому варто використовувати Identity Pool разом з User Pool?
User Pool відповідає за аутентифікацію та видачу JWT-токенів. Identity Pool надає тимчасові IAM credentials для прямого доступу до AWS ресурсів (S3, DynamoDB, Lambda). Без Identity Pool додаток не зможе безпечно працювати з AWS сервісами напряму. Для типового додатка з сотнями тисяч користувачів Identity Pool обов'язковий.
Проблеми, які вирішуємо
Token expiry vs refresh — інтеграція aws cognito
Access token живе від 5 хвилин до 24 годин (налаштовується). Refresh token — від 1 до 3650 днів. Amplify автоматично робить refresh, але якщо refresh token закінчився або відкликаний, Amplify.Auth.fetchAuthSession() поверне помилку AuthError.sessionExpired. Потрібно зловити та перенаправити на логін. Обробляйте помилку в колбеку, при офлайн-режимі показуйте кешовані дані.
Кастомні атрибути та Lambda Triggers
Кастомні атрибути (custom:role, custom:company_id) включаються в ID Token та доступні в додатку без додаткових запитів. Lambda Triggers (Pre-sign-up, Post-confirmation, Pre-token-generation) дозволяють валідувати email, створювати записи в БД та додавати claims в JWT на льоту. Це зменшує навантаження на бекенд у 2–3 рази.
Прискорення розробки з Amplify SDK
Amplify — високорівнева обгортка, яка бере на себе конфігурацію через amplifyconfiguration.json, зберігання токенів (Keychain на iOS, EncryptedSharedPreferences на Android), автоматичний refresh access token та Hosted UI (OAuth 2.0 + PKCE).Офіційна документація Amplify
Але Amplify тягне багато залежностей. Якщо потрібна лише аутентифікація, розмір додатка може зрости на 5–10 МБ. У таких випадках використовуємо AWSCognitoIdentityProvider напряму — низькорівневий SDK. Це дає гнучкість та зменшує розмір білду.
| Характеристика | Amplify SDK | Low-level SDK |
|---|---|---|
| Розмір додатка | +5–10 МБ | ~2 МБ |
| Налаштування | автоматична | ручна |
| Refresh token | вбудований | потрібно реалізувати |
| Hosted UI | так | ні |
| Гнучкість | середня | висока |
Приклад конфігурації Amplify
AmplifyConfiguration: `{"UserAgent": "...", "Version": "1.0"}` (файл `amplifyconfiguration.json` генерується автоматично).Порівняння User Pool та Identity Pool
| Характеристика | User Pool | Identity Pool |
|---|---|---|
| Призначення | Аутентифікація та видача JWT | Тимчасові ключі доступу до AWS |
| Приклад використання | Логін, реєстрація, MFA | Доступ до S3, DynamoDB |
| Налаштування в SDK | Amplify.Auth | Amplify.Storage |
| Вплив на вартість | $0.00275 за MAU | Без додаткової плати |
Як ми це робимо: кейс інтеграції TOTP MFA
В одному проєкті вимагалася аутентифікація з TOTP MFA. Налаштували User Pool з USER_SRP_AUTH, увімкнули TOTP. На стороні iOS використовували Amplify.Auth.setUpTOTP():
Amplify.Auth.setUpTOTP() { result in switch result { case .success(let totpDetails): let qrCodeURL = totpDetails.getSetupURI(appName: "MyApp", accountName: username) // генеруємо QR з qrCodeURL через CIQRCodeGenerator case .failure(let error): print(error) } } Після сканування QR-коду та введення першого коду MFA активувалася. Для верифікації використовували Amplify.Auth.confirmSignIn() з TOTP-кодом. Всього на інтеграцію пішло 4 дні.
Процес роботи
- Аналітика — аудит поточної архітектури, визначення необхідності User Pool / Identity Pool, вибір flow (Hosted UI / SRP).
- Проєктування — налаштування Cognito User Pool, App Client, Federation, MFA, Lambda Triggers.
- Реалізація — інтеграція SDK (Amplify або low-level), реалізація логіну, реєстрації, MFA, оновлення токенів.
- Тестування — перевірка всіх сценаріїв: успішний вхід, закінчення токенів, офлайн, зміна пристрою.
- Деплой — налаштування Store Connect / Play Console, підпис коду, TestFlight, Firebase App Distribution.
Що входить у роботу
- Документація архітектури аутентифікації
- Налаштування Cognito User Pool, Identity Pool, App Client
- Інтеграція Amplify або low-level SDK
- Реалізація SRP або Hosted UI з PKCE
- Налаштування MFA (TOTP або SMS)
- Інтеграція соціальних провайдерів (Google, Apple, Facebook)
- Lambda Triggers під бізнес-логіку
- Налаштування device tracking
- Інструкція з підтримки та навчання команди
- 2 тижні безкоштовної техпідтримки після деплою
Строки та досвід
Базова інтеграція (SRP + TOTP + social providers + Amplify) — 7–12 робочих днів. Додавання Identity Pool + IAM roles — плюс 3–5 днів. Lambda Triggers — оцінюємо окремо.
Ми інтегруємо Cognito з моменту запуску сервісу. Наші сертифіковані AWS-інженери реалізували аутентифікацію для 20+ мобільних додатків у fintech, e-commerce та healthcare. Гарантуємо дотримання App Store Review Guidelines та безшовну роботу з StoreKit 2 / Billing 6.
Замовте інтеграцію AWS Cognito вже сьогодні — зв'яжіться з нами для консультації. Отримайте консультацію щодо вашого проєкту, щоб обговорити деталі.







