如何通过jwt授权登录grafana
** 前言 **
之前了解过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错误
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。