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.