Я пытаюсь заставить мою систему MDM для Windows Phone 8 работать. В настоящее время устройство регистрируется и выполняет первоначальный запрос SyncML. Он также отвечает на запросы в интуитивном ответе сервера, но я предполагаю, что в нем что-то не нравится. Причина в том, что он использует интервалы повтора для дополнительных подключений к серверу, а затем после этого больше не подключается.Протокол SyncML в WP8-клиент перестает отвечать
Когда я запускаю соединение вручную, он работает, но автоматические соединения не выполняются. Странно то, что внутренне счетчик SessionID SyncML увеличивается с определенными интервалами, но устройство даже не пытается подключить сервер.
Вот мой протокол SyncML
начинает Клиент:
<SyncML xmlns="SYNCML:SYNCML1.2">
<SyncHdr>
<VerDTD>1.2</VerDTD>
<VerProto>DM/1.2</VerProto>
<SessionID>E</SessionID>
<MsgID>1</MsgID>
<Target>
<LocURI>https://ssl.../enrollment/omadmservice.php</LocURI>
</Target>
<Source>
<LocURI>IMEI:35...64</LocURI>
<LocName>riho</LocName>
</Source>
<Cred>
<Meta>
<Format xmlns="syncml:metinf">b64</Format>
<Type xmlns="syncml:metinf">syncml:auth-md5</Type>
</Meta>
<Data>SoFh6khg4awLYXn2PQOOwQ==</Data>
</Cred>
</SyncHdr>
<SyncBody>
<Alert>
<CmdID>2</CmdID>
<Data>1201</Data>
</Alert>
<Replace>
<CmdID>3</CmdID>
<Item>
<Source>
<LocURI>./DevInfo/DevId</LocURI>
</Source>
<Data>IMEI:35...64</Data>
</Item>
...
</Replace>
<Final/>
</SyncBody>
</SyncML>
Сервер отвечает:
<SyncML xmlns="SYNCML:SYNCML1.2">
<SyncHdr>
<VerDTD>1.2</VerDTD>
<VerProto>DM/1.2</VerProto>
<SessionID>E</SessionID>
<MsgID>1</MsgID>
<Target>
<LocURI>IMEI:35...64</LocURI>
</Target>
<Source>
<LocURI>https://ssl.../enrollment/omadmservice.php</LocURI>
<LocName>MDMServer</LocName>
</Source>
<Cred>
<Meta>
<Format xmlns="syncml:metinf">b64</Format>
<Type xmlns="syncml:metinf">syncml:auth-md5</Type>
</Meta>
<Data>ryJ+boSmdCoO8BzxXcYSxg==</Data>
</Cred>
</SyncHdr>
<SyncBody>
<Status>
<CmdID>1</CmdID>
<MsgRef>1</MsgRef>
<CmdRef>0</CmdRef>
<Cmd>SyncHdr</Cmd>
<Data>212</Data>
</Status>
<Status>
<MsgRef>1</MsgRef>
<CmdRef>2</CmdRef>
<CmdID>2</CmdID>
<Cmd>Alert</Cmd>
<Data>200</Data>
</Status>
<Status>
<CmdID>3</CmdID>
<MsgRef>1</MsgRef>
<CmdRef>3</CmdRef>
<Cmd>Replace</Cmd>
<Data>200</Data>
</Status>
<Get>
<CmdID>4</CmdID>
<Item>
<Target>
<LocURI>./Vendor/MSFT/Registry/HKLM/Software/Microsoft/DeviceEncryption/Enabled</LocURI>
</Target>
</Item>
</Get>
</SyncBody>
</SyncML>
Клиент посылает свой ответ:
<SyncML xmlns="SYNCML:SYNCML1.2">
<SyncHdr>
<VerDTD>1.2</VerDTD>
<VerProto>DM/1.2</VerProto>
<SessionID>E</SessionID>
<MsgID>2</MsgID>
<Target>
<LocURI>https://ssl.../enrollment/omadmservice.php</LocURI>
</Target>
<Source>
<LocURI>IMEI:35...64</LocURI>
</Source>
</SyncHdr>
<SyncBody>
<Status>
<CmdID>1</CmdID>
<MsgRef>1</MsgRef>
<CmdRef>0</CmdRef>
<Cmd>SyncHdr</Cmd>
<Chal>
<Meta>
<Format xmlns="syncml:metinf">b64</Format>
<Type xmlns="syncml:metinf">syncml:auth-md5</Type>
<NextNonce xmlns="syncml:metinf">kjjz6FyCYuYm9VUsSaHfKmj98GGfh9yeLvv8hlMNZak=</NextNonce>
</Meta>
</Chal>
<Data>212</Data>
</Status>
<Status>
<CmdID>2</CmdID>
<MsgRef>1</MsgRef>
<CmdRef>4</CmdRef>
<Cmd>Get</Cmd>
<Data>200</Data>
</Status>
<Results>
<CmdID>3</CmdID>
<MsgRef>1</MsgRef>
<CmdRef>4</CmdRef>
<Item>
<Source>
<LocURI>./Vendor/MSFT/Registry/HKLM/Software/Microsoft/DeviceEncryption/Enabled</LocURI>
</Source>
<Meta>
<Format xmlns="syncml:metinf">int</Format>
</Meta>
<Data>1</Data>
</Item>
</Results>
<Final/>
</SyncBody>
</SyncML>
И сервер сохраняет DAT a и сбрасывает соединение.
Может ли кто-нибудь найти ошибку в моей реализации? Что еще ожидает клиент от сервера?
Как вы получили ответ от команды get? Каждая команда Exec, Add, Replace работает для меня, кроме Get Command. Устройство не сообщило результат серверу. –
Попробуйте отправить еще несколько команд вместе с Get - возможно, снова отправить Chal или Cred. – Riho
Он все еще не сообщает о каком-либо результате после ввода в Cred и Chal. В любом случае, в соответствии с документацией WP8 MDM, Chal, кажется, отправляется, если даны неадекватные учетные данные. Может быть, это причина, по которой ваш клиент перестает отвечать? Chal Задает запрос проверки подлинности. Сервер или клиент могут отправить вызов другому, если в исходном сообщении запроса не были указаны учетные данные или неадекватные учетные данные. –