0

我想在C++中使用this third party library验证服务器端的Firebase令牌。但我有一些误解: 对于令牌验证我需要提供公钥和私钥,Firebase says thatFirebase令牌验证中的误解

必须对应于 https://www.googleapis.com/robot/v1/metadata/x509/[email protected]

列出的公开密钥的一个但当我打开链接,我无法找到公钥和私钥,我应该通过验证令牌。

那么,我如何获得公钥和私钥来验证令牌?

回答

1

您只需要公钥来验证Firebase ID令牌和jwt。该链接包含公钥json对象(我​​们称之为publicKeysObject)。您在JWT头获得“孩子”字段,然后将公钥如下:publicKeysObject [kidFromJWT]

检查火力地堡管理Node.js的详细信息SDK开源实现:https://github.com/firebase/firebase-admin-node/blob/master/src/auth/token-generator.ts

+0

谢谢您的回答并为延误感到抱歉。好的,但我有两个问题:[验证者需要密钥](https://github.com/pokowaka/jwt-cpp#validating-tokens),如果我理解正确,那么,我们应该作为私钥传递什么?我们应该如何处理公钥,我们将从'publicKeysObject [kidFromJWT]'得到?我的意思是我不明白这个流程:我们需要使用与孩子重合的公共密钥,例如如果我们有孩子“99bf5a385a7babdab5 ...”,那么我们应该使用相应的公钥,好吧,但我们需要什么来比较它呢?请在您的回答中添加一些说明。 –

+1

我包含的Gihub回购为您提供了流程的全部细节。私人钥匙是私人的。他们不打算离开Firebase身份验证服务器。 'publicKeysObject [kidFromJWT]'的值将成为验证ID令牌的公钥。它是这个部分:“----- BEGIN CERTIFICATE ----- ... END CERTIFICATE ----- \ n”您需要公钥和ID标记字符串来验证其签名。也许这个库很有用:https://github.com/madf/jwtxx – bojeil

+0

谢谢,我发现'jwtxx'对我更有用。此外,现在我还有另一个与Firebase相关的问题,请[请检查它](https://stackoverflow.com/questions/45426837/get-users-phone-number-from-c-using-firebase)。 –