验证 ID 令牌:使用此 Firebase 检查的工作流程是什么?
Verify ID Tokens: What is the workflow to use this Firebase checkment?
几个月前,Doug Stevenson 告诉我使用专用于 "ID Tokens verification" 的 Firebase 检查:https://firebase.google.com/docs/auth/admin/verify-id-tokens
我已经阅读了文档。我的理解是:当 Android 应用程序向服务器宣布时,我无法信任它 (Firebase Firestore Rules, Firebase Firestorage Rules, Cloud Functions)用户,因为它可以使用一个现有的 ID 而不是它自己的实际 ID 并公布它。所以我必须使用文档中提出的令牌系统。
我也理解的是:我必须在用户成功登录后立即获取令牌。然后我将它发送到服务器,然后它 "checks it"。但是然后……什么?好的,服务器检查它。 但是这个检查的结果,服务器应该怎么处理呢?
我是否应该在每次调用 Android 应用到服务器?
示例:
如果我的 Android 用户想要编辑其帐户,他将填写表格(名字、年龄、银行代码、头像)。这些数据将被发送到 Firestore 和 Firestorage,因此它们的规则将被执行;必须传递用户的UID,其实应该是token吧? (因为 Android 应用程序可以通过发送假 UID 来欺骗 UID,如果它是黑客的话,请参见这个 SO 问题的开头)。
如果我的 Android 应用程序将数据发送到 Cloud Functions,Cloud Functions 会对其进行处理并自行将其保存到 Firestore 和 Firestorage 中,我是否也应该使用令牌系统?
直接写入 Firestore 或 Cloud Storage 时,用户无法假装发送自己以外的 UID。只要您的安全规则检查正确,就不会有问题。在 documentation 中有这方面工作原理的示例。使用安全规则控制访问时无需验证任何 ID 令牌 - 这一切都是自动处理的。
您使用 Firebase Admin SDK 在您的客户端应用程序直接调用 HTTP 类型函数的位置验证令牌,并且该函数需要确保只有有效用户才能执行代码。客户端将用户的令牌与请求一起发送,如您链接的文档中所示,后端代码应在代表用户执行任何工作之前验证令牌。确实没有必要尝试在任何其他类型的 Cloud Function 中传递 ID 令牌。
几个月前,Doug Stevenson 告诉我使用专用于 "ID Tokens verification" 的 Firebase 检查:https://firebase.google.com/docs/auth/admin/verify-id-tokens
我已经阅读了文档。我的理解是:当 Android 应用程序向服务器宣布时,我无法信任它 (Firebase Firestore Rules, Firebase Firestorage Rules, Cloud Functions)用户,因为它可以使用一个现有的 ID 而不是它自己的实际 ID 并公布它。所以我必须使用文档中提出的令牌系统。
我也理解的是:我必须在用户成功登录后立即获取令牌。然后我将它发送到服务器,然后它 "checks it"。但是然后……什么?好的,服务器检查它。 但是这个检查的结果,服务器应该怎么处理呢?
我是否应该在每次调用 Android 应用到服务器?
示例:
如果我的 Android 用户想要编辑其帐户,他将填写表格(名字、年龄、银行代码、头像)。这些数据将被发送到 Firestore 和 Firestorage,因此它们的规则将被执行;必须传递用户的UID,其实应该是token吧? (因为 Android 应用程序可以通过发送假 UID 来欺骗 UID,如果它是黑客的话,请参见这个 SO 问题的开头)。
如果我的 Android 应用程序将数据发送到 Cloud Functions,Cloud Functions 会对其进行处理并自行将其保存到 Firestore 和 Firestorage 中,我是否也应该使用令牌系统?
直接写入 Firestore 或 Cloud Storage 时,用户无法假装发送自己以外的 UID。只要您的安全规则检查正确,就不会有问题。在 documentation 中有这方面工作原理的示例。使用安全规则控制访问时无需验证任何 ID 令牌 - 这一切都是自动处理的。
您使用 Firebase Admin SDK 在您的客户端应用程序直接调用 HTTP 类型函数的位置验证令牌,并且该函数需要确保只有有效用户才能执行代码。客户端将用户的令牌与请求一起发送,如您链接的文档中所示,后端代码应在代表用户执行任何工作之前验证令牌。确实没有必要尝试在任何其他类型的 Cloud Function 中传递 ID 令牌。