** 前言 **
之前了解過shiro的授權登錄,也使用在了項目中,最近領導有新需求要使用grafana和普羅米修斯,需要把之前的jwt對接到grafana。由於沒了解過jwks,踩過很多坑。
准備
grafana基礎相關准備:
- 首先查看grafana文檔,有oauth和最新的jwt,我們使用的jwt, 鏈接地址
- JWK在OIDC中的主要作用是為JWT(id_token)提供加密密鑰,用於加密/解密或簽名/驗簽,是JSON格式的數據, 鏈接地址
- 自己項目的jwks保存的json文件地址。
- grafana的下載地址,jwt支持8.0+版本,鏈接地址
- jwt在線解密地址,鏈接地址
- jwk在線生成json地址,鏈接地址
計划
首先確定jwt需要加密的方式,例:HS256生成后的json:
{
"kty":"oct",
"kid":"b84d5063-4a59-4276-8e15-397467c15086",
"k":"ITPXt5oeLPBHS-40WBW31uOc5ML-zxSS_YEM8hDHmVc",
"alg":"HS256"
}
開始
1.根據生成的json數據copy到json文件,並設置下載地址:https://xxx/static/xxx.json
2.修改grafana的配置--grafana.ini,修改后重啟grafana:
3.在線解密網站生成測試token,(需要kid和secret及PAYLOAD里的sub作為grafana用戶名)
4.使用測試token測試grafana接口是否可以驗證通過,不返回401即登錄成功
5.修改項目里jwt生成方式及加密方式,即可使用shiro生成token登錄grafana。
踩坑歷程
1.版本問題,低於8.0加上配置上,未生效
2.kid問題,header里未添加kid,報錯 "not found code "
3.secret問題,簽名需要添加json里對應的k的加密簽名,報錯解密失敗
4.sub問題,PAYLOAD需要sub對應grafana的用戶名,報錯context錯誤
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。