ToB企服应用市场:ToB评测及商务社交产业平台

标题: keycloak~jwks-rsa中使用的计划模式 [打印本页]

作者: 立山    时间: 2024-5-18 02:34
标题: keycloak~jwks-rsa中使用的计划模式
com.auth0.jwk组织下面的jwks-rsa包,重要实现的是通过公钥对jwt的签名举行验证,在这个包中,它使用了包装器的计划模式,对默认的jwks提供者添加了一缓存的支持,通过建立一个GuavaCachedJwkProvider类,传入一个默认的UrlJwkProvider来将这个Provider举行包装,让它具有缓存的本领!
包装器模式

包装器模式(Wrapper Pattern)是一种结构型计划模式,它允许在不改变原始对象接口的情况下,动态地向对象添加新的功能。包装器模式通过创建一个包装类,将原始对象作为包装类的成员,并在包装类中定义额外的举动或功能来扩展原始对象的功能。
以下是包装器模式的一些关键脚色和特点:
包装器模式的优点包括:
总的来说,包装器模式可以帮助我们在运行时动态地为对象添加新的功能,同时保持代码的灵活性和可维护性。常见的应用场景包括日志记录、缓存、加密等功能的动态添加。
jwks-rsa中的体现

我们为UrlJwkProvider举行缓存的包装
  1.         /**
  2.          * 缓存包装器.
  3.          * @throws MalformedURLException
  4.          * @throws JwkException
  5.          */
  6.         @Test
  7.         public void jwkReadCacheWrapper() throws MalformedURLException, JwkException {
  8.                 UrlJwkProvider jwkProvider = new UrlJwkProvider(new URL(jwksUrl));
  9.                 JwkProvider cachedJwkProvider = new GuavaCachedJwkProvider(jwkProvider);
  10.                 Jwk jwk = cachedJwkProvider.get("certsId");
  11.                 Algorithm algorithm = Algorithm.RSA256((RSAPublicKey) jwk.getPublicKey(), null);
  12.                 DecodedJWT jwt = JWT.decode(token);
  13.                 // check JWT is valid
  14.                 algorithm.verify(jwt);
  15.         }
复制代码
程序员的修养,多看好的开源框架,多思考与总结。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4