代表用户(服务器到服务器)安全地访问iCloud

时间:2015-05-16 17:38:40

标签: authentication icloud kerberos

是否有关于如何生成"票的任何地方的分步说明"为iCloud用户提供他们的用户名/密码。我想构建一个访问iCloud数据(服务器到服务器)的服务,而无需存储iCloud用户名或密码。

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

有谁知道怎么做?谢谢!

1 个答案:

答案 0 :(得分:3)

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

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

  1. 对iCloud进行身份验证(基于重定向,因此凭据仍然不会泄露,只有用户和iCloud服务器本身才知道);
  2. 使用您的应用程序API密钥进一步验证;
  3. 正如here已经明确指出的那样,详细描述了Adam Taylor过程。

    以上所述,如果我理解正确,您希望能够访问所有用户的iCloud数据。我认为,由于多种原因,你无法做到这一点:

    1. 数据受应用程序密钥保护,因此除了基本凭据之外,您还需要访问容器;
    2. 我确信Apple的设计政策绝不会以明文形式要求用户凭据。明确要求用户提供凭据将违反他们的政策,即使事实证明并非如此,凭借凭证也不会对您有所帮助,因为您必须在某处输入/发送它们。但是,所有iCloud身份验证机制都只能由最终用户请求身份验证。
    3. 这就是为什么我不相信只使用用户凭据并访问所有iCloud数据的原因。现在,我为什么日出工作2美分:

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

      非常友好地详细说明您尝试提取的数据类型(特定于苹果应用程序,特定于开发人员应用程序,文档,键值对或其他内容),而我或其他用户可能会提供帮助你进一步。