中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

keycloak~jwks-rsa中使用的設計模(mo)式

com.auth0.jwk組織下面的jwks-rsa包,主要實現的是通過公鑰對jwt的簽名進行驗證,在這個包中,它使用了包裝器的設計模式,對默認的jwks提供者添加了一緩存的支持,通過建立一個GuavaCachedJwkProvider類,傳入一個默認的UrlJwkProvider來將這個Provider進行包裝(zhuang),讓(rang)它具有(you)緩存的能力!

包裝器模式

包(bao)(bao)裝(zhuang)(zhuang)器模式(shi)(Wrapper Pattern)是一種結(jie)構型設計模式(shi),它(ta)允(yun)許在(zai)不改變(bian)原(yuan)始(shi)(shi)對(dui)象接口(kou)的情況下,動態(tai)地向對(dui)象添加新的功能(neng)。包(bao)(bao)裝(zhuang)(zhuang)器模式(shi)通過創建一個包(bao)(bao)裝(zhuang)(zhuang)類(lei),將原(yuan)始(shi)(shi)對(dui)象作為包(bao)(bao)裝(zhuang)(zhuang)類(lei)的成(cheng)員,并在(zai)包(bao)(bao)裝(zhuang)(zhuang)類(lei)中定義額(e)外的行為或功能(neng)來(lai)擴展原(yuan)始(shi)(shi)對(dui)象的功能(neng)。

以(yi)下(xia)是包裝器模式的一些關鍵(jian)角色和(he)特點:

  • Component(組件):定義了被包裝對象的接口(kou),可(ke)以是一個抽象類或接口(kou)。

  • ConcreteComponent(具體組件):實現了Component接口,是被(bei)包裝(zhuang)的原始對(dui)象。

  • Wrapper(包裝器):也稱為(wei)Decorator,持有一(yi)個指向Component的(de)引用(yong),并實現了與Component相同的(de)接口。在包裝器中可以添加額外(wai)的(de)功能,以增強(qiang)原始(shi)對象的(de)行(xing)為(wei)。

包裝器模式(shi)的優點包括:

  1. 靈活性:可以動態地為對象添加新的功能,而無需修改原始對象的代碼。
  2. 遵循開閉原則:可以在不修改現有代碼的情況下擴展對象的功能。
  3. 簡化代碼:將功能分散到多個小類中,避免了單個類變得龐大復雜。

總的來(lai)說(shuo),包(bao)裝器模式可(ke)以幫助我們(men)在運行時動態地為對(dui)象添加新的功能(neng),同時保(bao)持代碼(ma)的靈活性和可(ke)維護性。常見的應用場景包(bao)括(kuo)日志記(ji)錄、緩(huan)存、加密等功能(neng)的動態添加。

jwks-rsa中的體現

  • 組件 JwkProvider
  • 具體組件 UrlJwkProvider
  • 包裝器
    • GuavaCachedJwkProvider 緩存能力
    • RateLimitedJwkProvider 限流能力

我們為UrlJwkProvider進行緩存的包裝

	/**
	 * 緩存包裝器.
	 * @throws MalformedURLException
	 * @throws JwkException
	 */
	@Test
	public void jwkReadCacheWrapper() throws MalformedURLException, JwkException {
		UrlJwkProvider jwkProvider = new UrlJwkProvider(new URL(jwksUrl));
		JwkProvider cachedJwkProvider = new GuavaCachedJwkProvider(jwkProvider);
		Jwk jwk = cachedJwkProvider.get("certsId");
		Algorithm algorithm = Algorithm.RSA256((RSAPublicKey) jwk.getPublicKey(), null);

		DecodedJWT jwt = JWT.decode(token);
		// check JWT is valid
		algorithm.verify(jwt);
	}

程序員的修養,多(duo)(duo)看好的開源框架,多(duo)(duo)思考(kao)與總結。

posted @ 2024-04-23 11:06  張占嶺  閱讀(136)  評論(0)    收藏  舉報