Кэширование веб-ключей json, полученных из конечной точки метаданных openid connect

Azure AD B2C имеет конечную точку метаданных OpenID Connect, которая позволяет приложению получать информацию во время выполнения. Эта конечная точка содержит информацию о ключах подписи токена, содержимом токена и конечных точках. Мне нужно запросить эту конечную точку, чтобы получить jwk_uris. у jwk_uri есть uri для ключей, используемых для подписи jwt. Мне нужно кэшировать эти ключи не более 24 часов. Кто-нибудь может подсказать мне, как я могу сделать это весной? Есть ли API, который поддерживает это?

2 ответа

Решение

HttpsJwks будет кэшировать ключи в течение периода времени на основе заголовков директивы кэша или ответа http или setDefaultCacheDuration (long defaultCacheDuration), если заголовки директивы кэша ответа отсутствуют или указывают, что содержимое не должно кэшироваться.

Объект HttpsJwks может использоваться в сочетании с JwtConsumer/JwtConsumerBuilder и HttpsJwksVerificationKeyResolver, которые также будут вызывать новый вызов jwk_uri и реэстаблич кеш, если он встречает kid (Идентификатор ключа) в JWT, которого нет в кэшированном наборе ключей.

Возможное решение с использованием Spring Framework - объединить планировщик и кеш:

Другие вопросы по тегам