苹果登录:用户ID如何计算?

3
用户 ID 值是如何计算的,以返回苹果登录标志?它看起来像是 000011.9134c48e58484ad52299cb393541aa78.1781。这是完全随机的数字吗?每个应用程序中这个数字都是唯一的吗?
1个回答

7
Apple没有提供任何有关如何计算用户标识符的信息。鉴于它保证在数百万用户中是唯一的,它不可能是纯随机的。然而,在其计算中可能存在一些随机性。
苹果状态 用户标识符具有以下特征:
- 由唯一、稳定的字符串组成,旨在用作用户的主要标识符。 - 在与您的苹果开发者帐户相关联的所有应用程序中使用相同的标识符。 - 对于同一用户在不同的开发团队中有所不同,并且不能用于跨开发团队识别用户。 - 如果用户停止使用“使用Apple登录”并稍后再次使用,则不会更改。

苹果的登录将不包含发送用户的姓名或电子邮件,当它尝试与您的应用重新签约并且存在仍然有效的苹果登录会话时。因此,实质上,您的应用需要能够仅通过用户ID对用户进行身份验证,这基本上意味着您需要以明文形式存储其帐户条目在您的数据库中。这是糟糕的设计,干得好,苹果。 - Martin Braun
用户ID并不敏感,所以无论您将其以明文形式存储在数据库中都没有关系。该用户ID对于您的应用程序中的该用户是唯一的,因此这实际上是一个非常好的、保护隐私的设计。用户通过苹果发送给您的包含该ID的令牌进行身份验证。您需要验证该令牌是否由苹果签名。 - Paulw11
想象一下,如果你只允许用户使用密码进行身份验证,那将是不幸的。这是因为你无法使用bcrypt(其中包含一个随机盐)对密码进行哈希处理,因此无法解析账户以进行身份验证。相反,你必须使用固定的盐来对密码进行哈希处理。这就是苹果用户ID所强制要求你做的事情。这是一种倒退的步骤。 - Martin Braun
不,因为用户ID并不是认证。它只是一个用户标识符。认证是由苹果提供的包含用户标识符在声明中的JWT。您需要验证JWT是否由苹果签名,并从声明中获取用户标识符。这是一种非常常见的OAuth模式。在iOS上,通过“使用Apple登录”框架来处理此过程。 - Paulw11

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接