如何通過jwt授權登錄grafana


** 前言 **

之前了解過shiro的授權登錄,也使用在了項目中,最近領導有新需求要使用grafana和普羅米修斯,需要把之前的jwt對接到grafana。由於沒了解過jwks,踩過很多坑。

准備

grafana基礎相關准備:

  1. 首先查看grafana文檔,有oauth和最新的jwt,我們使用的jwt, 鏈接地址
  2. JWK在OIDC中的主要作用是為JWT(id_token)提供加密密鑰,用於加密/解密或簽名/驗簽,是JSON格式的數據, 鏈接地址
  3. 自己項目的jwks保存的json文件地址。
  4. grafana的下載地址,jwt支持8.0+版本,鏈接地址
  5. jwt在線解密地址,鏈接地址
  6. 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錯誤

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM