Примеры профиля конфигурации
Это приложение включает два раздела. Первое, Пример кода Полезной нагрузки Профиля Конфигурации, показывает, как создать основную полезную нагрузку профиля программно. Вторые, Демонстрационные Ответы, показывает примеры списков свойств, которыми можно было бы обменяться во время типичного сеанса регистрации SCEP.
Пример кода полезной нагрузки профиля конфигурации
Этот пример полезной нагрузки профиля конфигурации, показанной в Перечислении a-1, содержит webclip, указывающий на пользователя на интранет-сайт и обеспечивающий полезную нагрузку, чтобы позволить телефону регистрировать свидетельство аутентификации клиента SSL, которое потребуется, чтобы получать доступ к защищенным активам.
Перечисление a-1 client_cert_configuration_payload функция
def client_cert_configuration_payload(request) |
webclip_payload = general_payload() |
webclip_payload['PayloadIdentifier'] = "com.acme.webclip.intranet" |
webclip_payload['PayloadType'] = "com.apple.webClip.managed" # do not modify |
# strings that show up in UI, customisable |
webclip_payload['PayloadDisplayName'] = "ACME Inc." |
webclip_payload['PayloadDescription'] = "Creates a link to the ACME intranet on the home screen" |
# allow user to remove webclip |
webclip_payload['IsRemovable'] = true |
# the link |
webclip_payload['Label'] = "ACME Inc." |
webclip_payload['URL'] = "https://" + service_address(request).split(":")[0] # + ":4443/" |
webclip создает значок, который возьмет пользователя к упомянутому URL. В этом случае мы позволяем пользователю удалять webclip.
client_cert_payload = scep_cert_payload(request, "Client Authentication", "foo"); |
Клиентский сертификат зарегистрирован путем создания полезной нагрузки SCEP, подобной той, используемой для дешифрования зашифрованной полезной нагрузки. В реальной реализации Вы обычно добавляете дополнительные параметры, чтобы указать ключевое использование, политики, и подвергнуть альтернативные имена, чтобы упростить для сервера соответствовать зарегистрированные идентификационные данные определенному пользователю и что возможности пользователя.
Plist::Emit.dump([webclip_payload, client_cert_payload]) |
end |
Эта функция заканчивается путем дампа необработанного массива полезных нагрузок. Вызывающая сторона обертывает их в профиль конфигурации и подписывает их, как показано в Перечисление 2-8.
Для получения дополнительной информации о типах полезных нагрузок, которые доступны, посмотрите Ссылку Профиля Конфигурации в developer.apple.com/library/ios/featuredarticles/iPhoneConfigurationProfileRef/Introduction/Introduction.html.
Демонстрационные ответы
Этот раздел включает демонстрационные профили, иллюстрирующие сверхвоздушную регистрацию и фазы конфигурации. Это выборки, и Ваши требования будут варьироваться от примеров. Для помощи синтаксиса посмотрите подробную информацию, предоставленную ранее в этом приложении. Для описания каждой фазы посмотрите Сверхвоздушную Поставку Профиля и Конфигурацию.
Демонстрационный ответ сервера фазы 1
<?xml version="1.0" encoding="UTF-8"?> |
<!DOCTYPE plist PUBLIC "-//Apple Inc//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> |
<plist version="1.0"> |
<dict> |
<key>PayloadContent</key> |
<dict> |
<key>URL</key> |
<string>https://profileserver.example.com/iphone</string> |
<key>DeviceAttributes</key> |
<array> |
<string>UDID</string> |
<string>IMEI</string> |
<string>ICCID</string> |
<string>VERSION</string> |
<string>PRODUCT</string> |
</array> |
<key>Challenge</key> |
<string>optional challenge</string> |
or |
<data>base64-encoded</data> |
</dict> |
<key>PayloadOrganization</key> |
<string>Example Inc.</string> |
<key>PayloadDisplayName</key> |
<string>Profile Service</string> |
<key>PayloadVersion</key> |
<integer>1</integer> |
<key>PayloadUUID</key> |
<string>fdb376e5-b5bb-4d8c-829e-e90865f990c9</string> |
<key>PayloadIdentifier</key> |
<string>com.example.mobileconfig.profile-service</string> |
<key>PayloadDescription</key> |
<string>Enter device into the Example Inc encrypted profile service</string> |
<key>PayloadType</key> |
<string>Profile Service</string> |
</dict> |
</plist> |
Демонстрационный ответ устройства фазы 2
<?xml version="1.0" encoding="UTF-8"?> |
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> |
<plist version="1.0"> |
<dict> |
<key>UDID</key> |
<string></string> |
<key>VERSION</key> |
<string>7A182</string> |
<key>MAC_ADDRESS_EN0</key> |
<string>00:00:00:00:00:00</string> |
<key>CHALLENGE</key> |
either: |
<string>String</string> |
or: |
<data>"base64 encoded data"</data> |
</dict> |
</plist> |
Демонстрационный ответ сервера фазы 3 со спецификациями SCEP
<?xml version="1.0" encoding="UTF-8"?> |
<!DOCTYPE plist PUBLIC "-//Apple Inc//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> |
<plist version="1.0"> |
<dict> |
<key>PayloadVersion</key> |
<integer>1</integer> |
<key>PayloadUUID</key> |
<string>Ignored</string> |
<key>PayloadType</key> |
<string>Configuration</string> |
<key>PayloadIdentifier</key> |
<string>Ignored</string> |
<key>PayloadContent</key> |
<array> |
<dict> |
<key>PayloadContent</key> |
<dict> |
<key>URL</key> |
<string>https://scep.example.com/scep</string> |
<key>Name</key> |
<string>EnrollmentCAInstance</string> |
<key>Subject</key> |
<array> |
<array> |
<array> |
<string>O</string> |
<string>Example, Inc.</string> |
</array> |
</array> |
<array> |
<array> |
<string>CN</string> |
<string>User Device Cert</string> |
</array> |
</array> |
</array> |
<key>Challenge</key> |
<string>...</string> |
<key>Keysize</key> |
<integer>1024</integer> |
<key>Key Type</key> |
<string>RSA</string> |
<key>Key Usage</key> |
<integer>5</integer> |
</dict> |
<key>PayloadDescription</key> |
<string>Provides device encryption identity</string> |
<key>PayloadUUID</key> |
<string>fd8a6b9e-0fed-406f-9571-8ec98722b713</string> |
<key>PayloadType</key> |
<string>com.apple.security.scep</string> |
<key>PayloadDisplayName</key> |
<string>Encryption Identity</string> |
<key>PayloadVersion</key> |
<integer>1</integer> |
<key>PayloadOrganization</key> |
<string>Example, Inc.</string> |
<key>PayloadIdentifier</key> |
<string>com.example.profileservice.scep</string> |
</dict> |
</array> |
</dict> |
</plist> |
Демонстрационный ответ устройства фазы 4
<?xml version="1.0" encoding="UTF-8"?> |
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> |
<plist version="1.0"> |
<dict> |
<key>UDID</key> |
<string></string> |
<key>VERSION</key> |
<string>7A182</string> |
<key>MAC_ADDRESS_EN0</key> |
<string>00:00:00:00:00:00</string> |
</dict> |
</plist> |