最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

Firebase管理员:是否有必要检查服务器上解码的uid(基于客户端ID令牌)是否与客户端的uid相匹配?

IT培训 admin 3浏览 0评论

Firebase管理员:是否有必要检查服务器上解码的uid(基于客户端ID令牌)是否与客户端的uid相匹配?

[在我的服务器中,我通过传递Firebase uid作为参数(即GET /users/:uid)来访问用户特定的数据。我还从Firebase客户端生成ID令牌,并在服务器上对该令牌进行解码以获取uid。然后,我检查这两个uid是否相同。

基于Firebase处理令牌的方式,这是否必要?还是Firebase可以有效地确定请求的uid参数(使用Auth.auth().getUserId生成和令牌(使用Auth.auth().generateIdToken()生成))不是来自同一用户?

注意:我没有使用Firebase数据库,所以我没有数据库权限的额外安全性。

回答如下:

Firebase管理员文档建议采用以下方法来验证服务器上当前登录的用户。

如果您的Firebase客户端应用程序与自定义后端服务器通信,则可能需要识别该服务器上当前登录的用户。为了安全地执行此操作,请在成功登录后使用HTTPS将用户的ID令牌发送到您的服务器。然后,在服务器上,验证ID令牌的完整性和真实性,并从中检索uid。您可以使用以这种方式发送的uid来安全标识服务器上当前登录的用户。

因此,您只需要在客户端上获取用户的ID令牌,然后使用HTTPS将其发送到服务器即可。这足以安全地验证用户的身份。

服务器代码(node.js)

// idToken comes from the client app
admin.auth().verifyIdToken(idToken)
  .then(function(decodedToken) {
    let uid = decodedToken.uid;
    // ...
  }).catch(function(error) {
    // Handle error
  });

请参见Firebase管理员文档:Verify ID Tokens

Firebase管理员:是否有必要检查服务器上解码的uid(基于客户端ID令牌)是否与客户端的uid相匹配?

[在我的服务器中,我通过传递Firebase uid作为参数(即GET /users/:uid)来访问用户特定的数据。我还从Firebase客户端生成ID令牌,并在服务器上对该令牌进行解码以获取uid。然后,我检查这两个uid是否相同。

基于Firebase处理令牌的方式,这是否必要?还是Firebase可以有效地确定请求的uid参数(使用Auth.auth().getUserId生成和令牌(使用Auth.auth().generateIdToken()生成))不是来自同一用户?

注意:我没有使用Firebase数据库,所以我没有数据库权限的额外安全性。

回答如下:

Firebase管理员文档建议采用以下方法来验证服务器上当前登录的用户。

如果您的Firebase客户端应用程序与自定义后端服务器通信,则可能需要识别该服务器上当前登录的用户。为了安全地执行此操作,请在成功登录后使用HTTPS将用户的ID令牌发送到您的服务器。然后,在服务器上,验证ID令牌的完整性和真实性,并从中检索uid。您可以使用以这种方式发送的uid来安全标识服务器上当前登录的用户。

因此,您只需要在客户端上获取用户的ID令牌,然后使用HTTPS将其发送到服务器即可。这足以安全地验证用户的身份。

服务器代码(node.js)

// idToken comes from the client app
admin.auth().verifyIdToken(idToken)
  .then(function(decodedToken) {
    let uid = decodedToken.uid;
    // ...
  }).catch(function(error) {
    // Handle error
  });

请参见Firebase管理员文档:Verify ID Tokens

发布评论

评论列表 (0)

  1. 暂无评论