Интеграция VMware Workspace ONE для управления мобильным приложением
Workspace ONE (бывший AirWatch) — EMM-платформа VMware, которая объединяет MDM, MAM, Identity и Zero Trust Access в одном продукте. Отличается от Intune более глубокими возможностями MDM для Android-устройств и исторически сильной поддержкой Rugged-девайсов (Zebra, Honeywell). Для мобильного приложения интеграция строится на Workspace ONE SDK — аналоге Intune MAM SDK, но со своими API и lifecycle.
Workspace ONE SDK: архитектура
SDK состоит из нескольких компонентов:
- AWSDKCore — базовый SDK, обработка политик, аутентификация через Workspace ONE Intelligent Hub.
- AWContentLocker — защищённое файловое хранилище.
- AWNetworkKit — managed networking через Workspace ONE Tunnel (per-app VPN).
- AWDataLoss — перехват clipboard, file sharing, screenshot.
На iOS SDK устанавливается через CocoaPods или SPM:
pod 'AWSDK', '~> 25.0'
На Android — через Maven:
implementation 'com.vmware.ws1.android:airwatchsdk:25.0.0'
Инициализация и enrollment на iOS
Workspace ONE SDK требует наличия Workspace ONE Intelligent Hub на устройстве. Hub выступает брокером между SDK вашего приложения и WS1 сервером. Без Hub SDK не получит политики.
import AWSDK
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(_ application: UIApplication,
didFinishLaunchingWithOptions options: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
AWController.clientInstance().start { error in
if let error = error {
// enrollment failed
print("WS1 SDK error: \(error.localizedDescription)")
} else {
// Политики применены, приложение работает в managed-режиме
self.applyManagedConfiguration()
}
}
return true
}
private func applyManagedConfiguration() {
let profile = AWController.clientInstance().sdkProfile()
let serverURL = profile?.customPayloadProfile?.payload?["BackendURL"] as? String
AppConfig.shared.backendURL = serverURL ?? AppConfig.defaultBackendURL
}
}
AWController.clientInstance().start — асинхронный вызов. Приложение показывает splash screen пока SDK инициализируется и получает политики. Если устройство не зарегистрировано в WS1, Hub запускает enrollment flow.
Custom Payload: передача конфигурации в приложение
Workspace ONE передаёт конфигурацию через Custom Payload в SDK Profile. Это аналог Managed App Configuration в Apple MDM, но управляется через WS1 Console:
let sdkProfile = AWController.clientInstance().sdkProfile()
guard let customPayload = sdkProfile?.customPayloadProfile?.payload else { return }
let backendURL = customPayload["BackendURL"] as? String
let featureFlags = customPayload["FeatureFlags"] as? [String: Bool]
let sessionTimeout = customPayload["SessionTimeoutMinutes"] as? Int ?? 30
В WS1 Console Custom Payload задаётся в XML или JSON в разделе Apps → SDK Profiles → Custom Settings. Изменение в консоли применяется на устройство при следующем checkin (обычно каждые 4 часа или при foreground-переходе приложения).
Per-app Tunnel: управляемый сетевой трафик
Workspace ONE Tunnel — это per-app VPN без необходимости регистрировать MDM-профиль на устройство (для MAM-only сценариев). Трафик конкретного приложения туннелируется через корпоративный шлюз.
Для включения Tunnel в приложении — добавить AWNetworkKit и настроить URL-сессии:
import AWNetwork
// Заменяем стандартный URLSession на Tunnel-aware
let tunnelConfig = URLSessionConfiguration.default
AWNetworkKit.shared.configureTunnel(for: tunnelConfig)
let session = URLSession(configuration: tunnelConfig)
Tunnel работает прозрачно — приложение делает обычные URLSession-запросы, SDK перенаправляет их через VPN. Не нужно менять URLRequest или добавлять заголовки.
Сравнение с Microsoft Intune
| Workspace ONE | Microsoft Intune | |
|---|---|---|
| Android MDM | Отличная поддержка Rugged | Стандартная Android Enterprise |
| iOS MDM | Полный набор MDM | Полный набор MDM |
| MAM без MDM | Workspace ONE SDK | Intune MAM SDK |
| Identity | VMware Identity Manager | Azure AD / Entra |
| Лучше подходит | Mixed OS fleet, Rugged devices | Microsoft 365 организации |
| On-premise | Workspace ONE On-Premises | Только облако |
Для организаций с парком Android-устройств Zebra или Honeywell — Workspace ONE предпочтительнее из-за нативной поддержки OEMConfig и Staging-профилей для Rugged.
Обработка политик DLP
let dlpPolicy = AWController.clientInstance().sdkProfile()?.dataLossPreventionProfile
if dlpPolicy?.copyPasteOut == false {
// Запрещаем копирование в другие приложения
UIPasteboard.general.items = [] // очищаем при каждом foreground
}
if dlpPolicy?.enableScreenCapture == false {
// Показываем пустой экран при capture
NotificationCenter.default.addObserver(
forName: UIScreen.capturedDidChangeNotification,
object: nil,
queue: .main
) { _ in
self.sensitiveContentView.alpha = UIScreen.main.isCaptured ? 0 : 1
}
}
Этапы интеграции
Настройка WS1 UEM Console → создание SDK Profile с Custom Payload → добавление AWSDK в приложение → реализация enrollment lifecycle → Custom Payload mapping → настройка Tunnel (если нужен) → DLP политики → тестирование на managed-устройствах → rollout.
Сроки: базовая интеграция SDK с Custom Payload — 3–4 недели. Полный проект с Tunnel, DLP, политиками и тестированием — 6–10 недель. Стоимость рассчитывается индивидуально.







