概述
作为IDaaS平台,IDaaS支持基于标准OAuth2协议,实现从IDaaS到grafana单点登录
本文主要包含以下内容:
时序说明 - 时序图说明,以及交互
主要流程 - OAuth2配置grafana主要流程
操作步骤 - 详细配置说明
FAQ - 常见问题以及其对策
时序说明
场景:用户从grafana发起单点登录时序

主要流程
Step1 创建OAuth2应用
Step2 授权OAuth2应用
Step3 子账户关系配置
Step4 获取应用信息
Step5 grafana配置
Step6 发起登录
操作步骤
Step1 创建OAuth2应用:
1、首先以IT管理员账号登录云盾IDaaS管理平台。具体操作请参考 IT管理员指南-登录 。
2、点击左侧导航栏应用>添加应用选择右侧OAuth

3、选择OAuth2应用模板点击添加应用。
4、Redirect URI :http://{grafana domin}/login/generic_oauth {}替换成grafana的域名地址
GrantType : 选择authorization_code
其他参数默认即可,有需要也可按照实际需要修改
Step2 OAuth2应用授权
应用授权:选择应用(搜索应用)、选择组织机构(搜索组织机构)、勾选授权即可

Step3 子账户设置
点击左侧导航栏应用>应用列表>应用子账户 查看 OAuth2 , 添加子账户对应关系。
主账户添加当前已经授权应用的IDaaS账户,子账户对应grafana的邮箱用户,需要一一对应。
子账户一定需要填写邮箱用户。


Step4 获取应用信息
点击左侧导航栏应用>应用列表 查看 OAuth2 应用详情, 获得Client Id、Client Secret、Authorize URL.
Step5 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”发起认证登录

输入IDaas账号进行登录

认证成功

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]"。
Redirect URI :http://{grafana domin}/login/generic_oauth {}替换成grafana的域名地址
2. 子账户对应关系是否需要一对一
是的。
3. Grafana 支持的版本
需要grafana7.2+版本才能兼容此OAuth2的配置。