У токена Firebase ID есть неверное утверждение "aud" (аудитория) - PullRequest
0 голосов
/ 07 марта 2020

У меня есть внешний интерфейс, который размещается через Firebase. Код использует аутентификацию Firebase и получает токен через user.getIdToken(). Согласно ответам на подобные вопросы, это путь к go.

. Бэкэнд записывается в Python, ожидает токен и проверяет его с помощью firebase_admin SDK. На моей локальной машине я установил для FIREBASE_CONFIG путь к firebase-auth.json, который я экспортировал из своего проекта. Все работает как положено.

Теперь я развернул свой бэкэнд через Google AppEngine. Здесь я настраиваю FIREBASE_CONFIG как строку JSON в app.yaml. Код выглядит следующим образом:

runtime: python37

env_variables:
    FIREBASE_CONFIG: '{
        "type": "service_account",
        "project_id": "[firebase-project-name]",
        ...

Бэкэнд регистрирует значение FIREBASE_CONFIG при запуске. В журналах я вижу строку JSON, а { - первый символ. Так что все выглядит хорошо для меня. Но если я получаю токен от клиента и пытаюсь проверить его (тот же код, который работает локально), он получит эту ошибку:

У токена Firebase ID есть неверное утверждение "aud" (аудитория). Ожидается «[backend-appengine-project-name]», но получено «[firebase-project-name]». Удостоверьтесь, что ID-токен происходит из того же проекта Firebase, что и учетная запись службы, используемая для аутентификации этого SDK.

Может кто-нибудь объяснить, что мне не хватает и как его решить?

1 Ответ

0 голосов
/ 07 марта 2020

Сообщение об ошибке звучит так, будто пользователь вашего клиентского приложения вошел в другой проект Firebase, с которым работает ваш бэкэнд. Принимая сообщение об ошибке буквально, клиент использует «backend-appengine-project-name», но ваш бэкэнд использует «firebase-project-name». Убедитесь, что они оба настроены на использование одного и того же проекта с одинаковым идентификатором проекта.

...