如何通过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错误

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。

posted @ 2021-06-17 15:20  yinxiangyang  阅读(3161)  评论(1编辑  收藏  举报