Ошибка конечных точек Google: у токена идентификатора Firebase неверное утверждение "aud" (аудитория). Ожидается ... но получил - PullRequest
1 голос
/ 27 января 2020

Я видел похожие вопросы, но мой вариант использования кажется другим. Позвольте мне объяснить.

  1. У меня ОДИН проект.
  2. Я использую Аутентификацию Firebase в проекте
  3. Я создал http 10 Cloud Cloud Function на основе Node JS на разные маршруты.

Используя Почтальон, я делаю POST-запрос к функции Cloud и использую маршрут login, передаю электронную почту и пароль и получаю токен в ответе.

Используя Почтальон, я делаю POST-запрос к функции Cloud и использую маршрут check, передавая токен из предыдущего запроса и аутентифицируя токен. Оно работает. Для этого я использую функцию admin.auth().verifyIdToken клиента администратора firebase.

Все, кажется, хорошо.

Теперь, когда я настраиваю конечную точку Google Cloud (в контейнере Google Cloud Run) в тот же проект и:

  1. Я не настроил ни одной опции ценных бумаг (пока) в файле yaml Firebase Stagger.

  2. Я могу POST-запрос к конечной точке Google Cloud, используя путь login, я получаю токен, как и раньше.

  3. Но когда я делаю POST-запрос с использованием конечной точки на путь check, Я получаю "У токена Firebase ID неверное утверждение" aud "(аудитория)". ошибка.

Я, кажется, перепробовал все варианты, предлагаемые другими на этих форумах. Я создал закрытый ключ из консоли Firebase и инициализировал им клиент администратора Firebase, и все же я получаю ту же ошибку, которая гласит: «Заявка предполагается для Project-Id, но она воспринимается как имя-функции», которое является частью того же проекта.

Я также настроил свою функцию node js с помощью cors (app.use(cors())), но та же ошибка сохраняется.

Я занимался этим последние 4- 5 дней, но, похоже, не выяснил, в чем именно заключается проблема и почему он не может принять вызов функции администратора клиента. Любой, кто даст мне направление, будет высоко оценен. Спасибо.

Ответы [ 2 ]

0 голосов
/ 11 февраля 2020

Да, ESP и ESPv2 автоматически переопределят заголовок Authorization новым токеном. Это для случая использования, когда серверная служба Cloud Run или облачная функция требуют аутентификации.

Вы можете отключить автоматическое переопределение токена c в x-google-backend, используя disable_auth.

https://cloud.google.com/endpoints/docs/openapi/openapi-extensions#jwt_audience_disable_auth

0 голосов
/ 01 февраля 2020

По моим наблюдениям, токен, который отправляется через заголовки запроса, изменяется сервером конечных точек Google перед его обработкой функциями Google, указанными в пути к файлу Yaml.

Я отправил токен в заголовке, а также в теле и обнаружил, что значения отличаются, сравнивая их.

Когда я использовал токен, отправленный через тело, клиент firebase-admin обнаружил, что он является действительным идентификатором, а когда я использовал токен из заголовка запроса, он выдал вышеуказанную ошибку.

...