Как мне проверить доступ к свойству keychain после обновления через AppStore?

#iphone #ios #app-store #keychain #ios-provisioning

#iPhone #iOS #app-store #брелок #ios-подготовка

Вопрос:

В руководстве по программированию служб Keychain указано следующее:

«На iPhone права Keychain зависят от профиля подготовки, используемого для подписи вашего приложения. Обязательно последовательно используйте один и тот же профиль подготовки в разных версиях вашего приложения.»

С этим у меня нет проблем, но я хотел бы проверить, что если я предоставлю обновление для своего приложения в AppStore, оно по-прежнему сможет получить доступ к старым значениям, хранящимся в keychain. Я попытался протестировать, обновив приложение версией, подписанной с помощью специального профиля распространения, который содержал тот же идентификатор пакета и название продукта, что и оригинал, но не смог получить доступ к старому значению в keychain.

Это единственный вариант отправить обновление в AppStore и надеяться, что оно сработает?

Ответ №1:

Это хороший вопрос.

Одна из основных причин, по которой вы можете захотеть сохранить некоторые данные в keychain, заключается в том, чтобы предотвратить доступ к ним злоумышленников. Это само по себе довольно сухое предложение, поэтому я рекомендую прочитать о том, как кто-то может получить доступ к этим данным.

Другим способом доступа к данным keychain было бы создать вредоносное приложение с тем же идентификатором приложения, что и у целевого приложения. Apple обеспечила этот маршрут, потребовав, чтобы профиль подготовки был таким же.


Итак, отвечая на ваш вопрос, вы можете протестировать данные keychain в update только из того же профиля подготовки, т.Е.

  1. От случая к случаю
  2. Из App Store в app store.

Перевод из App Store в App Store на самом деле невозможен, поскольку к тому времени будет слишком поздно (ваше обновление появится в продаже). Итак, вместо этого вам нужно удалить свое приложение из App Store и установить специальную версию. Затем воссоздайте свои данные в keychain, затем обновите до последней специальной версии и проверьте, что она работала.

Конечно, для этого требуется, чтобы у вас была архивированная специальная версия приложения, которая в настоящее время есть в App Store. Если у вас этого нет, то протестировать обновление невозможно.

Ответ №2:

Если я не ошибаюсь, для обновления приложения в App Store вам необходимо использовать тот же профиль подготовки. Следовательно, поскольку вы будете использовать тот же профиль, у вас должен быть доступ к тем же элементам keychain.

Ответ №3:

На самом деле важен не файл подготовки, а идентификатор приложения. В частности, начальный идентификатор пакета, который вы задаете при создании идентификатора приложения. Доступ к Keychain регулируется им. Таким образом, пока ваш профиль использует идентификатор приложения с тем же начальным идентификатором пакета, вы можете продолжать получать доступ к информации в keychain. У меня есть несколько приложений, которые делают это.

Это позволяет вам создать набор приложений, которые могут получать доступ к одним и тем же элементам keychain, если вы настроили их на использование одного и того же начального идентификатора пакета. Итак, если вы используете версии light и pro, они оба могут получить доступ к одной и той же информации о keychain, сохраняя при этом отдельные идентификаторы пакета для таких вещей, как пользовательские настройки по умолчанию.

Комментарии:

1. Как настроить ваше приложение на использование того же идентификатора приложения, что и в предыдущей версии. Я пробовал методы, упомянутые в примере кода GenericKeychain, но поскольку предыдущая версия не использовала атрибут безопасности группы доступа, похоже, он не работает. Я по-прежнему не могу получить доступ к паролю, который был установлен в keychain, из приложения, которое было установлено из App Store.

2. Я также попытался установить для ключа идентификатора приложения в Entitlements.plist значение ##########. com.companyname.etc Но, похоже, это не помогает.

3. Этот ответ прямо противоречит документам Apple : На iPhone права Keychain зависят от профиля подготовки, используемого для подписи вашего приложения. Убедитесь, что вы последовательно используете один и тот же профиль подготовки в разных версиях вашего приложения. Что из этого правильно, профиль подготовки или идентификатор приложения?

Ответ №4:

SFHFKeychainUtils может быть вашим хорошим выбором. Это оболочка для доступа к keychain. Подробнее о SFHFKeychainUtils:http://www.ioslib.com/archives/sfhfkeychainutils

Комментарии:

1. Это не ответ на вопрос Шейна. Он хочет знать, как проверить, что новое обновление приложения по-прежнему сможет получать доступ к старым значениям, хранящимся в keychain. Использование оболочки не решит вопрос.