Доступ к iCloud безопасно от имени пользователя (от сервера к серверу) - программирование

Доступ к iCloud безопасно от имени пользователя (от сервера к серверу)

Существуют ли пошаговые инструкции в любом месте, как генерировать "билет" для пользователя iCloud, учитывая их имя пользователя/пароль. Я хотел бы создать службу, которая получает доступ к данным iCloud (от сервера к серверу) без сохранения имени пользователя или пароля iCloud.

Я понимаю, что вы используете имя пользователя/пароль для создания билета Kerberos из iCloud. Это основано на ответе на Как Sunrise для iOS использует учетные данные iCloud для доступа к нашему календарю?. Но я не нашел инструкции онлайн о том, как это сделать.

Кто-нибудь знает, как это сделать? Спасибо!

4b9b3361

Ответ 1

Позвольте мне начать с указания, что по умолчанию хранилище приложений iCloud "изолировано" в контейнерах. Подписанное приложение может получить доступ только к к собственному контейнеру, не имея ключа API для аутентификации в других контейнерах приложений. Вы можете заставить несколько приложений совместно использовать один и тот же контейнер или использовать несколько контейнеров в одном приложении, если это необходимо, но по существу вы должны быть разработчиком всех приложений или иметь явное разрешение на это. Проверьте Включить iCloud в ваше приложение и Включение CloudKit для более подробной информации.

Другие (не-appstore) приложения и службы могут аутентифицироваться для использования данных приложения через CloudKit Web Services

  • Аутентификация в iCloud (на основе переадресации, поэтому учетные данные еще не раскрываются и известны только пользователю и самому серверу iCloud);
  • Дополнительная аутентификация с помощью ключа API приложения;

Процесс подробно описан здесь, как уже любезно отметили Adam Taylor.

Все сказанное выше: если я правильно понимаю, , вы хотите получить доступ ко всем данным пользователя iCloud. Я думаю, вы не сможете сделать это по нескольким причинам:

  • Данные защищены ключом приложения, поэтому вам необходимо иметь доступ к контейнеру в дополнение к основным учетным данным;
  • Я уверен, что у Apple есть политика разработки, чтобы никогда не запрашивать учетные данные пользователя в виде простого текста. Просить пользователя явно указать учетные данные будет против их политики, и даже если окажется, что это не так, наличие учетных данных вам не поможет, потому что вам нужно их вводить/отправлять. Но все механизмы аутентификации iCloud предназначены для запроса аутентификации только конечным пользователем.

Вот почему я не считаю, что можно просто использовать учетные данные пользователя и получить доступ ко всем своим данным iCloud. Теперь мои 2 цента о том, почему работает Sunrise:

Насколько я понимаю, приложение Sunrise работает, потому что данные календаря предназначены для совместного использования через CalDav, который работает с конкретным URL-адресом, поэтому вы можете импортировать и связывать свой календарь в различных клиентских приложениях календаря. URL-адрес можно найти с небольшим количеством расследований. CalDAV похожа на IMAP и POP3 для доступа к почтовому ящику.

Будьте добры, чтобы подробнее рассказать о том, какие данные вы пытаетесь извлечь (конкретные приложения для Apple, специфические приложения для разработчиков, документы, пары ключ-значение или что-то еще), и мне или другим пользователям может помочь вам в дальнейшем.