全部产品

OAuth2对接grafana最佳实践

概述

作为IDaaS平台,IDaaS支持基于标准OAuth2协议,实现从IDaaS到grafana单点登录

本文主要包含以下内容:

  • 时序说明 - 时序图说明,以及交互

  • 主要流程 - OAuth2配置grafana主要流程

  • 操作步骤 - 详细配置说明

  • FAQ - 常见问题以及其对策

时序说明

场景:用户从grafana发起单点登录时序

2

主要流程

Step1 创建OAuth2应用

Step2 授权OAuth2应用

Step3 子账户关系配置

Step4 获取应用信息

Step5 grafana配置

Step6 发起登录

操作步骤

Step1 创建OAuth2应用:

1、首先以IT管理员账号登录云盾IDaaS管理平台。具体操作请参考 IT管理员指南-登录 。

2、点击左侧导航栏应用>添加应用选择右侧OAuth

1

3、选择OAuth2应用模板点击添加应用

34、Redirect URI :http://{grafana domin}/login/generic_oauth {}替换成grafana的域名地址

GrantType : 选择authorization_code

其他参数默认即可,有需要也可按照实际需要修改

Step2 OAuth2应用授权

应用授权:选择应用(搜索应用)、选择组织机构(搜索组织机构)、勾选授权即可

5

Step3 子账户设

点击左侧导航栏应用>应用列表>应用子账户 查看 OAuth2 , 添加子账户对应关系。

主账户添加当前已经授权应用的IDaaS账户,子账户对应grafana的邮箱用户,需要一一对应。

说明

子账户一定需要填写邮箱用户。

6 12132

Step4 获取应用信息

点击左侧导航栏应用>应用列表 查看 OAuth2 应用详情, 获得Client Id、Client Secret、Authorize URL.

78Step5 grafana配置

1.grafana配置文件增加generic_oauth配置

vim /etc/grafana/grafana.ini

#generic_oauth配置

[auth.generic_oauth]

enabled = true

#IDaaS应用Client Id

client_id =57064exxxxxxxxxx

#IDaaS应用Client Secret

client_secret =PTsclAxxxxxxxxxxx

scopes = read

#IDaaS授权url,需要替换为自己的实际的IDaaS的域名

auth_url =http://xxxxxx.login.aliyunidaas.com/oauth/authorize

#IDaaS获取token url,需要替换为自己的实际的IDaaS的域名

token_url =http://xxxxxx.login.aliyunidaas.com/oauth/token

#IDaaS获取 user info url,需要替换为自己的实际的IDaaS的域名

api_url =http://xxxxxx.login.aliyunidaas.com/api/bff/v1.2/oauth2/userinfo

allow_sign_up = true

#获取邮箱节点JMEpath

email_attribute_path=data.email

[server]

#这里的root_url需要修改为真实的地址,因为授权回调的redirect_uri使用该地址

root_url=http://xxxxxxx:3000

2. 重启grafana

示例:/etc/init.d/grafana-server restart

根据自己实际安装路径来

Step6 grafana发起OAuth登录

说明

grafana使用OAuth2对接,只支持grafana页面发起登录,不支持 IDaaS发起

在grafana登录页面点击“Sing in with OAuth”发起认证登录

9

输入IDaas账号进行登录

12312

认证成功

123

FAQ

1. 代理模式下报错如下

OAuth认证错误:error="invalid_grant", error_description="Invalid redirect:http://localhost:3000/login/generic_oauthdoes not match one of the registered values: [http(https)://域名/login/generic_oauth]"。

代理模式(nginx或者apache),需要在grafana.ini中修改 redirect URI。因为代理模式下,不认识CALLBACK

Redirect URI :http://{grafana domin}/login/generic_oauth {}替换成grafana的域名地址

2. 子账户对应关系是否需要一对一

是的。

3. Grafana 支持的版本

需要grafana7.2+版本才能兼容此OAuth2的配置。