Подтверждение Google OAuth JWT локально
Я разрабатываю веб-сайт, который имеет логин с Google. как только пользователь вошел в систему, я получаю токен id из google js api и отправляю на сервер, чтобы проверить это.
Я могу легко проверить и выполнить процесс с помощью конечной точки информации о токене Google, но это приведет к большому количеству запросов HTTPS, поскольку он отправляет запрос HTTPS в Google каждый раз, когда пользователь входит в систему с помощью Google.
Поэтому я проверяю JWT (идентификатор токена) локально на сервере, я успешно проверил JWT без проблем. Проблема, с которой я сталкиваюсь, заключается в том, что я должен кэшировать публичные JWK Google внутри программы.
Я думаю об обновлении JWK каждый раз, когда не могу найти правильный JWK для соответствующего "ребенка" JWT. но это приводит к отправке HTTPS-запроса в Google каждый раз, когда JWK с соответствующим "ребенком" не найден.
это будет уязвимость? Есть ли период времени, когда я должен обновлять общедоступные JWK Google?
Может кто-то помочь мне с этим? и укажи мне правильное направление, если я делаю что-то не так
Спасибо
1 ответ
Смысл публикации ключей на защищенной конечной точке TLS заключается в том, что вы можете быстро их вращать. Google делает это. Вам нужно будет получать новые ключи каждый раз, когда токен приходит с kid
это не было кэшировано раньше. В этом нет никакой уязвимости, если вы убедитесь, что вы проверяете сертификат сервера TLS, который Google представляет на конечной точке JWK. Вероятно, существует статический интервал ротации, который использует Google, но пытается использовать его, что только увеличит количество загрузок (в отличие от "точно вовремя"), и Google может изменить интервал по желанию.