Вы можете отправить приложение как полностью бесплатное приложение в AppStore, но потребовать, чтобы пользователь вошел в систему и прошел аутентификацию, чтобы использовать его.Таким образом, любой может загрузить его, но вы сами контролируете, кто может его использовать.Apple делает все для вас, и вам не нужно беспокоиться о специальных развертываниях или ИТ-отделах.
Затем вы создаете действительно простую систему управления конфигурацией на веб-хосте (или платформе, такой как Google AppEngine).), который управляет аутентификацией приложений.
Когда пользователь запускает бесплатное приложение, его просят ввести имя пользователя / пароль / что угодно.Эта информация отправляется в веб-систему управления конфигурацией и подтверждается.Если приложение получает приемлемое подтверждение от системы управления конфигурацией, оно разблокирует себя для использования этим пользователем.
Приложение может либо проходить повторную аутентификацию при каждом запуске (полезно, если вы хотите много контроля), либо оно можетхраните файл ключа локально, указывая, что он был аутентифицирован.Если он видит файл локального ключа при запуске приложения, он считает себя аутентифицированным и больше никогда не проверяет.
Независимо от того, используете ли вы одну учетную запись на человека или одну для всей компании, решать только вам.
Этот стиль распространения очень полезен, если вы хотите контролировать, кто может использовать приложение, но хотите простоты развертывания, которую обеспечивает AppStore.
Apple приняла много приложений в AppStore, которые используют этот методпроверка подлинности на удаленном сервере (отличный пример - Skype).
Если вы отслеживаете UDID устройства на сервере конфигурации, вы также можете предварительно загрузить его, чтобы позволить определенному набору устройств работать.
Кроме того, ничего из того, что я описал, не относится к конкретным iPhone, поэтому вы можете использовать ту же систему управления конфигурациями и концепции на других платформах, таких как Android (или даже настольные компьютеры), если вы когда-нибудь портируете приложение или создаете другие приложения, нуждающиеся в этом в будущем.
Кроме того, поскольку действие аутентификации устройств не является процессомили при использовании большого объема данных вы, скорее всего, никогда не понесете затрат, если создадите их в Google AppEngine, поскольку никогда не будете переходить через бесплатные квоты и получите стабильность и масштабируемость серверной архитектуры Google.
Как это конкретное развертываниедля управления внутренней серверной системой, ее развертывание через AppStore может показаться небезопасным, поскольку в приложение встроена конфиденциальная информация, в частности информация, которая позволяет ему подключаться и проверять подлинность на внутренних системах.
Решение этой проблемы состоит в том, чтобы не включать эту информацию в приложение и просто включать эту информацию в ответ, который приложение получает от сервера управления конфигурацией.В основном, приложение содержит логику, необходимую для выполнения своей функции, но без информации о соединении оно не может управлять какой-либо внутренней системой.
Если вы выполняете аутентификацию приложения при каждом запуске, вы можете изменить информацию о соединении.на сервере конфигурации, и приложение обновится до новой информации без необходимости какого-либо нового развертывания.Пользователь просто должен перезапустить приложение.Это дает вашему клиенту возможность изменять конфигурацию своей внутренней сети без аннулирования кода вашего приложения.Вы также можете сделать эту информацию настраиваемой вручную в приложении, но тогда вы будете нести расходы на ИТ при настройке приложения на каждом устройстве, и если вы уже собираетесь настраивать систему управления конфигурацией, вы также можете использовать ее.
Для дальнейшей защиты вышеуказанного решения вам может потребоваться, чтобы система управления конфигурацией была внутренней и находилась за брандмауэром компании, чтобы независимо от того, кто захватил приложение, они не могли подключиться к системе конфигурации, если они не находятся в компании.сеть.