Интеграция корпоративного прокси-сервера в мобильное приложение

TRUETECH занимается разработкой, поддержкой и обслуживанием мобильных приложений iOS, Android, PWA. Имеем большой опыт и экспертизу для публикации мобильных приложений в популярные маркеты Google Play, App Store, Amazon, AppGallery и другие.
Разработка и поддержка любых видов мобильных приложений:
Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

Это лишь некоторые из типы мобильных приложений, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента.

Предлагаемые услуги
Показано 1 из 1 услугВсе 1735 услуг
Интеграция корпоративного прокси-сервера в мобильное приложение
Средняя
~2-3 рабочих дня
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    756
  • image_mobile-applications_xoomer_471_0.webp
    Разработка мобильного приложения для компании XOOMER
    624
  • image_mobile-applications_rhl_428_0.webp
    Разработка мобильного приложения для компании RHL
    1054
  • image_mobile-applications_zippy_411_0.webp
    Разработка мобильного приложения для компании ZIPPY
    947
  • image_mobile-applications_affhome_429_0.webp
    Разработка мобильного приложения для компании Affhome
    862
  • image_mobile-applications_flavors_409_0.webp
    Разработка мобильного приложения для компании FLAVORS
    445

Интеграция корпоративного прокси-сервера в мобильное приложение

Корпоративные мобильные приложения часто работают в среде с принудительным HTTPS-прокси — Zscaler, BlueCoat, Cisco Umbrella, squid. Пользователи подключаются через MDM-профиль (Mobile Device Management), который устанавливает системные настройки прокси. Приложение должно читать эти настройки и использовать их, а не игнорировать — иначе трафик будет блокирован или пойдёт в обход корпоративной политики безопасности.

Как мобильные ОС передают настройки прокси

Android: системные настройки прокси доступны через ConnectivityManager и свойства LinkProperties. Для HTTP/HTTPS — ProxyInfo с полем host и port. Для PAC (Proxy Auto-Config) — URL скрипта. OkHttp читает системный прокси автоматически при использовании OkHttpClient.Builder() без явного proxy() — если не переопределять, он использует ProxySelector.getDefault().

Проблема: ProxySelector работает для HTTP/HTTPS, но не для WebSocket (ws://, wss://). OkHttp при апгрейде HTTP соединения до WebSocket прокси использует (CONNECT-туннель), но Proxy-Authorization нужно передавать отдельно через Authenticator.

iOS: URLSessionConfiguration.default автоматически подхватывает системный прокси из настроек. Но URLSession с кастомным URLSessionConfiguration или ephemeral конфигурацией — нет. Для явного контроля: CFNetworkCopySystemProxySettings() (Core Foundation) или NEProxySettings через Network Extension API.

NTLM и Kerberos: корпоративная аутентификация прокси

Самый болезненный сценарий — прокси требует NTLM или Kerberos аутентификацию (Integrated Windows Authentication). Стандартные HTTP-библиотеки на iOS и Android не поддерживают NTLM из коробки.

На Android: OkHttp + библиотека ntlm-authentication или кастомный Authenticator с реализацией NTLM handshake. NTLM — трёхшаговый протокол: NEGOTIATE → CHALLENGE → AUTHENTICATE. Ответ на challenge вычисляется на основе хэшей NT-пароля, username и domain. Хранить credentials в AccountManager — не в SharedPreferences.

На iOS: URLSession поддерживает NTLM через URLAuthenticationChallenge с NSURLAuthenticationMethodNTLM. Нужно реализовать URLSessionTaskDelegate и возвращать URLCredential с username/password. Domain — опционально, но без него некоторые корпоративные прокси не принимают.

Kerberos (Negotiate) на мобиле — редкость, но встречается в крупных корпорациях с MS AD. На iOS: GSS-API (доступен через Heimdal). На Android — практически нет нормального решения без NDK и MIT Kerberos.

SSL Inspection: подмена сертификата прокси

Корпоративный HTTPS-прокси часто выступает Man-in-the-Middle — расшифровывает TLS-трафик, проверяет, перешифровывает собственным сертификатом. Устройство должно доверять корпоративному CA.

На устройствах с MDM корпоративный CA устанавливается автоматически через профиль. Для приложений, которые реализуют Certificate Pinning — SSL-inspection ломает его. Нужно либо отключить pinning для внутренних эндпоинтов, либо pinning на уровне MDM-сертификата (проверять не leaf-сертификат сервера, а цепочку к доверенному корпоративному CA).

На Android 7+ пользовательские CA-сертификаты не доверяются приложениям по умолчанию. Для корпоративных приложений, которые должны доверять MDM-установленному CA: network_security_config.xml с <certificates src="system"/> и явным указанием <certificates src="user"/> для development, только system для production MDM.

PAC-файлы: когда прокси не один

Proxy Auto-Config (PAC) — JavaScript-функция FindProxyForURL(url, host), которая возвращает прокси или DIRECT для каждого URL. Корпоративные сети используют PAC для маршрутизации: внутренние ресурсы — напрямую, интернет — через прокси.

На iOS: PAC обрабатывается системой, URLSession использует результат прозрачно. На Android: ProxyInfo.buildPacProxy(Uri) — MDM устанавливает, но программная обработка PAC-скриптов в приложении не тривиальна. Для кастомных HTTP-клиентов (OkHttp) нужно парсить и выполнять PAC самостоятельно — библиотека pac4j-proxy или JavaScript через JavaScriptEngine.

Процесс интеграции

Начинаем с аудита: какой прокси использует клиент, MDM-решение (Intune, Jamf, MobileIron), метод аутентификации, нужен ли SSL-inspection. От этого зависит объём работ.

Базовая интеграция (HTTP/HTTPS прокси без аутентификации) — 1 неделя. NTLM + PAC + SSL inspection bypass — 3–5 недель включая тестирование в корпоративной среде.