如何验证 Sign In With Apple 中的 realUserStatus 值

How to verify realUserStatus value in Sign In With Apple

首次使用 Sign in with Apple 登录时,returns 值 realUserStatus 作为 iOS 客户端中 ASAuthorizationAppleIDCredential 的一部分。此值表示 Apple 是否确信用户是真实的(例如,它是一个脚本)

我的问题是如何在我的后端验证系统中验证 realUserStatus 的值? 因为 realUserStatus 返回给 iOS 客户端,客户端应该告诉我的服务器它是否是机器人!我怎么知道它是否不仅仅是一个脚本并告诉服务器它是真实的?

编辑(补充说明): 在 Apple 的文档中,它说“您可以跳过任何额外的欺诈验证检查或您的应用程序通常使用的验证码。”但是当我们使用 CAPTCHA 时,提供者可以验证响应,Apple 不会这样做,或者我在任何地方都找不到如何做!

此标志用作基本的首次验证,供您的前端使用。仅当用户首次在您的应用中使用 Sign in with Apple 时,识别服务器才会 return 此值。

如果你想在后端验证用户,你应该使用用户身份令牌(JWT)。当用户登录时,您可以从 Apple 的服务器获取它(阅读此处:https://developer.apple.com/documentation/signinwithapplerestapi/authenticating_users_with_sign_in_with_apple)。

如果您想在即将到来的会话中验证用户,作为现有用户(无需用户每次都登录),您应该开发自己的系统,用于创建、保存和验证令牌。另一种选择是使用 Firebase 身份验证框架,它支持苹果登录。

如果您将获取的用户信息发送到应用服务器(您的后端),您可以通过带有休息服务的身份令牌来验证用户。

苹果文件说: 当您的应用程序收到用户信息后,您可以通过服务器验证其关联的身份令牌,以确认该令牌未过期并确保它没有被篡改或重播到您的应用程序。有关检索身份令牌的信息,请参阅使用 Sign in with Apple 对用户进行身份验证。

https://developer.apple.com/documentation/sign_in_with_apple/sign_in_with_apple_rest_api/verifying_a_user

我刚刚在 WWDC 在线实验室与一位 Apple 工程师通话。

所以从iOS14开始,realUserIndicator包含在identity token中,可以通过服务器验证。

对于 iOS 13 他们没有解决方案。