Я использую аутентификацию и функции firebase для своего проекта. Моя база данных API принадлежит другому провайдеру. Мне нужно сделать несколько обращений к моей базе данных из функций «admin». Мой сервер настроен для проверки токенов jwt firebase с помощью следующей конфигурации (настраиваемая проверка, нельзя использовать администратора firebase):
{
"type":"RS256",
"jwk_url":"https://www.googleapis.com/service_accounts/v1/jwk/[email protected]",
"audience":"<firebase-project-id>",
"issuer":"https://securetoken.google.com/<firebase-project-id>"
}
Это проверяет токены идентификатора правильно, однако не может проанализировать пользовательские токены, созданные admin.auth().createCustomToken
, со следующей ошибкой:
Не удалось проверить JWT: JWSError JWSInvalidSignature
Следовательно, я не могу использовать пользовательские токены для аутентификации своих облачных функций, если я не могу их как-то проверить?
Вот как генерируется мой токен функции:
const uid = "function-worker";
const claims = {
"https://hasura.io/jwt/claims": {
"x-hasura-default-role": "function",
"x-hasura-allowed-roles": ["function"],
"x-hasura-user-id": uid,
},
};
const jwt = await admin.auth().createCustomToken(uid, claims);
Сгенерированный jwt
затем отправляется на мой сервер hasura согласно https://github.com/hasura/graphql-engine/tree/master/community/sample-apps/firebase-jwt
Следующее выше руководство работает для токенов id, но не для пользовательских токенов. Более подробное объяснение того, как сервер hasura обрабатывает проверку jwt, можно найти здесь https://github.com/hasura/graphql-engine/blob/dcab20a5ee388ebd754a7828de1309a3a2e0eaee/docs/graphql/manual/auth/authentication/jwt.rst#generate-jwt-config