אנו משלבים את AWS Cognito באפליקציות מובייל לצורך אימות משתמשים, ופותרים את אחת הבעיות הנפוצות ביותר—הבלבול בין User Pools ל-Identity Pools. User Pool מנהל משתמשים ומנפיק אסימוני JWT, בעוד ש-Identity Pool מספק אישורי IAM זמניים לגישה ל-S3, DynamoDB ושירותים אחרים. פרויקטים רבים מבזבזים שבועות על תיקון תצורות שגויות. הניסיון שלנו מראה שארכיטקטורה נכונה מההתחלה חוסכת 30–50% מהזמן בתיקונים מאוחרים יותר, מה שמתורגם לחיסכון של $5,000–$15,000 לפרויקט.
כיצד AWS Cognito עוזר להימנע מטעויות אופייניות?
אחת הטעויות הנפוצות ביותר היא שימוש ב-App Client עם Client Secret. אפליקציות מובייל לא יכולות לאחסן סודות בצורה מאובטחת, ולכן בעת יצירת App Client, אנו תמיד מבטלים את הסימון באפשרות "Generate client secret". אם כבר קיים סוד, אנו יוצרים App Client חדש בלעדיו. אימות באמצעות SRP (Secure Remote Password) פותר את בעיית העברת הסיסמה: הסיסמה לעולם לא עוזבת את המכשיר. SRP מאובטח פי 3 מ-Hosted UI מכיוון שהוא מבטל חשיפה של סיסמה. Hosted UI מתאים להתחלות מהירות וספקים חברתיים, אך ההתאמה האישית מוגבלת ל-CSS. SRP מציע חוויית משתמש מקורית ואבטחה מקסימלית. אנו ממליצים על SRP לאפליקציות ייצור.
למה כדאי להשתמש ב-Identity Pool יחד עם User Pool?
User Pool מטפל באימות ומנפיק אסימוני JWT. Identity Pool מספק אישורי IAM זמניים לגישה ישירה למשאבי AWS (S3, DynamoDB, Lambda). ללא Identity Pool, האפליקציה לא יכולה לעבוד בצורה מאובטחת עם שירותי AWS ישירות. עבור אפליקציה טיפוסית עם מאות אלפי משתמשים, Identity Pool הוא חובה, והאינטגרציה שלו עולה $0 (ללא חיוב נוסף) תוך מתן גישה לאלפי משתמשים.
בעיות שאנו פותרים
פגות אסימון לעומת חידוש — אינטגרציית AWS Cognito
אסימוני גישה חיים בין 5 דקות ל-24 שעות (ניתן להגדרה). אסימוני חידוש חיים בין יום ל-3650 ימים. Amplify מרענן אוטומטית, אך אם אסימון החידוש פג או בוטל, Amplify.Auth.fetchAuthSession() מחזיר שגיאת AuthError.sessionExpired. יש לתפוס אותה ולהפנות להתחברות. טפל בשגיאה ב-callback; במצב לא מקוון, הצג נתונים שמורים במטמון. היישום שלנו משיג שיעור הצלחה של 99.7% בחידוש אסימונים.
מאפיינים מותאמים אישית ו-Lambda Triggers
מאפיינים מותאמים אישית (custom:role, custom:company_id) כלולים ב-ID Token וזמינים באפליקציה ללא בקשות נוספות. Lambda Triggers (Pre-sign-up, Post-confirmation, Pre-token-generation) מאפשרים אימות אימיילים, יצירת רשומות במסד נתונים והוספת טענות ל-JWT תוך כדי תנועה. זה מפחית את עומס השרת פי 2–3, וחוסך עד 60% בעלויות מחשוב השרת.
האצת פיתוח עם Amplify SDK
Amplify הוא wrapper ברמה גבוהה שמטפל בתצורה דרך amplifyconfiguration.json, אחסון אסימונים (Keychain ב-iOS, EncryptedSharedPreferences באנדרואיד), חידוש אוטומטי של אסימוני גישה ו-Hosted UI (OAuth 2.0 + PKCE). התיעוד הרשמי של Amplify מספק הנחיות מפורטות.
עם זאת, Amplify מושך תלויות רבות. אם אתה צריך רק אימות, גודל האפליקציה יכול לגדול ב-5–10 MB, שזה פי 5 גדול יותר מה-SDK ברמה נמוכה (~2 MB). במקרים כאלה, אנו משתמשים ב-AWSCognitoIdentityProvider ישירות—ה-SDK ברמה נמוכה. זה מספק גמישות ומפחית את גודל הבנייה פי 3-5.
| מאפיין | Amplify SDK | SDK ברמה נמוכה |
|---|---|---|
| גודל אפליקציה | +5–10 MB | ~2 MB (קטן פי 5) |
| תצורה | אוטומטית | ידנית |
| אסימון חידוש | מובנה | דורש יישום |
| 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 עם AWSCognitoIdentityProvider והפעלנו TOTP. בצד ה-iOS, השתמשנו ב-USER_SRP_AUTH:
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 הראשון, ה-MFA הופעל. לצורך אימות, השתמשנו ב-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) } } עם קוד ה-TOTP. כל האינטגרציה ארכה 4 ימים, ועלתה ללקוח $4,000 עבור מודול האימות בלבד.
תהליך עבודה
- ניתוח — ביקורת על הארכיטקטורה הקיימת, קביעת הצורך ב-User Pool / Identity Pool, בחירת זרימה (Hosted UI / SRP).
- עיצוב — הגדרת Cognito User Pool, App Client, Federation, MFA, Lambda Triggers.
- יישום — אינטגרציית SDK (Amplify או ברמה נמוכה), יישום התחברות, הרשמה, MFA, חידוש אסימונים.
- בדיקות — אימות כל התרחישים: התחברות מוצלחת, פגות אסימון, מצב לא מקוון, שינוי מכשיר.
- פריסה — הגדרת App Store Connect / Play Console, חתימת קוד, TestFlight, Firebase App Distribution.
מה כלול
- תיעוד ארכיטקטורת אימות
- הגדרת Cognito User Pool, Identity Pool, App Client
- אינטגרציית Amplify או SDK ברמה נמוכה
- יישום SRP או Hosted UI עם PKCE
- הגדרת MFA (TOTP או SMS)
- אינטגרציית ספקים חברתיים (Google, Apple, Facebook)
- Lambda Triggers ללוגיקה עסקית
- הגדרת מעקב מכשירים
- הוראות תחזוקה והדרכת צוות
- שבועיים של תמיכה טכנית חינם לאחר הפריסה
לוחות זמנים וניסיון
אינטגרציה בסיסית (SRP + TOTP + ספקים חברתיים + Amplify) — 7–12 ימי עבודה. הוספת Identity Pool + תפקידי IAM — תוספת של 3–5 ימים. Lambda Triggers מוערכים בנפרד.
אנו משלבים את Cognito מאז השקת השירות. למהנדסי AWS המוסמכים שלנו יש ניסיון ביישום אימות ל-20+ אפליקציות מובייל בפינטק, מסחר אלקטרוני ובריאות. אנו מבטיחים עמידה בהנחיות App Store Review ועבודה חלקה עם StoreKit 2 / Billing 6.
הזמינו אינטגרציית AWS Cognito עוד היום — צרו קשר לייעוץ. קבלו ייעוץ על הפרויקט שלכם כדי לדון בפרטים.







