Цель вопроса:
Я хотел бы проверить токен 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 учетной записи службы ... это странно. Кто-нибудь может помочь?