Grafana托管服务支持使用OAuth 2.0协议进行用户认证和应用授权。本文以阿里云系统模拟第三方应用为例介绍对接Grafana实现第三方应用登录的操作。

背景信息

OAuth(Open Authorization,开放授权)是一种开放协议,支持以简单和标准的方法为Web、移动或桌面应用程序进行安全授权,被授权的应用不需要使用用户名和密码即可访问受保护的信息。更多信息,请参见OAuth官方文档

用户自建系统在授权的前提下可以访问托管Grafana存储的各种信息。此处以阿里云系统授权登录托管Grafana为例,为您演示OAuth接入,其他产品账号授权的操作,请参见Grafana官方文档

基本流程

OAuth2.0

接下来将为您演示如何使用阿里云系统模拟上图的授权系统。下述步骤涉及的配置仅供参考,具体的系统配置属性在符合OAuth2.0标准下,以您的实际设置为准。

步骤一:创建应用

  1. 使用阿里云账号登录RAM控制台
  2. 在左侧导航栏,单击OAuth应用管理
  3. 企业应用页签,单击创建应用
  4. 创建应用面板,设置应用参数。
    1. 输入应用名称显示名称
    2. 选择应用类型
      • WebApp: 指基于浏览器交互的网络应用。
      • NativeApp:指操作系统中运行的本地应用,主要为运行在桌面操作系统或移动操作系统中的应用。
      • ServerApp:指直接访问阿里云服务,而无需依赖用户登录的应用,目前仅支持基于SCIM协议的用户同步应用。示例请参见通过SCIM协议将企业内部账号同步到阿里云RAM
    3. 设置访问令牌有效期时长。
      访问令牌有效期范围:900秒(15分钟)~10,800秒(3小时)。默认值为3,600秒。
    4. 对于WebApp和NativeApp,设置刷新令牌有效期回调地址
      • 刷新令牌有效期范围:7,200秒(2小时)~31,536,000秒(1年)。默认值为2,592,000秒。
      • 回调地址为Grafana工作区的连接地址加/login/generic_oauth后缀,例如http://[Grafana连接地址:端口号]/login/generic_oauth。您可以在工作区信息页面查看Grafana工作区的连接地址和端口号,更多信息,请参见工作区信息
  5. 单击保存

步骤二:添加范围

  1. 企业应用页签,单击目标应用名称。
    说明 在应用详情页面的基本信息区域可以查看应用ID,应用ID在步骤四设置参数时需要使用。
  2. 应用OAuth范围页签,单击添加OAuth范围
  3. 添加OAuth范围面板,选择添加profile范围。
    添加profile
  4. 单击确定

步骤三:创建密钥

  1. 在目标应用详情页面,单击应用密钥页签,然后单击创建密钥
  2. 创建应用密钥对话框,查看并复制创建成功的应用密钥,然后单击关闭
    注意
    • 应用密钥内容仅在创建时可见,不支持查询,请及时保存。
    • 每个应用最多允许创建2个应用密钥。

步骤四:修改工作区参数

  1. 登录ARMS控制台
  2. 在左侧导航栏单击Grafana托管服务
  3. 在顶部菜单栏,选择地域。
  4. Grafana托管服务页面,单击目标工作区ID或右侧操作列的管理
  5. 在左侧导航栏单击参数设置
  6. 在左侧参数列表选择auth.generic_oauth,然后单击修改参数
  7. 参考以下配置,修改参数的运行参数,然后单击保存并生效
    name = Alibaba
    enabled = true
    allow_sign_up = true
    client_id = {应用ID}      //您可以在基本信息页面查看应用ID。
    client_secret = {步骤三中创建的应用密钥}
    scopes = openid profile
    auth_url = https://signin.aliyun.com/oauth2/v1/auth
    token_url = https://oauth.aliyun.com/v1/token
    api_url = https://oauth.aliyun.com/v1/userinfo
    email_attribute_path=login_name
  8. 在左侧参数列表选择server,然后单击修改参数
  9. 参考以下配置,修改参数的运行参数,然后单击保存并生效
    root_url = http://[Grafana连接地址:端口号]
    说明 您可以在工作区信息页面查看Grafana工作区的连接地址和端口号。