当前位置: 首页 > 知识库问答 >
问题:

如何在restful环境中缓存Jose4j jwks密钥集

那博瀚
2023-03-14

我开始使用jose4j根据它发布的OpenedId Connect jwks验证Azure AD原始jwt令牌。所有这些都在一个宁静的环境中,这意味着没有状态。

为了避免每次请求传入时从头开始重新创建所有对象,从而避免jose4j一次又一次地检索jwk,我希望使用缓存。

我面临的困境是缓存什么:

  1. 序列化的json jwks字符串,这样做称为带外验证,失败时获取新的jwks

我想JwtConsumer是最好的。如果这是一个好的选择,有什么想法吗?

由于缓存共享在所有restful请求上,这些请求以多线程方式处理(在Karaf中使用cxf蓝图),Jwt消费者应该是线程安全的。任何人都知道它是否是。

我正在考虑使用ehcache进行缓存,或者使用tid作为键的ConcurrentHashmap进行缓存。

共有1个答案

郭盛
2023-03-14

JwtConsumer是线程安全的(只要使用的任何自定义验证器或自定义程序也是线程安全的)。但是,缓存和重用HttpsJwks对象是您将获得绝大多数好处的地方,因为它在内部缓存从jwksendpoint检索到的密钥。坚持使用HttpsJwks将阻止jose4j一次又一次地检索jwksendpoint的内容。

 类似资料:
  • 问题内容: 我需要将2个密钥存储到KeyStore中,这是相关代码: 尽管我得到了执行,但“私钥必须带有证书链” 那到底是什么?以及我将如何生成它? 问题答案: 您还需要提供私钥条目的证书(公钥)。对于由CA签名的证书,链是CA的证书和最终证书。对于自签名证书,您只有自签名证书。 示例: 要生成证书,请点击以下链接: 示例:

  • 我有一个使用Spring缓存注释的Spring Boot应用程序。现在我想迁移到JSR-107(JCache)注释。 这是我的方法: 我希望我的新方法是这样的: 计算器输入类: @CacheKey注释指示spring将整个CalculatorInput对象存储为Key。我只想使用CalculatorInput类的属性id作为键。 我如何创建一个缓存键(就像我在Spring缓存注释中所做的那样),但

  • 我按照web上一些教程使用redis设置Spring缓存,

  • 对于PGP想要使用的签名和加密密钥,我是否可以使用2个JCE、RSA或DSA keypairs?把它们保存在密钥库中,当我想使用这些密钥时,只需按需重建PGP基础结构?

  • 我们正在使用.NET的StackExchange Redis客户端。 PS:我们尝试使用廉价的250GB(共享基础设施),但性能非常慢。读操作在600-800ms之间是一致的。不加载(对于一个~300KB的对象)。升级到专用的1GB服务将其更改为30-40毫秒。在这里查看更多:带有Azure Redis的StackExchange.Redis速度慢或引发超时错误

  • 我有一个Spring应用程序,它使用MyBatis进行持久化。我使用ehcache是因为速度对于这个应用程序很重要。我已经设置并配置了MyBatis和Ehcache。我使用一个名为“mybatis”的单一缓存,因为否则为每个实体创建单独的缓存将是荒谬的。 这是我的电子缓存。xml。 这是我的mybatis映射器界面的一个示例。 因为我有一个共享缓存,所以我需要一种方法使我的密钥对域对象是唯一的。作