像Day-One一样,如何使用用户Apple-ID创建匿名用户帐户?

时间:2019-04-12 11:53:22

标签: ios authentication apple-id

一个新的iOS应用程序应该能够连接到Web服务以跨设备同步数据。

我喜欢日记应用程序第一天解决此问题的方式:

  • 注册后,用户可以选择使用邮件地址来设置“真实”帐户或使用其 Apple ID
  • 登录
  • 使用“真实”帐户时,必须确认邮件地址,并且必须选择用户名和密码
  • 使用Apple ID登录时,不需要其他步骤。该应用使用某些随机用户ID连接到Web服务
  • 在新设备上安装时,使用Apple-ID方法重新连接是没有问题的。

问题1:如何访问Apple ID?

据我所知,该应用无法真正访问Apple-ID 。还是有一些未记录的方法来做到这一点? 这怎么可能?

我怀疑该应用程序反而可能会使用iCloud存储一些令牌? iCloud存储链接到Apple-ID,因此在新设备上安装时,可以从iCloud恢复令牌并使用它重新连接。

还是还有其他/更好的方法?


问题2:如何处理身份验证?

让我们搁置问题1,并假设我们已经解决了创建一些跨设备用户名的问题。 如何处理身份验证?

  • 解决方案1::仅将令牌(Apple ID / iCloud存储的用户名等)用于身份验证。如果从应用程序到服务器的请求包含有效的用户名令牌,则授予访问权限。
  • 解决方案2::除了用户名令牌外,在创建匿名帐户时还会生成随机密码。这可以在设备或服务器上完成。但是由于必须在两端都知道密码,因此必须在某个时刻将密码从一端传送到另一端。
    • 2a:信任 HTTPS 连接并传输普通密码
    • 2b:使用其他方法(例如Deffie Hellman)来同意通用密码

乍看之下2b似乎是最安全的解决方案,但事实确实如此吗?同步数据未加密,但“仅”信任HTTPS连接。 使用其他方法传输密码是否会增加安全性?

另外,它是否增加了额外的安全性以完全使用“密码” ?这不是用户为其用户选择的用户名选择的密码,而是用于自动生成的用户名/令牌的自动生成的密码。

仅使用生成的用户名令牌会有所不同吗?只有有权访问令牌/ Apple ID / iCloud帐户等的人才能访问Web服务。


那么,哪种解决方案是最好的?我是否缺少某些东西,并且有更好的解决方案?

1 个答案:

答案 0 :(得分:0)

从iOS 12开始,苹果显然为开发人员提供了一个SDK,供开发人员访问用户Apple ID。开发人员可以使用AuthenticationService SDK来实现此目的。请在the documentation阅读更多内容。我敢肯定,第一天的应用程序就是您所描述的方式。