В настоящее время я разрабатываю бэкэнд Swift с использованием Vapor. Мой клиент iOS использует новую функцию iOS 13 «Войти через Apple». Когда пользователь входит в систему, я получаю токен идентификации (токен доступа), который является действительным токеном JWT, подписанным Apple. Он отправляется на сервер во всех текущих сеансах связи для проверки подлинности некоторых маршрутов, предоставляемых сервером.
На сервере я хотел бы подтвердить, что отправленный токен действительно был подписан Apple и не был специально создан каким-либо злоумышленником путем проверки подписи токена. Apple предоставляет конечную точку HTTP для получения открытого ключа: Документация Apple.
Однако я не уверен в том, как часто мне приходится запрашивать эту конечную точку, чтобы получить модуль и показатель степени из API и построить открытый ключ для последующей проверки подписи. Достаточно ли запросить это один раз и сохранить открытый ключ на сервере, чтобы использовать это, или мне нужно будет запросить конечную точку HTTP в моем промежуточном программном обеспечении перед проверкой подписи (для каждого защищенного маршрута)?
В принципе, я не уверен, будут ли время от времени меняться модуль и экспонента.