服务器上的 Firebase 令牌验证
Firebase token verification on server
我正在尝试使用 firebase 实现一个 authentication/authorization 系统,我正在努力处理授权流程的最后一部分,即使我的服务器能够验证令牌的有效性。
有两种方法可以执行此操作:
- 使用 firebase 的 Admin SDK 验证令牌,其中实质上是服务器与 Firebase 通信并验证令牌(安全选项)
- 使用第三方 JWT 库验证令牌。
我的问题与选项 (2) 有关,根据 documentation is perfectly feasible。问题是,这如何安全?根据以下内容,令牌验证过程中包含的所有内容都是 public:
Finally, ensure that the ID token was signed by the private key corresponding to the token's kid claim. Grab the public key from https://www.googleapis.com/robot/v1/metadata/x509/securetoken@system.gserviceaccount.com and use a JWT library to verify the signature. Use
如果token是public,验证的key是public,谁保证token是真的?
可能是我遗漏了与 JWT 相关的内容?
PS。我已经通过远程验证实现了选项 (1),但这将显着影响应用程序性能。
您可以使用 public 密钥验证 令牌的有效性,但您只能 使用 private 密钥创建 代币。
顾名思义:
您的 private 密钥只能在受信任的环境中使用,例如您的开发机器、您控制的服务器或 Cloud Functions。所以这些是唯一可以生成授权令牌的地方。
public 密钥可以与其他人共享,这意味着他们可以使用它来确保令牌有效。
我正在尝试使用 firebase 实现一个 authentication/authorization 系统,我正在努力处理授权流程的最后一部分,即使我的服务器能够验证令牌的有效性。
有两种方法可以执行此操作:
- 使用 firebase 的 Admin SDK 验证令牌,其中实质上是服务器与 Firebase 通信并验证令牌(安全选项)
- 使用第三方 JWT 库验证令牌。
我的问题与选项 (2) 有关,根据 documentation is perfectly feasible。问题是,这如何安全?根据以下内容,令牌验证过程中包含的所有内容都是 public:
Finally, ensure that the ID token was signed by the private key corresponding to the token's kid claim. Grab the public key from https://www.googleapis.com/robot/v1/metadata/x509/securetoken@system.gserviceaccount.com and use a JWT library to verify the signature. Use
如果token是public,验证的key是public,谁保证token是真的?
可能是我遗漏了与 JWT 相关的内容?
PS。我已经通过远程验证实现了选项 (1),但这将显着影响应用程序性能。
您可以使用 public 密钥验证 令牌的有效性,但您只能 使用 private 密钥创建 代币。
顾名思义:
您的 private 密钥只能在受信任的环境中使用,例如您的开发机器、您控制的服务器或 Cloud Functions。所以这些是唯一可以生成授权令牌的地方。
public 密钥可以与其他人共享,这意味着他们可以使用它来确保令牌有效。