Firebase Admin SDK: проверка идентификаторов токенов из REST API

Я пытаюсь проверить полученные токены Id, выполнив вход в REST API для аутентификации с помощью verifyIdToken(idToken) метод в Admin SDK, но вместо получения декодированного токена я получаю ошибку:

У токена Firebase ID есть неверное утверждение "iss" (эмитент). Ожидается " https://securetoken.google.com/" ", но получено" https://identitytoolkit.google.com/". Убедитесь, что маркер ID происходит из того же проекта Firebase, что и учетная запись службы, используемая для аутентификации этого SDK. См. https://firebase.google.com/docs/auth/admin/verify-id-tokens для получения подробной информации о том, как получить идентификационный токен.

Как я уже говорил выше, я получаю свой токен от REST API, поэтому я ожидал, что это сработает. Ответ, который я получаю от API, таков:

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

Это считается пользовательским токеном? если так, как я могу это проверить?

2 ответа

Решение

По словам разработчиков Google

  • Вызов конечной точки tokeninfo

Простой способ проверить токен ID для отладки и использования с небольшим объемом - это использовать конечную точку tokeninfo. Вызов этой конечной точки включает дополнительный сетевой запрос, который выполняет большую часть проверки за вас, но вносит некоторую задержку и возможность сетевых ошибок.

Чтобы проверить токен идентификатора с помощью конечной точки tokeninfo, выполните запрос HTTPS POST или GET к конечной точке и передайте свой токен ID в параметре 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"
}

По состоянию на сентябрь 2018 года эмитент идентификатора токена, возвращенного API REST, по-видимому, изменился с https://identitytoolkit.google.com/ в https://securetoken.google.com/, И я могу успешно проверить этот токен идентификатора в Firebase Admin SDK.

[Редактировать]: SDK администратора Firebase по-прежнему не может проверить токен идентификатора Facebook, возвращенный API REST verifyAssertion identitytoolkit.

Другие вопросы по тегам