Рабочий процесс API
Следует стандартной последовательности API Microsoft Graph для загрузки приложений Win32:
- (Создать Win32LobApp)
Код: Выделить всё
POST /deviceAppManagement/mobileApps - (Создать версию контента)
Код: Выделить всё
POST /mobileApps/{id}/contentVersions - (Создать запись файла)
Код: Выделить всё
POST /contentVersions/{version}/files - Подождите URI хранилища Azure (опрос до тех пор, пока azureStorageUriRequestSuccess)
- в URI хранилища Azure (загрузить файл .intunewin)
Код: Выделить всё
PUT - (файл фиксации) (возвращает HTTP 200)
Код: Выделить всё
POST /files/{fileId}/commit
- Шаги 1–5: все успешно с правильными ответами HTTP 201/200
- Шаг 6: API фиксации возвращает HTTP 200 OK
- Окончательный результат: uploadState: commitFileFailed
Полезная нагрузка FileEncryptionInfo Структура
Код: Выделить всё
{
"fileEncryptionInfo": {
"encryptionKey": "base64-encoded-32-bytes",
"macKey": "base64-encoded-32-bytes",
"initializationVector": "base64-encoded-16-bytes",
"mac": "base64-encoded-32-bytes",
"profileIdentifier": "ProfileVersion1",
"fileDigest": "base64-encoded-32-bytes",
"fileDigestAlgorithm": "SHA256",
"@odata.type": "microsoft.graph.fileEncryptionInfo"
},
"size": 3064190,
"name": "example-installer.intunewin"
}
Проверка выполнена
Проверка полей: все поля base64 декодируются до необходимой длины в байтах Microsoft:- : 16 байт
Код: Выделить всё
initializationVector - : 32 байта
Код: Выделить всё
mac - : 32 байта
Код: Выделить всё
macKey - : 32 байта
Код: Выделить всё
encryptionKey - : 32 байта.
Код: Выделить всё
fileDigest
Метаданные шифрования.: извлекаются непосредственно из .intunewin Detection.xml.
Хранилище Azure: правильные заголовки, проверка MD5, успешная загрузка с соответствующим ETag
Соответствие API: точное соответствие документации Microsoft Graph API
Сведения о среде
- Версия API: Microsoft Graph v1.0
- Аутентификация: регистрация приложения с помощью DeviceManagementApps.ReadWrite.All
- Метод загрузки: одиночный PUT (файлы < 4 МБ в соответствии с рекомендациями Microsoft)
- Формат файла: пакеты .intunewin, созданные с помощью Microsoft официальный инструмент
Существуют ли дополнительные заголовки или поля, необходимые для запроса на фиксацию, которые не документированы?
Что я пробовал
- Все проверено Поля шифрования соответствуют требованиям Microsoft к двоичной длине.
- Подтверждено, что структура файла .intunewin соответствует формату Microsoft.
- Протестировано с различными размерами и типами файлов.
- Добавлены задержки для внутренней обработки.
- Проверена целостность загрузки в хранилище Azure с помощью контрольных сумм MD5.
Спасибо за любую помощь!
Подробнее здесь: https://stackoverflow.com/questions/797 ... after-succ