Расширенная конфигурация ЕдиногоАгента для iOS
Процесс автоинструментирования настраивает ваши приложения iOS для мониторинга с помощью ЕдиныйАгент. Этот автоматизированный способ добавления ЕдиныйАгент в приложение без необходимости вручную изменять его исходный код. Автоинструментированное приложение эквивалентно приложению, которое было вручную инструментировано для сбора базовых данных. Такой уровень инструментирования предоставляет видимость реального пользовательского опыта, обеспечиваемого вашим приложением. Он также позволяет обнаруживать сбои и отслеживать производительность, связанную с запуском приложений и временем ответа на веб-запросы.
1. Настройка Public Key Hash Pinning (PKH) pinning с помощью Ключ-АСТРОМ
Вы можете использовать функцию Public Key Hash Pinning (PKH) для аутентификации.
❗ Важно
Public key pinning сопряжено с риском и может вызвать проблемы, если его настроить неправильно. Если вы допустили ошибку, ваше приложение может закрепить набор ключей, которые подтверждают аутентификацию сегодня, но перестанут работать в какой-то момент в будущем. В таком случае ваше приложение больше не сможет подключаться к серверу и, скорее всего, перестанет работать, пока не будет обновлено новым набором ключей. |
- Перейдите в дистрибутив ЕдиныйАгент, откройте папку Certificate Pinning и запустите скрипт getPKHashFromCertificate.py для генерации хэшей из ваших сертификатов.
python getPKHashFromCertificate.py <path to your cert>.<der|pem> --type <DER | PEM>
Вывод должен выглядеть так:
CERTIFICATE INFO
----------------
subject= *****
issuer= *****
SHA1 Fingerprint= ******
---------------------- DTXDomainPins item ----------------------
DTXPKHash: SomePublicKeyHash=
DTXPKHashAlgoritm: DTXAlgorithmRsa2048
- В вашем файле Info.plist используйте вывод скрипта в качестве массива в ключе DTXPublicKeyPins.
<key>DTXPublicKeyPins</key>
<array>
<dict>
<key>DTXPKHash</key>
<string>SomePublicKeyHash=</string>
<key>DTXPKHashAlgoritm</key>
<string>DTXAlgorithmRsa2048</string>
</dict>
<dict>...script output 2...</dict>
<dict>...script output 3...</dict>
</array>
❗ Важно
Если у вас нет дистрибутива ЕдиныйАгент, вы можете скачать его в настройках мобильного приложения.
|
2. Используйте настраиваемые заголовки HTTP
Если HTTP-запросы ЕдиныйАгент не соответствуют требованиям безопасности вашей серверной инфраструктуры, вы можете изменить заголовки HTTP ЕдиныйАгент с помощью Ключ-АСТРОМ.setBeaconHeaders([String : String]?). Эта функция позволяет добавлять заголовок Authorization в HTTP-запросы и немедленно переподключаться к Cluster ActiveGate, когда срок действия токена истек. Чтобы удалить старые заголовки, вызовите Ключ-АСТРОМ.setBeaconHeaders(nil).
Ключ-АСТРОМ.setBeaconHeaders(["Cookie" : "n1=v1; n2=v2", "MyHeader" : "MyHeader", "Authorization" : "API-Token aa11bb22cc33dd44ee55"]) //set headers onto beacon
let headers: Dictionary<String, String>? = Ключ-АСТРОМ.beaconHeaders() //request the headers that have been set
//listen for communication problems (for example, if beacon header contains a token that can expire required to pass a firewall)
NotificationCenter.default.addObserver(forName: NSNotification.Name(rawValue: Ключ-АСТРОМ.getCommunicationProblemNotificationName()), object: nil, queue: nil) { _ in
//for example, update beacon header with new token
}