Azure AD B2C具有OpenID Connect元數據端點,該端點允許應用程序在運行時獲取信息。此端點具有有關令牌簽名密鑰,令牌內容和端點的信息。我需要查詢此端點以獲取jwk_uris。 jwk_uri具有用於簽署jwt的密鑰的uri。我需要緩存這些密鑰不超過24小時。任何人都可以建議我如何在春季做到這一點?有沒有支持這個的API?緩存從openid獲取的json Web密鑰連接元數據端點
回答
HttpsJwks將根據緩存指令標頭或http響應或setDefaultCacheDuration(long defaultCacheDuration)緩存密鑰一段時間,如果響應的緩存指令標頭不存在或者指示內容不應該被緩存。
的HttpsJwks對象可以與JwtConsumer/JwtConsumerBuilder and HttpsJwksVerificationKeyResolver在JWT不在緩存集合一起,也將作出新的調用jwk_uri
和reeastablitsh緩存中,如果遇到kid
(密鑰ID)使用的鑰匙。
感謝您的回覆。我正在使用雙通道JWT消耗並使用新的HttpsJwksVerificationKeyResolver(httpsJkws)傳遞驗證密鑰;我能夠處理這些索賠,但我對驗證簽名感到困惑。我是否需要做更多的驗證簽名或HttpsJwksVerificationKeyResolver內部驗證簽名也。 – Shiv
我在驗證聲明和驗證簽名之間感到困惑。這些都是由HttpsJwksVerificationKeyResolver處理的嗎? – Shiv
JwtConsumer類既對聲明進行驗證,也對簽名進行驗證(當然,這取決於如何使用JwtConsumerBuilder創建它)。 HttpsJwksVerificationKeyResolver從jwk_uri的JWKs中查找適當的鍵,查看JWT的標題,並將其提供給JwtConsumer,JwtConsumer使用該鍵驗證簽名。如果簽名有效,則檢查索賠。使用兩遍JWT消耗,所有驗證都會在第二階段進行。另外請注意,您需要重用HttpsJwks實例才能獲得緩存優勢。 –
使用Spring框架將調度和緩存結合了可能的解決方案:
- 使用spring cache緩存jwks鍵檢索服務
- 使用spring task scheduler驅逐鍵每個24小時
- 1. 從JCS高速緩存獲取密鑰
- 2. SQL查詢從密鑰連接的兩行中獲取數據
- 3. 從webHttpBinding端點獲取元數據
- 4. 根據密鑰從JSONObject獲取數據
- 5. 從API密鑰獲取數據以保存到數據庫中
- 6. Openid連接端點之間的通信
- 7. 從openID獲取數據
- 8. 從JSON獲取密鑰和值
- 9. 從JSON獲取密鑰和值
- 10. 使用排序從JSON獲取密鑰
- 11. 如何從以下json獲取密鑰
- 12. 獲取JSON密鑰名稱
- 13. Android獲取JSON密鑰值
- 14. 獲取JSON密鑰錯誤
- 15. 獲取Flickr JSON API密鑰
- 16. 如何從Mule獲取高速緩存事件密鑰
- 17. 從json中提取密鑰
- 18. 如何從GunDb節點獲取密鑰
- 19. Java:從編碼密鑰獲取密鑰
- 20. 從數據存儲區獲取密鑰(GAE)
- 21. 解密JSON字典並獲取密鑰
- 22. 從橋接表中獲取組密鑰
- 23. 如何連接web服務並獲取json數據?
- 24. 加密PostgreSQL數據庫並從Web應用程序用戶獲取密鑰
- 25. LUIS端點密鑰
- 26. Angular 2使用動態密鑰從json數組中獲取密鑰和值
- 27. Http客戶端不能從Web服務器獲取JSON數據
- 28. 從https客戶端獲取Json數據
- 29. 從電腦連接的交換機的端口獲取數據
- 30. Django緩存在獲得參數時存儲不同的密鑰
到目前爲止你有嘗試過什麼嗎? – UditS
我仍然在做我的研究,但我還沒有找到任何可以用於緩存的內容。我提到[link](https://bitbucket.org/b_c/jose4j/wiki/Home)。我還發現[鏈接](http://www.programcreek.com/java-api-examples/index.php?source_dir=identity-providers-examples-master/OpenID-Connect-MITREid-Java-Spring-Server/openid -connect-common/src/main/java/org/miter/jwt/signer/service/impl/JWKSetCacheService.java)但不確定是否應該使用它 – Shiv
org.jose4j.jwk.HttpsJwks會進行緩存。所以我想我可以使用jose4j來解決我的問題嗎?但是我沒有得到任何有關HttpsJwks的詳細文檔。誰可以幫我這個事? – Shiv