אימות והרשאה באפליקציות מובייל

אנו מיישמים אימות מאובטח: OAuth 2.0, Sign in with Apple, Google Sign-In, ביומטריה, JWT, MFA. עמידה בדרישות App Store ו-Google Play.

פיתוח ותמיכה בכל סוגי היישומים הניידים:

יישומים ניידים למידע ובידור
אפליקציות חדשות, משחקים, מדריכים, קטלוגים מקוונים, אפליקציות מזג אוויר, אפליקציות כושר ובריאות, אפליקציות נסיעות, אפליקציות חינוכיות, רשתות חברתיות ומסנג'רים, חידונים, בלוגים ופודקאסטים, פורומים, אגרגטורים
יישומים ניידים למסחר אלקטרוני
חנויות מקוונות, אפליקציות B2B, מרקטפלייסים, בורסות מקוונות, שירותי קאשבק, בורסות, פלטפורמות דרופשיפינג, תוכניות נאמנות, משלוחי מזון ומוצרים, מערכות תשלום.
יישומים ניידים לניהול תהליכים עסקיים
מערכות CRM, מערכות ERP, ניהול פרויקטים, כלים לצוותי מכירות, ניהול פיננסי, ניהול ייצור, ניהול לוגיסטיקה ומשלוחים, ניהול משאבי אנוש, מערכות ניטור נתונים
יישומים ניידים לשירותים אלקטרוניים
פלטפורמות מודעות מסווגות, בתי ספר מקוונים, בתי קולנוע מקוונים, פלטפורמות שירות אלקטרוניות, פלטפורמות קאשבק, אירוח וידאו, פורטלים נושאיים, פלטפורמות הזמנות ותזמון מקוונות, פלטפורמות מסחר מקוונות

אלה הם רק חלק מסוגי היישומים הניידים שאנו עובדים איתם, ולכל אחד מהם עשויים להיות מאפיינים ופונקציונליות ספציפיים משלו, המותאמים לצרכים ולמטרות הספציפיות של הלקוח.

השירותים שאנו מציעים
מציג 30 מתוך 46כל 1734 השירותים

הכישורים שלנו:

שאלות נפוצות

העבודות האחרונות

  • פיתוח אפליקציית מובייל עבור FEEDME
    פיתוח אפליקציית מובייל עבור FEEDME
    971
  • פיתוח אפליקציית מובייל עבור XOOMER
    פיתוח אפליקציית מובייל עבור XOOMER
    869
  • פיתוח אפליקציית מובייל עבור RHL
    פיתוח אפליקציית מובייל עבור RHL
    1289
  • פיתוח אפליקציית מובייל עבור ZIPPY
    פיתוח אפליקציית מובייל עבור ZIPPY
    1143
  • פיתוח אפליקציית מובייל עבור Affhome
    פיתוח אפליקציית מובייל עבור Affhome
    1076
  • פיתוח אפליקציית מובייל עבור חברת FLAVORS
    פיתוח אפליקציית מובייל עבור חברת FLAVORS
    677

מה שובר אימות באפליקציות מובייל

ראינו אפליקציית בנקאות שבה התחברות עם PIN הנפיקה JWT, והטוקן נשמר ב-SharedPreferences כטקסט רגיל. לא היפותטי — פרויקטים פינטק אמיתיים שנאלצו מאוחר יותר לשכתב את מודול האימות מאפס. SharedPreferences באנדרואיד ניתן לקריאה על ידי כל אפליקציה עם גישת root ללא הרשאות נוספות. ב-iOS, המקבילה היא UserDefaults במקום Keychain. הטעות יקרה: הנזק הממוצע מדליפה כזו עולה על 50,000 דולר כולל קנסות והפסדים מוניטריים.

אימות במובייל מורכב יותר מהותית מאשר בווב: אין HttpOnly cookies, אין מנגנון סשן דפדפן, אבל יש אחסון פלטפורמה וביומטריה. פיתחנו מודולי הרשאות ל-30+ פרויקטים (פינטק, מרקטפלייסים, רשתות חברתיות) ומבטיחים עמידה בכללי App Store ו-Google Play.

איך להגן על טוקנים במהלך אימות OAuth 2.0?

iOS Keychain — אחסון מוצפן ברמת מערכת ההפעלה. הנתונים מוגנים על ידי Secure Enclave במכשירים עם Face ID/Touch ID. התרחיש הנכון: refresh token מסוג JWT נשמר עם התכונה kSecAttrAccessibleWhenUnlockedThisDeviceOnly — הטוקן נגיש רק כשהמכשיר לא נעול ואינו מועבר בגיבוי iCloud.

// Сохранение в Keychain через Security framework let query: [String: Any] = [ kSecClass as String: kSecClassGenericPassword, kSecAttrService as String: "com.yourapp.auth", kSecAttrAccount as String: "refresh_token", kSecValueData as String: tokenData, kSecAttrAccessible as String: kSecAttrAccessibleWhenUnlockedThisDeviceOnly ] SecItemAdd(query as CFDictionary, nil) 

Android Keystore System — אחסון מפתחות קריפטוגרפי חומרתי (או תוכנתי במכשירים ישנים). לא ניתן לייצא מפתחות — פעולות הצפנה/פענוח מתבצעות בתוך Keystore. דפוס: צור מפתח ב-Keystore, הצפן איתו את ה-refresh token, ואחסן את הבלוב המוצפן ב-EncryptedSharedPreferences (Jetpack Security).

EncryptedSharedPreferences — עטיפה סביב SharedPreferences עם הצפנה דרך Keystore. מתווסף תוך 5 דקות ומבטל מחלק של פגיעויות הקיים במחצית מאפליקציות האנדרואיד.

פרמטר iOS Keychain Android Keystore
סוג אחסון Secure Enclave / חומרה TEE / חומרה (ARM TrustZone)
ייצוא מפתחות בלתי אפשרי בלתי אפשרי (מוגן על ידי Keystore)
גישה לנתונים מוצפנים רק כשהמכשיר לא נעול כשהמכשיר לא נעול + עם // Сохранение в Keychain через Security framework let query: [String: Any] = [ kSecClass as String: kSecClassGenericPassword, kSecAttrService as String: "com.yourapp.auth", kSecAttrAccount as String: "refresh_token", kSecValueData as String: tokenData, kSecAttrAccessible as String: kSecAttrAccessibleWhenUnlockedThisDeviceOnly ] SecItemAdd(query as CFDictionary, nil)
ניידות בגיבוי לא נייד (עם ThisDeviceOnly) לא נייד (מפתחות קשורים למכשיר)

אימות ביומטרי

iOS LocalAuthentication. kSecAccessControl — קריאה סטנדרטית ל-Face ID/Touch ID. משתלב עם Keychain דרך .biometryCurrentSet עם הדגל [email protected]: המפתח הופך לבלתי נגיש לאחר שינוי בנתונים הביומטריים.

תרחיש טיפוסי: בהתחברות ראשונה — התחברות עם סיסמה, refresh token → Keychain עם הגנה ביומטרית. בהפעלות עוקבות — ביומטריה פותחת גישה לטוקן, והטוקן מוחלף ב-access token חדש. שימוש בביומטריה עם Keychain מפחית את סיכון פגיעה בטוקן ב-99% בהשוואה לאחסון ב-UserDefaults.

Android BiometricPrompt. API אחיד לטביעת אצבע, פנים וקשתית. BiometricManager.canAuthenticate(BIOMETRIC_STRONG) בודק זמינות של ביומטריה Class 3 (נדרש לאפליקציות פיננסיות). BIOMETRIC_STRONG + מפתח Keystore עם setUserAuthenticationRequired(true) — המפתח בשימוש רק לאחר ביומטריה מוצלחת בסשן הנוכחי.

למה אימות OAuth 2.0 עם PKCE הוא הסטנדרט?

OAuth 2.0 Authorization Code Flow עם PKCE (Proof Key for Code Exchange) הוא הדפוס המחייב לאפליקציות מובייל. Implicit Flow הוצא רשמית משימוש ב-RFC 8252. PKCE מציג code_verifier (מחרוזת אקראית) ו-code_challenge (SHA-256 של ה-verifier). שרת ההרשאות מוודא התאמה בעת החלפת הקוד בטוקן. זה מגן מפני יירוט של קוד ההרשאה דרך custom URL scheme. השוואה: PKCE מגדיל את אבטחת OAuth ביותר מפי 1000 בהשוואה ל-Implicit Flow, כי ללא מפתח הוכחה הקוד יכול להיגנב לפני ההחלפה.

לפי OAuth 2.0 Security Best Current Practice, שימוש ב-PKCE הוא חובה עבור לקוחות ציבוריים, כולל אפליקציות מובייל.

iOS: ASWebAuthenticationSession — דפדפן מערכת ל-OAuth. Session cookies אינם נגישים לאפליקציה, אין סיכון פישינג דרך WebView מוטמע. אפל דוחה אפליקציות המשתמשות ב-WKWebView ל-OAuth (Guideline 5.1.1).

Android: AppAuth-Android — ספרייה סטנדרטית ל-OAuth/OIDC עם תמיכת PKCE. Custom Tabs (Chrome) במקום WebView — אותו עיקרון אבטחה.

שלבים ליישום אימות OAuth 2.0 עם PKCE ב-iOS

  1. צור code_verifier (מינימום 43 תווים מקבוצת התווים הבלתי שמורים).
  2. חשב code_challenge = SHA256(code_verifier), קודד ב-base64url.
  3. פתח ASWebAuthenticationSession עם כתובת ההרשאה כולל code_challenge ו-code_challenge_method=S256.
  4. לאחר הפנייה, השג קוד הרשאה.
  5. שלח בקשת POST לשרת עם code, code_verifier, client_id.
  6. השרת מוודא ש-code_challenge תואם ל-code_verifier ומנפיק טוקן.

Sign in with Apple ו-Google Sign-In

Sign in with Apple הוא חובה אם האפליקציה מציעה כל התחברות צד שלישי אחרת (Google, Facebook). אפל דורשת זאת כבר שנים, והפרה מובילה לדחייה לפי Guideline 4.8.

מוזרות: אפל יכולה להסתיר את האימייל האמיתי של המשתמש ולספק כתובת relay ([email protected]). השרת חייב לטפל בזה נכון — לא להשתמש באימייל כמזהה ראשי.

ASAuthorizationAppleIDProvider ב-iOS, SignInWithAppleButton ב-SwiftUI. JWT identity token מאפל מכיל sub — מזהה משתמש יציב, שאינו משתנה כשהאימייל מוסתר.

Google Sign-In. באנדרואיד — דרך Credential Manager API (החליף את ה-GoogleSignIn API הקודם). ב-iOS — GoogleSignIn SDK, פותח Safari או אפליקציית Google להרשאה.

2FA וסיסמאות חד-פעמיות

TOTP (Time-based One-Time Password, RFC 6238) — סטנדרט ל-2FA. סוד מקודד ב-base32 נוצר בשרת, המשתמש סורק QR ב-Google Authenticator או Authy. הוספת TOTP מפחיתה את סיכון השתלטות על חשבון ב-99.9% בהשוואה לסיסמה בלבד.

במובייל, Authenticator מובנה דרך Password AutoFill (iOS 15+) עובד מה-Keychain: קוד חד-פעמי ממולא אוטומטית ללא אפליקציה נפרדת. לשם כך, שדה ה-OTP חייב לכלול textContentType = .oneTimeCode.

SMS OTP — האפשרות הכי פחות מאובטחת (SIM-swapping), אבל הכי ידידותית להמרה. אם משתמשים — רק דרך SMS Retriever API באנדרואיד (קוד נקרא אוטומטית ללא הרשאות) ו-ASAuthorizationController עם oneTimeCode ב-iOS.

JWT: access ו-refresh tokens

דפוס: access token קצר חיים (15 דקות – שעה) + refresh token ארוך חיים (30–90 יום). access token בזיכרון (in-memory — לא ב-Keychain), refresh token ב-Keychain/EncryptedSharedPreferences. חידוש שקט: בקבלת 401 — בקשה אוטומטית ל-access token חדש עם ה-refresh token. אם ה-refresh token פג — התחברות כפויה.

סיבוב refresh tokens: כל החלפה של refresh token ב-access token מנפיקה refresh token חדש. הישן מבוטל. אם מנסים להשתמש ב-refresh token ישן — פגיעה, כל טוקני המשתמש מבוטלים.

סוג טוקן אורך חיים מיקום אחסון פעולה בעת פגיעה
Access token 15–60 דקות In-memory פוקע מהר, נזק מינימלי
Refresh token 30–90 יום Keychain/Keystore סיבוב + ביטול כל הטוקנים

מה כלול בעבודה

בהזמנת מודול אימות, אנו מספקים:

  • קוד מקור של מודול ההרשאות (Swift/Kotlin) עם שילוב השיטות הנבחרות.
  • תיעוד ארכיטקטורה ותוכנית טוקנים.
  • תהליך PKCE מוגדר ל-OAuth 2.0.
  • שילוב Sign in with Apple ו-Google Sign-In עם ה-client IDs שלך.
  • הגדרת ביומטריה עם דגלי הגנה נכונים.
  • הוראות פריסה ובדיקות (TestFlight, Firebase App Distribution).
  • רשימת בדיקה לסקירת App Store ו-Google Play.

לוח זמנים ועלות

יישום אימות בסיסי (אימייל + סיסמה + JWT) אורך 1 עד 2 שבועות. הוספת OAuth, ביומטריה ו-2FA מוסיפה עוד 1–3 שבועות. העלות הסופית מחושבת לאחר ביקורת הפרויקט שלך. קבל ייעוץ — נעריך את המורכבות ונציע את הסט האופטימלי.

טעויות נפוצות (ואיך להימנע מהן)

  • אחסון טוקנים ב-UserDefaults / SharedPreferences — קריא במכשירים עם root ללא root. פתרון: Keychain / Keystore.
  • חוסר certificate pinning באפליקציות רגישות — MITM דרך פרוקסי ארגוני. פתרון: הוסף pinning ב-URLSession או OkHttp.
  • אחסון סודות ב-Info.plist או BuildConfig — ניתן לפירוק בקלות. פתרון: השתמש ב-Keychain או בקונפיגורציית שרת.
  • OAuth דרך WKWebView / WebView במקום דפדפן מערכת — דחיית App Store + סיכון אבטחה. פתרון: ASWebAuthenticationSession / Custom Tabs.
  • kSecAttrAccessible שגוי — טוקן עם kSecAttrAccessibleAlways אינו דורש פתיחת מכשיר. פתרון: WhenUnlockedThisDeviceOnly.
רשימת בדיקה לאבטחת אימות
  • [ ] refresh token ב-Keychain/Keystore עם מחלקת הגנה
  • [ ] PKCE מופעל בתהליך OAuth
  • [ ] certificate pinning מוגדר (אם נדרש)
  • [ ] ביומטריה מקושרת לנתונים הנוכחיים
  • [ ] גישה לטוקן חסומה בעת שינוי ביומטריה
  • [ ] 2FA מופעל לפעולות קריטיות
  • [ ] סיבוב refresh token פעיל
  • [ ] תיעוד ניסיונות כושלים ללא שמירת נתונים רגישים
  • [ ] עמידה ב-App Store Guideline 4.8 ו-5.1.1

יישמנו אימות מאובטח ל-30+ פרויקטים במשך 5 שנים. אנו מבטיחים עמידה בדרישות הפלטפורמה ובשיטות המומלצות (OAuth 2.0 + PKCE, Keychain, Keystore). הזמינו פיתוח מודול אימות — ננתח פגיעויות ונציע פתרון במסגרת התקציב שלך. קבלו ייעוץ דרך הטופס באתר.