我开始使用 jose4j 针对它发布的 OpenedId Connect jwks 验证 Azure AD 发起的 jwt 令牌。一切都在一个宁静的环境中,这意味着没有状态。
为了避免每次收到请求时都从头开始重新创建所有对象,从而避免 jose4j 一次又一次地检索 jwks,我想使用缓存。
我的困境是要缓存什么:
- 序列化的 json jwks 字符串并调用带外验证,当它失败时获取一个新的 jwks。
- HttpsJwks
- HttpsJwksVerificationKeyResolver
- JwtConsumer
我在想 JwtConsumer 是最好的。如果这是一个不错的选择,有什么想法吗?
由于缓存在所有以多线程方式处理的 restfull 请求上共享(在 Karaf 中使用 cxf 蓝图),因此 JwtConsumer 应该是线程安全的。有谁知道是不是。
我正在考虑使用 ehcache 或使用 tid 作为键的 ConcurrentHashmap 进行缓存。