Проверка Google OAuth JWT локально

Я разрабатываю веб-сайт с логином через Google. как только пользователь вошел в систему, я получаю токен идентификатора из google js api и отправляю его на сервер для его проверки.

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

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

Я думаю об обновлении JWK каждый раз, когда не могу найти правильный JWK для соответствующего JWT "kid". но это приводит к отправке HTTPS-запроса в Google каждый раз, когда JWK с соответствующим «ребенком» не найден.

это будет уязвимость? Есть ли статический период времени, когда я должен обновлять общедоступные JWK Google?

Может кто-то помочь мне с этим ? и укажи мне правильное направление, если я делаю что-то не так

Спасибо


person Bhanuka Yd    schedule 30.06.2016    source источник


Ответы (1)


Смысл публикации ключей на конечной точке, защищенной TLS, заключается в том, что вы можете быстро их менять. Google делает это. Вам нужно будет получать новые ключи каждый раз, когда приходит токен с kid, который ранее не кэшировался. В этом нет уязвимости, если вы убедитесь, что вы проверили сертификат сервера TLS, который Google представляет на конечной точке JWK. Вероятно, есть статический интервал ротации, который использует Google, но попытка его использования только увеличит количество загрузок (в отличие от «точно в срок»), и Google может изменить интервал по своему усмотрению.

person Hans Z.    schedule 30.06.2016
comment
так что обычный HTTPS-запрос к конечной точке с HTTP-клиентом Apache должен проверять его обряд? - person Bhanuka Yd; 01.07.2016