当前位置: 首页 > 知识库问答 >
问题:

Firebase,解码的idToken与REST发送的令牌不一样

卫开济
2023-03-14

我在项目后端使用firebase实时数据库,但在制定安全规则时遇到了问题。我使用REST与数据库通信并授权REST请求,我发送一个idToken作为“auth=”参数的查询,如https://firebase.google.com/docs/database/rest/auth.

Firebase只检测到我被授权,但当我比较授权时。uid在数据库规则中它们是不同的。我设置了自己的服务器,如果我解码令牌,我会看到它确实保存了用户的正确信息。

以下是我想要实现的数据库规则,但它们不起作用:

{
  "rules": {
      "$uid": {
        ".read": "auth.uid === $uid",
        ".write": "auth.uid === $uid"
      }
  }
} 

但这些规则确实有效,这意味着我是被授权的。为什么auth对象不包含实际的用户id,而是包含auth的其他值。uid?

  "rules": {
      "$uid": {
        ".read": "auth != null",
        ".write": "auth != null"
      }
  }
}

为什么Firebase以不同的方式解码令牌?我甚至可以访问发送到规则的auth对象吗?

共有1个答案

柯奕
2023-03-14

auth对象有以下3个属性:

 类似资料:
  • 问题内容: 我在spring框架中有csrf保护。因此,在每个请求中,我都从ajax调用的标头中发送csrf令牌,这非常正常。 在ajax中 我不知道要生成csrf令牌并将其包含在Postman Rest Client的标头部分中吗?您能帮我从Postman Rest Client发送csrf令牌吗? 问题答案: 一致地执行此操作的最简单方法,因此你不必每次都获得令牌: 注意:你需要安装PostM

  • 我添加了Firebase,允许客户端直接从web应用程序客户端(浏览器)进行身份验证。我正在使用firebase web JS包,它工作得非常好。我可以在浏览器中看到,我收到一个用户对象,其中包含有关该用户的信息,包括。 然后,我需要在我的服务器后端(即python django)上对该用户进行身份验证。在Firebase文档中,我找到了一个我正试图做的操作指南,即验证id令牌。 因为他们没有支持

  • 我有带有azure ad b2c的前端(https://github.com/Azure-Samples/ms-identity-b2c-javascript-spa)。用户登录后,azure AD返回SPA令牌。我使用此访问令牌调用springbooapi。 我的springboot应用程序如何验证acess令牌并使用此令牌从azure ad b2c获取用户信息。 谢谢

  • 我在试图理解令牌在Firebase存储中是如何工作的。 每当我的web应用程序将图像上传到FS,它就会在其公共URL中添加一个令牌。问题是,每当您将同一图像文件上传到web应用程序的另一个部分时,您似乎没有得到另一个文件,而是得到了已经上传的文件url的不同令牌,从而为以前注册的图像显示呈现403错误。 有办法解决这个吗? 如果用户重复这个过程,并在应用程序的另一个部分上传相同的picture.j

  • 我知道访问令牌是短期的,因为它们是在不访问数据库的情况下进行验证的,而刷新令牌是长期的,并且是针对数据库进行验证的。 我不明白的是,为什么最初通过发送授权授予获取访问令牌与后来通过发送刷新令牌获取访问令牌之间存在差异。 查看RFC 6749中的这个图,为什么客户端不在步骤(G)中简单地重新发送授权授权?为什么需要刷新令牌?

  • 我正在编写一个应用程序,它应该将推送通知从服务器发送到android和iOS设备。为此,我尝试使用FCM。iOS应用程序使用了APNS,因此我可以在服务器端获取APNS订阅令牌。然后我尝试批量导入这些令牌,我得到一些长度为174个符号的注册令牌,而不是Firebase中通常使用的152个。当我使用IID方法得到https://iid.googleapis.com/iid/info/{token},