Проверка Firebase JWTs вручную — истечение срока действия сертификата и выяснение, какой из них использовать

# #google-cloud-platform #firebase-authentication #google-iam

Вопрос:

Я могу генерировать пользовательские токены JWT (подтвержденные общедоступными сертификатами моей учетной записи службы), а затем получать идентификационные токены также из SDK (подтвержденные общедоступными сертификатами Google).

В пользовательском токене JWT заголовок не содержит идентификатор ключа — означает ли это, что мне просто придется пробовать и ошибаться во всех трех, показанных в ссылке сертификата моей учетной записи службы?

И как для пользовательского токена, так и для токена идентификатора, как часто меняются сертификаты? Это определит, как долго я смогу кэшировать файл сертификата локально.

Комментарии:

1. Да, вам нужно включить идентификатор закрытого ключа в заголовок JWT. Как вы подписываете JWT? Вы сами используете закрытый ключ учетной записи службы или с помощью вызова API IAM?

2. Я спрашиваю только о проверке JWT. Токены, сгенерированные либо с помощью SDK, либо с помощью HTTP-вызовов, либо полностью локально, и в настоящее время идентичны.

3. Для проверки JWT требуется открытый ключ. Каждый метод подписи имеет свой собственный метод получения открытого ключа. На моем веб-сайте я написал статьи о подписании, JWTS, проверке и т. Д. Я только что написал один, в котором подробно рассказывается о подписании с помощью PHP и анализируется PHP SDK, но эти методы применимы к любому языку. У меня есть другие статьи на Python. Я написал еще одну статью об Azure/Microsoft, в которой приведены дополнительные технические подробности.

4. @JohnHanley Я это знаю — открытые ключи для токенов идентификаторов обычно принадлежат Google, а для пользовательских токенов-конкретно моей учетной записи службы. Я спрашиваю о 1. специфическом поведении пользовательских токенов, когда ресурс открытого ключа моей учетной записи службы показывает 3 ключа, только 1 из которых будет правильным, но сам пользовательский токен, похоже, не указывает, какой ключ. 2. Как часто меняются общие открытые ключи Google для токенов идентификации

5. Учетная запись службы не является ключом. Учетная запись службы-это удостоверение личности. В учетной записи службы вы можете создать до 10 ключей (есть еще один скрытый ключ, который Google использует для подписи с использованием удостоверения вашей учетной записи службы). Каждый ключ имеет идентификатор закрытого ключа. Я прокомментировал в ответе на этот вопрос, как часто Google генерирует новые ключи подписи Google. IIRC, это пять дней. Google не поворачивает ключи вашей учетной записи службы — вы должны сделать это вручную. Я не знаю, как часто Google поворачивает скрытый ключ, прикрепленный к вашей учетной записи службы.