【问题标题】:Can we create an API token for Cloudkit JS, to access shared data without authentication我们可以为 Cloudkit JS 创建一个 API 令牌,以访问共享数据而无需身份验证
【发布时间】:2019-02-12 02:55:00
【问题描述】:

我创建了一个 iCloud 用户 webuser@somedomain.com,然后我与该用户共享了特定记录。

我想要做的是让网站使用该用户仅访问它可以访问的共享记录,但不让他通过 iCloud 与 Apple 进行身份验证。原因是我想在不要求用户登录/注册 Apple iCloud 的情况下控制网站可以做什么以及可以访问什么,并且我不希望每个访问该网站的用户都必须登录 Apple ID .我虽然使用 web 服务的 cloudkit js 可能有可能,但似乎服务器到服务器的密钥只能访问公共数据库。

我的 JS 不太流利,我正在尝试让 Web 开发人员访问我的记录。

该主题似乎不是很受欢迎,并且那里没有太多信息。请不要只说“不,这不可能”。给我一些信息。

【问题讨论】:

    标签: ios cloudkit cloudkit-js


    【解决方案1】:

    您是正确的,通过服务器到服务器密钥或 JS API 令牌获取 CloudKit 数据只能让您访问 public 数据库。在私有或共享数据库中获取任何内容需要用户身份验证。

    这是明智的,因为如果没有 CloudKit 用户作为参考,您的应用程序将不知道要查询哪个私有数据库。如果匿名用户(即使是您的应用程序)可以查询私人用户数据,也会降低安全性。

    作为一种解决方法,您可以让 iOS/macOS 应用程序将您希望在网络上可用的用户数据的某些部分推送到您的公共数据库中。您可以在公共数据库中创建类似Web 的记录类型,并为您需要的所有数据创建字段。然后,这些共享数据将可用,但任何人都可以使用一切。用户仍然需要在您的网络应用程序中标识自己才能获取某些数据(如果您的 Web 记录类型中有 userId 字段,则可以这样做)。

    希望这是有道理的。如果您有后续问题,请告诉我。

    【讨论】:

    • 身份验证是否必须由用户查看,或者可以通过 javascript 使用用户名和密码来完成。我认为这是缺少的,我不想因为一些普通的事情而放弃一个为期 2 年的项目,我认为这是可能的。
    • 我想通过用户字段了解您对公共数据库访问的意思。因此,如果我做对了,我将不得不在每个网页的 java 脚本中设置一些用户名,以验证哪个网站正在查询,并让它访问我可以命名为“”username.recortype1“”等的正确记录中的数据.
    • 但这是否意味着,如果一个聪明的家伙想出来,他可以在没有安全性的情况下读取所有数据,或者他绝对需要服务器到服务器令牌。我想如果有人泄漏该令牌,这也可能是一个问题。嗯...???
    • 您可以限制可以发出请求的位置。在 CloudKit 仪表板中,单击您的容器,然后转到 API 访问,然后创建一个新令牌。然后,您可以设置允许哪些域使用该 JavaScript API 令牌发出请求:d.pr/i/A3GBmF
    猜你喜欢
    • 1970-01-01
    • 2017-01-12
    • 1970-01-01
    • 2017-10-18
    • 2018-06-14
    • 1970-01-01
    • 2020-11-18
    • 2017-10-31
    • 2020-02-13
    相关资源
    最近更新 更多