【问题标题】:Accessing iCloud securely on behalf of user (server to server)代表用户安全访问 iCloud(服务器到服务器)
【发布时间】:2015-07-28 12:24:02
【问题描述】:

在给定用户名/密码的情况下,是否有关于如何为 iCloud 用户生成“票证”的分步说明。我想构建一个访问 iCloud 数据(服务器到服务器)的服务,而无需存储 iCloud 用户名或密码。

我的理解是您使用用户名/密码从 iCloud 生成 Kerberos 票证。这是基于对 How does Sunrise for iOS use iCloud credentials to access our calendar? 的回答。但我还没有在网上找到关于如何做到这一点的说明。

有人知道怎么做吗?谢谢!

【问题讨论】:

标签: authentication icloud kerberos


【解决方案1】:

首先让我指出,默认情况下,iCloud 应用程序存储在容器中是“沙盒”的。已签名的应用程序只能访问其自己的容器,而无需 API 密钥对其他应用程序容器进行身份验证。您可以让多个应用程序共享同一个容器,或者在需要时在同一个应用程序中使用多个容器,但本质上您必须是所有应用程序的开发人员或拥有执行此操作的明确权限。查看Incorporating iCloud into your appEnabling CloudKit 了解更多详情。

其他(非应用商店)应用程序和服务可以通过CloudKit Web Services 进行身份验证以使用应用程序的数据:

  1. 向 iCloud 进行身份验证(基于重定向,因此凭据仍然不会泄露,并且只有用户和 iCloud 服务器本身知道);
  2. 使用您的应用程序 API 密钥进一步进行身份验证;

here 详细描述了该过程,Adam Taylor 已经指出。

综上所述,如果我理解正确,您希望访问用户的所有 iCloud 数据。我认为,由于多种原因,您将无法这样做:

  1. 数据受应用程序密钥保护,因此除了基本凭据外,您还需要拥有此密钥才能访问容器;
  2. 我确信 Apple 的设计策略是从不要求以纯文本形式提供用户凭据。明确要求用户提供凭据将违反他们的政策,即使事实证明不是,拥有凭据也对您没有太大帮助,因为您必须在某处输入/发送它们。但所有 iCloud 身份验证机制都设计为仅要求最终用户进行身份验证。

这就是为什么我认为不可能只使用用户凭据来访问他们所有的 iCloud 数据。现在,关于 Sunrise 为何有效的 2 美分:

据我了解,Sunrise 应用程序可以正常工作,因为日历数据设计为通过 CalDav 共享,它在具体 URL 上工作,因此您可以在各种日历客户端应用程序中导入和链接您的日历。通过一些调查可以找到该 URL。 CalDAV 类似于用于邮箱访问的 IMAP 和 POP3。

请详细说明您要提取的数据类型(特定于苹果应用程序、特定于开发人员应用程序、文档、键值对或其他内容),我或其他用户可能会进一步帮助您.

【讨论】:

    猜你喜欢
    • 2014-12-30
    • 1970-01-01
    • 1970-01-01
    • 2012-12-19
    • 2017-08-28
    • 1970-01-01
    • 2021-08-20
    • 1970-01-01
    • 2020-06-16
    相关资源
    最近更新 更多