Невозможно проверить токен Firebase - невозможно найти соответствующий ключ publi c - PullRequest
0 голосов
/ 01 апреля 2020

Цель вопроса:

Я хотел бы проверить токен JWT на своем внутреннем сервере для мер безопасности, но я не могу этого сделать, потому что не могу найти подходящую публикацию c ключ для проверки этого токена, ни в моей консоли Firebase, ни в моей консоли учетных записей служб.

Имейте в виду:

Прежде чем что-либо реализовывать в моем бэк-энде для проверки токена JWT, я сначала тестирую на https://jwt.io/#debugger -io

Позвольте мне уточнить:

Как вы все знаете, Firebase поддерживает Аутентификация телефона .

Я реализовал эту функцию - проверку подлинности телефона - в моем Android мобильном приложении, и оно отлично работает. Что я имею в виду, работая отлично, так это то, что я могу получить код SMS и легко проверить номер.

Однако по какой-то причине мне нужно отправить этот токен JWT из моего android приложения (которое я получил через user.getToken()) на свой внутренний сервер, поэтому в этом случае мне нужен publi c ключ для проверки этого токена из серверной части (конечно, для обеспечения безопасности).

Обратите внимание, что токен JWT, полученный из моего приложения Android, имеет определенный заголовок, содержащий kid, который всегда имеет такое же значение. Но мне никогда не удавалось сопоставить это значение с какими-либо kid в моих учетных записях службы, поэтому я попытался использовать все публичные c ключи, имеющиеся в моей учетной записи службы, в попытке проверить токен, но безуспешно.

Любая причина, почему kid внутри токена JWT в моем приложении android отличается от всех kid, которые существуют в моих учетных записях служб? Потому что я думаю, что причина, по которой я не могу проверить, заключается в том, что я не могу получить соответствующий ключ publi c. Может быть и другая причина, конечно, но это все, что я мог придумать.

РЕДАКТИРОВАТЬ:

Я нашел что-то странное, что если я посещу это: https://www.googleapis.com/robot/v1/metadata/x509/securetoken@system.gserviceaccount.com

Я получаю ЖЕ kid, что получил в JWT. Что: 83a738e21b91ce24f43480fe6fee4258c84db4c5, так что теперь я знаю, откуда у меня kid, но я не знаю, почему я получаю именно этот. Так как этот является общим, а не для конкретной c учетной записи службы ... это странно. Кто-нибудь может помочь?

...