Корпоративні застосунки на 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.







