Корпоративні застосунки на iOS та Android потребують політик, які не можна реалізувати через стандартні обмеження ОС. Якщо в організації вже розгорнуті Azure AD, Office 365 і Teams, Microsoft Intune — це де-факто стандарт EMM. Ми спеціалізуємося на інтеграції Intune SDK і MSAL у мобільні застосунки, забезпечуючи Conditional Access на рівні Azure AD та захист даних через MAM. Одного разу нам надійшов проєкт для великого банку: потрібно було за два тижні впровадити Intune MAM у вже існуючий React Native застосунок. Впоралися за 12 робочих днів — і тепер розповімо, як уникнути типових помилок.
Intune — де-факто стандарт EMM для Microsoft-орієнтованих організацій. Якщо інфраструктура на Azure AD, Office 365, Teams — Intune логічний вибір: єдина консоль, Conditional Access на рівні Azure AD, нативна інтеграція з Defender for Endpoint. Для мобільного застосунку інтеграція означає підтримку MAM SDK або App Wrapping + коректну роботу з MSAL для отримання токенів з урахуванням compliance-статусу пристрою.
Реєстрація застосунку в Azure AD
Перший крок — App Registration в Azure Portal. Без коректної реєстрації Intune не зможе застосовувати політики до застосунку.
Мінімальний набір налаштувань:
- Створити App Registration в Azure AD.
- Додати API Permissions:
DeviceManagementApps.ReadWrite.All,DeviceManagementConfiguration.ReadWrite.All(якщо застосунок читає політики напряму). - Додати
IntuneMAMв Redirect URI:msauth.{bundle-id}://auth. - Увімкнути
Public client flowsдля мобільних клієнтів. - В Intune Portal (portal.azure.com → Intune → Client Apps) додати застосунок в App Protection Policy та призначити на групи.
Як працює Conditional Access з MSAL?
MSAL (Microsoft Authentication Library) — заміна ADAL, обов'язковий компонент для сучасної Intune-інтеграції. Conditional Access працює автоматично: якщо пристрій non-compliant (застаріла ОС, jailbreak за оцінкою Intune), MSAL отримує MSALError з кодом conditionalAccessClaim — застосунок має повторно запитати токен з додатковими claims. MSAL v1.1+ обробляє CA challenge автоматично за умови коректної конфігурації.
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: ключові точки інтеграції
Після додавання IntuneMAMSwift (iOS) або intune-mam-sdk (Android) — декілька обов'язкових точок: Реєстрація акаунта після авторизації:
// Після успішного MSAL login IntuneMAMEnrollmentManager.instance().loginAndEnrollAccount(userPrincipalName) // SDK реєструє UPN в MAM-сервісі та запитує політики Обробка enrollment callback:
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() } Що дає Managed App Configuration?
В Intune Portal для кожного застосунку можна задати Configuration Policy — словник ключів/значень, який застосунок читає через UserDefaults.standard.dictionary(forKey: "com.apple.configuration.managed") (iOS) або RestrictionsManager (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 може отримувати від нього сигнали про mobile threat defense: джейлбрейк, шкідливі мережі, вразливі застосунки. Conditional Access використовує ці сигнали для блокування токенів. Для цього в застосунок вбудовується Defender SDK — він працює фоном, надсилає threat events в MDE, Intune отримує compliance status. З точки зору застосунку — це окрема залежність, але без змін в основній бізнес-логіці.
Порівняння підходів: MAM SDK проти App Wrapping
| Параметр | MAM SDK | App Wrapping |
|---|---|---|
| Зміна коду | Потрібна | Не потрібна |
| Гнучкість управління | Висока (фінальний контроль) | Середня (обмежені політики) |
| Швидкість впровадження | 3–5 тижнів | 1 тиждень |
| Платформи | iOS, Android, React Native, Flutter | Тільки iOS та Android |
MAM SDK дає повний контроль над корпоративними даними без необхідності використовувати App Wrapping — це в 3 рази швидше з точки зору налаштування політик і не потребує зміни коду сторонніх модулів.
Що входить в нашу роботу
Ми забезпечуємо повний цикл інтеграції:
- Аудит поточного застосунку та конфігурації Azure AD.
- Реєстрація застосунку в Azure AD та налаштування необхідних дозволів.
- Інтеграція MSAL з підтримкою Conditional Access.
- Вбудовування Intune MAM SDK (iOS/Android/React Native/Flutter).
- Реалізація enrollment lifecycle та selective wipe.
- Налаштування Managed App Configuration та App Protection Policy.
- Тестування всіх сценаріїв: Conditional Access, захист перенесення файлів, блокування на non-compliant пристроях.
- Документація для IT-відділу та навчання адміністраторів.
- Підтримка на етапі релізу в App Store та Google Play.
Зв'яжіться з нами для оцінки вашого проєкту — ми підготуємо комерційну пропозицію протягом дня. Замовте інтеграцію під ключ — терміни від 3 до 8 тижнів залежно від складності.
Наш досвід — 5 років в enterprise мобільній розробці, понад 20 успішних проєктів з Intune, включаючи банки, ритейл та логістику. Гарантуємо чисту інтеграцію без конфліктів з existing-кодом та повне проходження App Store Review.
Етапи інтеграції
Azure AD App Registration → налаштування MSAL → додавання Intune MAM SDK → реалізація enrollment lifecycle → Managed App Configuration → App Protection Policy в Intune Portal → тестування Conditional Access → тестування selective wipe → rollout.
Терміни: інтеграція MSAL + MAM SDK в готовий застосунок — 3–5 тижнів. З налаштуванням Intune Portal, політик та тестуванням — 6–8 тижнів. Вартість розраховується індивідуально.
Детальніше про Intune SDK читайте в офіційній документації Microsoft, а про MSAL — в MSAL для iOS.







