יישומי iOS ו-Android ארגוניים דורשים מדיניות שלא ניתן ליישם באמצעות הגבלות מערכת הפעלה סטנדרטיות. אם הארגון שלך כבר משתמש ב-Azure AD, Office 365 ו-Teams, Microsoft Intune הוא תקן ה-EMM דה פקטו. אנו מתמחים בשילוב Intune SDK ו-MSQL ביישומים ניידים, המאפשר גישה מותנית ברמת Azure AD והגנה על נתונים באמצעות MAM. פעם לקחנו על עצמנו פרויקט עבור בנק גדול: היינו צריכים לשלב Intune MAM ביישום React Native קיים תוך שבועיים. סיימנו תוך 12 ימי עבודה — ועכשיו נשתף כיצד להימנע ממלכודות נפוצות.
Intune הוא תקן ה-EMM דה פקטו עבור ארגונים המכוונים למיקרוסופט. אם התשתית שלך בנויה על Azure AD, Office 365, Teams — Intune הוא הבחירה ההגיונית: קונסולה אחת, גישה מותנית ברמת Azure AD, אינטגרציה טבעית עם Defender for Endpoint. עבור יישום נייד, אינטגרציה משמעותה תמיכה ב-MAM SDK או App Wrapping, וכן רכישת אסימוני MSAL נכונה שמכבדת את מצב התאימות של המכשיר.
רישום יישום ב-Azure AD
השלב הראשון הוא רישום יישום בפורטל Azure. ללא רישום נכון, Intune לא יכול להחיל מדיניות על היישום.
תצורה מינימלית:
- צור רישום יישום ב-Azure AD.
- הוסף הרשאות API:
DeviceManagementApps.ReadWrite.All,DeviceManagementConfiguration.ReadWrite.All(אם היישום קורא מדיניות ישירות). - הוסף
IntuneMAMל-Redirect URI:msauth.{bundle-id}://auth. - הפעל
Public client flowsעבור לקוחות ניידים. - בפורטל Intune (portal.azure.com → Intune → Client Apps), הוסף את היישום למדיניות הגנת יישומים והקצה אותו לקבוצות.
כיצד גישה מותנית עובדת עם MSAL
MSAL (Microsoft Authentication Library) מחליף את ADAL והוא חובה לאינטגרציה מודרנית עם Intune. גישה מותנית עובדת אוטומטית: אם המכשיר אינו תואם (מערכת הפעלה מיושנת, jailbreak שזוהה על ידי Intune), MSAL מחזיר MSALError עם קוד conditionalAccessClaim — היישום חייב לבקש אסימון שוב עם תביעות נוספות. MSAL v1.1+ מטפל באתגר הגישה המותנית אוטומטית עם תצורה נכונה.
iOS (Swift):
import MSAL
let config = MSALPublicClientApplicationConfig(
clientId: "YOUR_CLIENT_ID",
redirectUri: "msauth.com.company.app://auth",
authority: try MSALAADAuthority(url: URL(string: "https://login.microsoftonline.com/YOUR_TENANT_ID")!)
)
config.bypassRedirectURIValidation = false
let application = try MSALPublicClientApplication(configuration: config)
let webParameters = MSALWebviewParameters(authPresentationViewController: viewController)
let interactiveParameters = MSALInteractiveTokenParameters(
scopes: ["https://graph.microsoft.com/.default"],
webviewParameters: webParameters
)
application.acquireToken(with: interactiveParameters) { result, error in
if let result = result {
// result.accessToken — использовать для API-запросов
// result.account — сохранить для silent token refresh
}
} Intune MAM SDK: נקודות אינטגרציה מרכזיות
לאחר הוספת import MSAL let config = MSALPublicClientApplicationConfig( clientId: "YOUR_CLIENT_ID", redirectUri: "msauth.com.company.app://auth", authority: try MSALAADAuthority(url: URL(string: "https://login.microsoftonline.com/YOUR_TENANT_ID")!) ) config.bypassRedirectURIValidation = false let application = try MSALPublicClientApplication(configuration: config) let webParameters = MSALWebviewParameters(authPresentationViewController: viewController) let interactiveParameters = MSALInteractiveTokenParameters( scopes: ["https://graph.microsoft.com/.default"], webviewParameters: webParameters ) application.acquireToken(with: interactiveParameters) { result, error in if let result = result { // result.accessToken — использовать для API-запросов // result.account — сохранить для silent token refresh } } (iOS) או IntuneMAMSwift (Android), קיימים מספר שלבים חובה: רישום חשבון לאחר אימות:
// После успешного MSAL login
IntuneMAMEnrollmentManager.instance().loginAndEnrollAccount(userPrincipalName)
// SDK регистрирует UPN в MAM-сервисе и запрашивает политикиטיפול בקריאה חוזרת של הרשמה:
class MAMEnrollmentDelegate: NSObject, IntuneMAMEnrollmentDelegate {
func enrollmentRequestWithStatus(_ status: IntuneMAMEnrollmentStatus) {
switch status.statusCode {
case .enrollmentSuccess:
// Политики применены, разрешаем доступ к корпоративным функциям
case .enrollmentFailed:
// Показываем ошибку, ограничиваем доступ
case .unenrollmentSuccess:
// Selective wipe завершён
}
}
}בדיקת מדיניות לפני פעולה:
let policyManager = IntuneMAMPolicyManager.instance()
if policyManager.policy(forIdentity: userUPN).isSaveToPersonalAllowed(for: .camera) {
// Разрешить сохранение в Camera Roll
} else {
showRestrictedActionAlert()
} מה מספקת תצורת יישום מנוהלת
בפורטל Intune, ניתן להגדיר מדיניות תצורה עבור כל יישום — מילון של זוגות מפתח/ערך שהיישום קורא דרך intune-mam-sdk (iOS) או // После успешного MSAL login IntuneMAMEnrollmentManager.instance().loginAndEnrollAccount(userPrincipalName) // SDK регистрирует UPN в MAM-сервисе и запрашивает политики (Android). זה מאפשר למנהלי IT לשנות פרמטרים (לדוגמה, כתובת URL של השרת או זמן פסק זמן של סשן) ללא עדכון היישום.
פרמטרים טיפוסיים עבור יישום ארגוני:
<!-- App Configuration Policy в Intune Portal (XML формат) -->
<dict>
<key>BackendURL</key>
<string>https://api.corp.example.com</string>
<key>TenantID</key>
<string>corp-tenant-001</string>
<key>EnableVerboseLogging</key>
<false/>
<key>SessionTimeoutMinutes</key>
<integer>30</integer>
</dict> אינטגרציה עם Microsoft Defender for Endpoint
אם הארגון שלך משתמש ב-Defender for Endpoint (MDE), Intune יכול לקבל ממנו אותות הגנה מפני איומים ניידים: jailbreak, רשתות זדוניות, יישומים פגיעים. גישה מותנית משתמשת באותות אלה כדי לחסום אסימונים. כדי להפעיל זאת, Defender SDK מוטמע ביישום — הוא פועל ברקע, שולח אירועי איומים ל-MDE, ו-Intune מקבל את מצב התאימות. מנקודת מבט של היישום, מדובר בתלות נפרדת אך אין צורך בשינויים בלוגיקה העסקית המרכזית.
השוואה: MAM SDK לעומת App Wrapping
| פרמטר | MAM SDK | App Wrapping |
|---|---|---|
| שינויי קוד | נדרשים | לא נדרשים |
| גמישות ניהול | גבוהה (שליטה מדויקת) | בינונית (מדיניות מוגבלת) |
| מהירות יישום | 3–5 שבועות | שבוע אחד |
| פלטפורמות | iOS, Android, React Native, Flutter | iOS ו-Android בלבד |
MAM SDK נותן לך שליטה מלאה על נתוני הארגון ללא צורך ב-App Wrapping — הוא מהיר פי 3 מבחינת הגדרת מדיניות ואינו דורש שינוי קוד של מודולים של צד שלישי.
מה כלול בעבודה שלנו
אנו מספקים מחזור אינטגרציה מלא:
- ביקורת של היישום הנוכחי ותצורת Azure AD.
- רישום יישום ב-Azure AD והגדרת הרשאות נדרשות.
- אינטגרציה של MSAL עם תמיכה בגישה מותנית.
- הטמעת Intune MAM SDK (iOS/Android/React Native/Flutter).
- יישום מחזור חיים של הרשמה ומחיקה סלקטיבית.
- הגדרת תצורת יישום מנוהלת ומדיניות הגנת יישומים.
- בדיקת כל התרחישים: גישה מותנית, הגנה על העברת קבצים, חסימה במכשירים לא תואמים.
- תיעוד עבור IT והדרכת מנהלים.
- תמיכה עד לשחרור ב-App Store ו-Google Play.
צור קשר להערכת פרויקט — נספק הצעה מסחרית תוך יום. הזמינו אינטגרציה סוהר — לוחות זמנים מ-3 עד 8 שבועות תלוי במורכבות.
הניסיון שלנו כולל 5 שנים בפיתוח נייד ארגוני, למעלה מ-20 פרויקטים מוצלחים של Intune בבנקאות, קמעונאות ולוגיסטיקה. אנו מבטיחים אינטגרציה נקייה ללא התנגשויות עם קוד קיים ועמידה מלאה בדרישות App Store Review.
שלבי אינטגרציה
רישום יישום ב-Azure AD → הגדרת MSAL → הוספת Intune MAM SDK → יישום מחזור חיים של הרשמה → תצורת יישום מנוהלת → מדיניות הגנת יישומים בפורטל Intune → בדיקת גישה מותנית → בדיקת מחיקה סלקטיבית → פריסה.
לוחות זמנים: אינטגרציה של MSAL + MAM SDK ביישום קיים — 3–5 שבועות. עם פורטל Intune, מדיניות ובדיקות — 6–8 שבועות. התמחור נקבע באופן אישי.
לפרטים נוספים על Intune SDK, ראה תיעוד רשמי של Microsoft, ולגבי MSAL, ראה MSAL עבור iOS.







