Firebase Admin SDK:从REST API验证ID令牌

时间:2018-07-07 23:50:52

标签: firebase firebase-authentication firebase-admin

我正在尝试通过使用Admin SDK中的verifyIdToken(idToken)方法来验证通过使用REST API登录进行身份验证而收到的ID令牌,但是我没有得到解码的令牌,而是得到了错误:

  

Firebase ID令牌具有不正确的“发行人”声明。应为“ https://securetoken.google.com/”,但获得“ https://identitytoolkit.google.com/”。请确保ID令牌与用于验证此SDK的服务帐户来自同一Firebase项目。有关如何操作的详细信息,请参见https://firebase.google.com/docs/auth/admin/verify-id-tokens。检索ID令牌。

正如我上面所说,我是从REST API获取令牌的,所以我希望它能起作用。 我从API得到的响应是这样的:

{
    "kind": "identitytoolkit#VerifyPasswordResponse",
    "localId": "pu0yjIc8tnR85X2gERdtLx684DK2",
    "email": "test@test.com",
    "displayName": "",
    "idToken": "<token-id>",
    "registered": true
}

这被视为自定义令牌吗?如果可以,该如何验证?

2 个答案:

答案 0 :(得分:2)

截至2018年9月,REST API返回的ID令牌的发行者似乎已从https://identitytoolkit.google.com/更改为https://securetoken.google.com/。而且我可以在firebase admin SDK中成功验证此id令牌。

[编辑]:firebase管理员SDK仍然失败,无法验证identitytoolkit的verifyAssertion REST API返回的 Facebook ID令牌。

答案 1 :(得分:0)

根据Google Developer

  • 调用tokeninfo端点
  

一种验证ID令牌以进行调试和小批量使用的简便方法   是使用tokeninfo端点。调用此端点涉及   额外的网络请求可以为您完成大部分验证,   但会带来一些延迟以及潜在的网络错误。

     

要使用tokeninfo端点验证ID令牌,请进行HTTPS   向端点发送POST或GET请求,然后在   id_token参数。例如,要验证令牌“ XYZ123”,请输入   以下GET请求:

https://www.googleapis.com/oauth2/v3/tokeninfo?id_token=XYZ123

{
 // These six fields are included in all Google ID Tokens.
 "iss": "https://accounts.google.com",
 "sub": "110169484474386276334",
 "azp": "1008719970978-hb24n2dstb40o45d4feuo2ukqmcc6381.apps.googleusercontent.com",
 "aud": "1008719970978-hb24n2dstb40o45d4feuo2ukqmcc6381.apps.googleusercontent.com",
 "iat": "1433978353",
 "exp": "1433981953",

 // These seven fields are only included when the user has granted the "profile" and
 // "email" OAuth scopes to the application.
 "email": "testuser@gmail.com",
 "email_verified": "true",
 "name" : "Test User",
 "picture": "https://lh4.googleusercontent.com/-kYgzyAWpZzJ/ABCDEFGHI/AAAJKLMNOP/tIXL9Ir44LE/s99-c/photo.jpg",
 "given_name": "Test",
 "family_name": "User",
 "locale": "en"
}