验证ID令牌:使用此Firebase检查的工作流是什么



几个月前,Doug Stevenson告诉我使用专门用于"ID令牌验证"的Firebase检查:https://firebase.google.com/docs/auth/admin/verify-id-tokens

我看过医生。我所理解的是:当安卓应用程序向服务器(Firebase Firestore Rules,Firebase Firestorage Rules,Cloud Functions(宣布用户的ID时,我不能信任它,因为它可以接受一个现有的ID,而不是它自己的实际ID。所以我必须使用文档中提出的令牌系统。

我也明白:我必须在用户成功登录后立即获取令牌。然后我将其发送到服务器,它会"检查"它。但是。。。什么好的,服务器会检查它。但是检查的结果是,服务器应该如何处理它

在Android应用程序对服务器进行每次调用之前,我是否应该执行所有这些操作(将令牌发送到服务器,在服务器端进行检查,并在服务器端根据检查结果执行某些操作(

示例:

  • 如果我的Android用户想编辑其帐户,他会填写表格(名字、年龄、银行代码、图片头像(。这些数据将被发送到Firestore和Firestorage,以便执行它们的规则;必须传递用户的UID,但实际上它应该是令牌,不是吗?(因为如果是黑客,安卓应用程序可以通过发送假UID来隐藏UID,请参阅本SO问题的开头(。

  • 如果我的Android应用程序将数据发送到云函数,云函数处理数据并将其保存到Firestore和Firestorage中,我是否也应该使用令牌系统?

当直接写入Firestore或云存储时,用户不能伪造发送自己的UID以外的UID。只要你的安全规则检查正确,你就不会有问题。文档中有这样的例子。在使用安全规则控制访问时,不需要验证任何ID令牌——这一切都是自动处理的。

您使用Firebase Admin SDK在中验证令牌,您的客户端应用程序直接调用HTTP类型的函数,该函数需要确保只有有效用户才能执行代码。客户端将用户的令牌与请求一起发送,如您链接的文档中所示,后端的代码应在代表用户执行任何工作之前验证令牌。实际上没有必要试图在任何其他类型的云函数中传递ID令牌。

最新更新