配置通用 OAuth 身份验证
Grafana 中有多种身份验证方法可用于验证用户身份。身份验证配置决定了哪些用户可以访问 Grafana 以及他们可以使用的登录方法。您还可以配置 Grafana 以基于身份验证提供程序集成返回的信息,自动更新用户在 Grafana 中的角色和团队成员资格。
在决定身份验证方法时,务必考虑您当前的身份和访问管理系统以及您需要的特定身份验证和授权功能。有关可用身份验证选项及其支持的功能的完整列表,请参阅配置身份验证。
Grafana 为以下身份验证提供程序提供 OAuth2 集成
如果您的 OAuth2 提供程序未列出,则可以使用通用 OAuth 身份验证。
本主题介绍如何使用不同的方法配置通用 OAuth 身份验证,并包含使用特定 OAuth2 提供程序的通用 OAuth 设置示例。
开始之前
要遵循本指南
- 请确保您知道如何使用 OAuth2 提供程序创建 OAuth2 应用程序。有关更多信息,请查阅 OAuth2 提供程序的文档。
- 请确保您的身份提供程序返回与 OpenID UserInfo 兼容的信息,例如
sub
声明。 - 如果您正在使用刷新令牌,请确保您知道如何使用 OAuth2 提供程序设置它们。有关更多信息,请查阅 OAuth2 提供程序的文档。
注意
如果用户在 Azure AD 中使用的电子邮件地址与他们在其他身份验证提供程序(如 Grafana.com)中使用的电子邮件地址相同,则您需要进行额外的配置,以确保用户得到正确匹配。有关更多信息,请参阅使用相同的电子邮件地址登录不同的身份提供程序文档。
使用 Grafana UI 配置通用 OAuth 身份验证客户端
注意
在 Grafana 10.4 中以公开预览版提供,位于
ssoSettingsApi
功能开关之后。
作为 Grafana 管理员,您可以使用通用 OAuth UI 从 Grafana 中配置通用 OAuth 客户端。为此,请导航到管理 > 身份验证 > 通用 OAuth 页面并填写表单。如果您在 Grafana 配置文件中具有当前配置,则表单将预先填充这些值,否则表单将包含默认值。
填写完表单后,单击保存以保存配置。如果保存成功,Grafana 将应用新配置。
如果您需要将 UI 中所做的更改重置为默认值,请单击重置。重置更改后,Grafana 将应用 Grafana 配置文件中的配置(如果有任何配置)或默认值。
注意
如果您在高可用性模式下运行 Grafana,则配置更改可能不会立即应用于所有 Grafana 实例。您可能需要等待几分钟,让配置传播到所有 Grafana 实例。
有关更多信息,请参阅配置选项。
使用 Terraform 提供程序配置通用 OAuth 身份验证客户端
注意
在 Grafana 10.4 中以公开预览版提供,位于
ssoSettingsApi
功能开关之后。自 v2.12.0 起在 Terraform 提供程序中受支持。
resource "grafana_sso_settings" "generic_sso_settings" {
provider_name = "generic_oauth"
oauth2_settings {
name = "Auth0"
auth_url = "https://<domain>/authorize"
token_url = "https://<domain>/oauth/token"
api_url = "https://<domain>/userinfo"
client_id = "<client id>"
client_secret = "<client secret>"
allow_sign_up = true
auto_login = false
scopes = "openid profile email offline_access"
use_pkce = true
use_refresh_token = true
}
}
有关使用 grafana_sso_settings
资源的完整参考,请参阅Terraform 注册表。
使用 Grafana 配置文件配置通用 OAuth 身份验证客户端
请确保您有权访问Grafana 配置文件。
步骤
要使用我们的通用 OAuth 身份验证将您的 OAuth2 提供程序与 Grafana 集成,请按照以下步骤操作
在您选择的 OAuth2 提供程序中创建 OAuth2 应用程序。
将 OAuth2 应用程序的回调 URL 设置为
http://<my_grafana_server_name_or_ip>:<grafana_server_port>/login/generic_oauth
。确保回调 URL 是您用于通过浏览器访问 Grafana 的完整 HTTP 地址,但附加了
/login/generic_oauth
路径。为了使回调 URL 正确,可能需要在 Grafana 配置文件的
[server]
部分中设置root_url
选项。例如,如果您在代理后面提供 Grafana 服务。请参阅下表以更新 Grafana 配置文件
[auth.generic_oauth]
部分中的字段值字段 描述 client_id
、client_secret
这些值必须与您的 OAuth2 应用程序中的客户端 ID 和客户端密钥匹配。 auth_url
您的 OAuth2 提供程序的授权端点。 api_url
您的 OAuth2 提供程序的用户信息端点。此端点返回的信息必须与OpenID UserInfo兼容。 enabled
启用通用 OAuth 身份验证。将此值设置为 true
。查看其他通用 OAuth 配置选项列表,并在必要时完成它们。
可选:配置刷新令牌
a. 使用 OAuth2 提供程序使用的刷新令牌范围扩展 Grafana 配置文件中
[auth.generic_oauth]
部分的scopes
字段。b. 在 Grafana 配置文件的
[auth.generic_oauth]
部分中将use_refresh_token
设置为true
。c. 如果需要,在提供程序上启用刷新令牌。
可选:配置组同步。
重启 Grafana。
您现在应该在登录页面上看到一个通用 OAuth 登录按钮,并且能够使用您的 OAuth2 提供程序登录或注册。
配置登录名
Grafana 可以从 OAuth2 ID 令牌或从 OAuth2 UserInfo 端点检索的用户信息中解析用户的登录名。Grafana 按列出的顺序查看这些来源,直到找到登录名。如果未找到登录名,则用户的登录名将设置为用户的电子邮件地址。
请参阅下表,了解根据您的 Oauth2 提供程序如何返回用户的登录名来配置哪些内容的信息
登录名来源 | 必需的配置 |
---|---|
OAuth2 ID 令牌的 login 或 username 字段。 | 不适用 |
OAuth2 ID 令牌的另一个字段。 | 设置 login_attribute_path 配置选项。 |
来自 UserInfo 端点的用户信息中的 login 或 username 字段。 | 不适用 |
来自 UserInfo 端点的用户信息中的另一个字段。 | 设置 login_attribute_path 配置选项。 |
配置显示名称
Grafana 可以从 OAuth2 ID 令牌或从 OAuth2 UserInfo 端点检索的用户信息中解析用户的显示名称。Grafana 按列出的顺序查看这些来源,直到找到显示名称。如果未找到显示名称,则改为显示用户的登录名。
请参阅下表,了解根据您的 Oauth2 提供程序如何返回用户的姓名来配置哪些内容的信息
显示名称来源 | 必需的配置 |
---|---|
OAuth2 ID 令牌的 name 或 display_name 字段。 | 不适用 |
OAuth2 ID 令牌的另一个字段。 | 设置 name_attribute_path 配置选项。 |
来自 UserInfo 端点的用户信息中的 name 或 display_name 字段。 | 不适用 |
来自 UserInfo 端点的用户信息中的另一个字段。 | 设置 name_attribute_path 配置选项。 |
配置电子邮件地址
Grafana 可以从 OAuth2 ID 令牌、从 OAuth2 UserInfo 端点检索的用户信息或 OAuth2 /emails
端点解析用户的电子邮件地址。Grafana 按列出的顺序查看这些来源,直到找到电子邮件地址。如果未找到电子邮件,则用户的电子邮件地址将设置为空字符串。
请参阅下表,了解根据 Oauth2 提供程序如何返回用户的电子邮件地址来配置哪些内容的信息
电子邮件地址来源 | 必需的配置 |
---|---|
OAuth2 ID 令牌的 email 字段。 | 不适用 |
OAuth2 ID 令牌的 attributes 映射。 | 设置 email_attribute_name 配置选项。默认情况下,Grafana 在 email:primary 键下搜索电子邮件。 |
OAuth2 ID 令牌的 upn 字段。 | 不适用 |
来自 UserInfo 端点的用户信息中的 email 字段。 | 不适用 |
来自 UserInfo 端点的用户信息中的另一个字段。 | 设置 email_attribute_path 配置选项。 |
从 OAuth2 提供程序的 /emails 端点标记为主要的电子邮件地址(通过将 /emails 附加到 URL配置为 api_url 来获取)配置刷新令牌 | 不适用 |
当用户使用 OAuth2 提供程序登录时,Grafana 会验证访问令牌是否已过期。当访问令牌过期时,Grafana 会使用提供的刷新令牌(如果存在)来获取新的访问令牌。
Grafana 使用刷新令牌来获取新的访问令牌,而无需用户再次登录。如果刷新令牌不存在,则在访问令牌过期后,Grafana 会将用户注销系统。
要配置通用 OAuth 以使用刷新令牌,请将 use_refresh_token
配置选项设置为 true
,并在必要时执行以下步骤中的一个或两个
使用其他范围扩展 Grafana 配置文件中 [auth.generic_oauth]
部分的 scopes
字段。
- 在提供程序上启用刷新令牌。
- 注意:
accessTokenExpirationCheck
功能开关已在 Grafana v10.3.0 中移除,并且use_refresh_token
配置值将改为用于配置刷新令牌获取和访问令牌过期检查。
除非启用
skip_org_role_sync
选项,否则用户的角色将在用户登录时设置为从身份验证提供程序检索的角色。
配置角色映射
用户的角色是使用来自 role_attribute_path
配置选项的 JMESPath 表达式检索的。要映射服务器管理员角色,请使用 allow_assign_grafana_admin
配置选项。有关更多信息,请参阅配置选项。
如果未找到有效角色,则会为用户分配 auto_assign_org_role
选项指定的角色。您可以通过设置 role_attribute_strict = true
来禁用此默认角色分配。如果在评估 role_attribute_path
和 org_mapping
表达式后未返回角色或返回无效角色,则此设置会拒绝用户访问。
您可以使用 org_attribute_path
和 org_mapping
配置选项将用户分配给组织并指定其角色。有关更多信息,请参阅组织角色映射示例。如果同时指定了组织角色映射 (org_mapping
) 和常规角色映射 (role_attribute_path
),则用户将获得两个映射角色中最高的角色。
为了简化正确 JMESPath 表达式的配置,请转到 JMESPath 以测试和评估具有自定义负载的表达式。
角色映射示例
本节包含用于角色映射的 JMESPath 表达式示例。
映射用户组织角色
在此示例中,用户已被授予 Editor
角色。分配的角色基于属性 role
的值,该值必须是有效的 Grafana 角色,例如 Admin
、Editor
、Viewer
或 None
。
负载
{
...
"role": "Editor",
...
}
role_attribute_path = role
映射服务器管理员角色
{
...
"groups": [
"engineer",
"admin",
],
...
}
role_attribute_path = contains(groups[*], 'admin') && 'Admin' || contains(groups[*], 'editor') && 'Editor' || 'Viewer'
在以下示例中,用户被授予 Grafana 服务器管理员角色。
{
...
"roles": [
"admin",
],
...
}
role_attribute_path = contains(roles[*], 'admin') && 'GrafanaAdmin' || contains(roles[*], 'editor') && 'Editor' || 'Viewer'
allow_assign_grafana_admin = true
在此示例中,所有用户都将被分配 Viewer
角色,而不管从身份提供程序收到的用户信息如何。
组织角色映射示例
role_attribute_path = "'Viewer'"
skip_org_role_sync = false
Org roles mapping example
在此示例中,用户已被授予 org_foo
组织中的 Viewer
角色,以及 org_bar
和 org_baz
组织中的 Editor
角色。
如果用户是 admin
组的成员,他们将被授予 Grafana 服务器管理员角色。
{
"roles": ["org_foo", "org_bar", "another_org"]
}
role_attribute_path = contains(roles[*], 'admin') && 'GrafanaAdmin' || 'None'
allow_assign_grafana_admin = true
org_attribute_path = roles
org_mapping = org_foo:org_foo:Viewer org_bar:org_bar:Editor *:org_baz:Editor
配置组同步
注意
在 Grafana Enterprise 和 Grafana Cloud 中可用。
Grafana 支持 OAuth2 群组与 Grafana 团队和角色的同步。这允许自动将用户分配到相应的团队或自动授予他们映射的角色。团队和角色在用户登录时同步。
通用 OAuth 群组可以通过群组 ID 引用,例如 8bab1c86-8fba-33e5-2089-1d1c80ec267d
或 myteam
。有关使用 groups_attribute_path
配置选项配置带有 Grafana 的 OAuth2 群组的信息,请参阅 配置选项。
要了解有关群组同步的更多信息,请参阅 配置团队同步 和 配置群组属性同步。
群组属性同步示例
配置
groups_attribute_path = groups
{
...
"groups": [
"engineers",
"analysts",
],
...
}
配置选项
下表概述了各种通用 OAuth 配置选项。您可以将这些选项作为环境变量应用,类似于 Grafana 中的任何其他配置。有关更多信息,请参阅 使用环境变量覆盖配置。
注意
如果配置选项需要包含冒号的 JMESPath 表达式,请将整个表达式用引号括起来,以防止解析错误。例如
role_attribute_path: "role:view"
设置 | 必需 | 云端支持 | 描述 | 默认 |
---|---|---|---|---|
enabled | 否 | 是 | 启用通用 OAuth 身份验证。 | false |
name | 否 | 是 | 指代 Grafana 用户界面中通用 OAuth 身份验证的名称。 | OAuth |
icon | 否 | 是 | 用于 Grafana 用户界面中通用 OAuth 身份验证的图标。 | signin |
client_id | 是 | 是 | 您的 OAuth2 应用提供的客户端 ID。 | |
client_secret | 是 | 是 | 您的 OAuth2 应用提供的客户端密钥。 | |
auth_url | 是 | 是 | 您的 OAuth2 提供商的授权端点。 | |
token_url | 是 | 是 | 用于获取 OAuth2 访问令牌的端点。 | |
api_url | 是 | 是 | 用于获取与 OpenID UserInfo 兼容的用户信息的端点。 | |
auth_style | 否 | 是 | 当从 OAuth2 提供商请求 ID 令牌时,要使用的 OAuth2 AuthStyle 的名称。它决定了如何将 client_id 和 client_secret 发送到 Oauth2 提供商。可用值包括 AutoDetect 、InParams 和 InHeader 。 | AutoDetect |
scopes | 否 | 是 | 逗号或空格分隔的 OAuth2 作用域列表。 | user:email |
empty_scopes | 否 | 是 | 设置为 true 以在身份验证期间使用空作用域。 | false |
allow_sign_up | 否 | 是 | 控制通过通用 OAuth 登录创建 Grafana 用户。如果设置为 false ,则只有现有的 Grafana 用户才能使用通用 OAuth 登录。 | true |
auto_login | 否 | 是 | 设置为 true 以允许用户绕过登录屏幕并自动登录。如果您配置了多个身份验证提供商以使用自动登录,则此设置将被忽略。 | false |
id_token_attribute_name | 否 | 是 | 用于从返回的 OAuth2 令牌中提取 ID 令牌的键的名称。 | id_token |
login_attribute_path | 否 | 是 | 用于从用户 ID 令牌中查找用户登录名的 JMESPath 表达式。有关如何检索用户登录名的更多信息,请参阅 配置登录名。 | |
name_attribute_path | 否 | 是 | 用于从用户 ID 令牌中查找用户名的 JMESPath 表达式。此名称将用作用户的显示名称。有关如何检索用户显示名称的更多信息,请参阅 配置显示名称。 | |
email_attribute_path | 否 | 是 | 用于从用户信息中查找用户电子邮件的 JMESPath 表达式。有关如何检索用户电子邮件的更多信息,请参阅 配置电子邮件地址。 | |
email_attribute_name | 否 | 是 | 用于在 OAuth2 ID 令牌的 attributes 映射中查找用户电子邮件的键的名称。有关如何检索用户电子邮件的更多信息,请参阅 配置电子邮件地址。 | email:primary |
role_attribute_path | 否 | 是 | 用于 Grafana 角色查找的 JMESPath 表达式。Grafana 将首先使用 OAuth2 ID 令牌评估表达式。如果未找到角色,则将使用从 UserInfo 端点获得的用户信息评估表达式。评估结果应为有效的 Grafana 角色(None 、Viewer 、Editor 、Admin 或 GrafanaAdmin )。有关用户角色映射的更多信息,请参阅 配置角色映射。 | |
role_attribute_strict | 否 | 是 | 设置为 true 以在无法使用 role_attribute_path 或 org_mapping 提取 Grafana 组织角色时拒绝用户登录。有关用户角色映射的更多信息,请参阅 配置角色映射。 | false |
skip_org_role_sync | 否 | 是 | 设置为 true 以停止自动同步用户角色。这将允许您从 Grafana 中手动设置用户的组织角色。 | false |
org_attribute_path | 否 | 否 | 用于 Grafana 组织到角色查找的 JMESPath 表达式。Grafana 将首先使用 OAuth2 ID 令牌评估表达式。如果未返回任何值,则将使用从 UserInfo 端点获得的用户信息评估表达式。评估结果将根据 org_mapping 映射到组织角色。有关组织到角色映射的更多信息,请参阅 组织角色映射示例。 | |
org_mapping | 否 | 否 | 逗号或空格分隔的 <外部组织名称>:<组织 ID 或名称>:<角色> 映射列表。值可以是 * ,表示“所有用户”。角色是可选的,可以具有以下值:None 、Viewer 、Editor 或 Admin 。有关外部组织到角色映射的更多信息,请参阅 组织角色映射示例。 | |
allow_assign_grafana_admin | 否 | 否 | 设置为 true 以启用 Grafana 服务器管理员角色的自动同步。如果此选项设置为 true 并且评估用户的 role_attribute_path 的结果为 GrafanaAdmin ,则 Grafana 授予用户服务器管理员权限和组织管理员角色。如果此选项设置为 false 并且评估用户的 role_attribute_path 的结果为 GrafanaAdmin ,则 Grafana 仅授予用户组织管理员角色。有关用户角色映射的更多信息,请参阅 配置角色映射。 | false |
groups_attribute_path | 否 | 是 | 用于用户群组查找的 JMESPath 表达式。Grafana 将首先使用 OAuth2 ID 令牌评估表达式。如果未找到群组,则将使用从 UserInfo 端点获得的用户信息评估表达式。评估结果应为群组的字符串数组。 | |
allowed_groups | 否 | 是 | 逗号或空格分隔的群组列表。用户应至少是一个群组的成员才能登录。如果您配置了 allowed_groups ,则还必须配置 groups_attribute_path 。 | |
allowed_organizations | 否 | 是 | 逗号或空格分隔的组织列表。用户应至少是一个组织的成员才能登录。 | |
allowed_domains | 否 | 是 | 逗号或空格分隔的域列表。用户应属于至少一个域才能登录。 | |
team_ids | 否 | 是 | 团队 ID 的字符串列表。如果设置,用户必须是给定团队之一的成员才能登录。如果您配置了 team_ids ,则还必须配置 teams_url 和 team_ids_attribute_path 。 | |
team_ids_attribute_path | 否 | 是 | 用于在 teams_url 端点返回的结果中查找 Grafana 团队 ID 的 JMESPath 表达式。 | |
teams_url | 否 | 是 | 用于查询团队 ID 的 URL。如果未设置,则默认值为 /teams 。如果您配置了 teams_url ,则还必须配置 team_ids_attribute_path 。 | |
tls_skip_verify_insecure | 否 | 否 | 如果设置为 true ,则客户端接受服务器提供的任何证书以及该证书中的任何主机名。您应该仅将此用于测试,因为此模式使 SSL/TLS 容易受到中间人攻击。 | false |
tls_client_cert | 否 | 否 | 证书的路径。 | |
tls_client_key | 否 | 否 | 密钥的路径。 | |
tls_client_ca | 否 | 否 | 受信任的证书颁发机构列表的路径。 | |
use_pkce | 否 | 是 | 设置为 true 以使用 代码交换的证明密钥 (PKCE)。Grafana 使用基于 SHA256 的 S256 质询方法和 128 字节(base64url 编码)代码验证器。 | false |
use_refresh_token | 否 | 是 | 设置为 true 以使用刷新令牌并检查访问令牌过期。 | false |
signout_redirect_url | 否 | 是 | 用户注销后要重定向到的 URL。 |
设置通用 OAuth 的示例
本节包含设置通用 OAuth 集成的示例。
使用 Descope 设置 OAuth2
要使用 Descope 设置通用 OAuth 身份验证,请按照以下步骤操作
在此处 创建一个 Descope 项目,并完成入门向导以配置您的身份验证。如果您已经设置了 Descope 项目,则可以跳过此步骤。
如果您希望使用
Sign Up or In
以外的流程,请转到控制台中的 IdP 应用程序 菜单,然后选择您的 IdP 应用程序。然后更改 流程托管 URL 查询参数?flow=sign-up-or-in
以更改您希望使用的流程 ID。单击 保存。
使用 设置 选项卡中的值更新 Grafana 配置文件的
[auth.generic_oauth]
部分[auth.generic_oauth] enabled = true allow_sign_up = true auto_login = false team_ids = allowed_organizations = name = Descope client_id = <Descope Project ID> client_secret = <Descope Access Key> scopes = openid profile email descope.claims descope.custom_claims auth_url = https://api.descope.com/oauth2/v1/authorize token_url = https://api.descope.com/oauth2/v1/token api_url = https://api.descope.com/oauth2/v1/userinfo use_pkce = true use_refresh_token = true
使用 Auth0 设置 OAuth2
注意
Grafana 目前不支持 Auth0 “受众”功能。有关角色和权限,可用的选项在此处描述:此处。
要使用 Auth0 设置通用 OAuth 身份验证,请按照以下步骤操作
使用以下参数创建 Auth0 应用程序
- 名称:Grafana
- 类型:常规 Web 应用程序
转到应用程序的 设置 选项卡,并将 允许的回调 URL 设置为
https://<grafana domain>/login/generic_oauth
。单击 保存更改。
使用 设置 选项卡中的值更新 Grafana 配置文件的
[auth.generic_oauth]
部分[auth.generic_oauth] enabled = true allow_sign_up = true auto_login = false team_ids = allowed_organizations = name = Auth0 client_id = <client id> client_secret = <client secret> scopes = openid profile email offline_access auth_url = https://<domain>/authorize token_url = https://<domain>/oauth/token api_url = https://<domain>/userinfo use_pkce = true use_refresh_token = true
使用 Bitbucket 设置 OAuth2
要使用 Bitbucket 设置通用 OAuth 身份验证,请按照以下步骤操作
导航到 BitBucket 中的 设置 > 工作区设置 > OAuth 使用者。
通过选择 添加使用者 并使用以下参数来创建应用程序
- 允许的回调 URL:
https://<grafana domain>/login/generic_oauth
- 允许的回调 URL:
单击 保存。
使用使用者描述中的
Key
和Secret
中的值更新 Grafana 配置文件的[auth.generic_oauth]
部分[auth.generic_oauth] name = BitBucket enabled = true allow_sign_up = true auto_login = false client_id = <client key> client_secret = <client secret> scopes = account email auth_url = https://bitbucket.org/site/oauth2/authorize token_url = https://bitbucket.org/site/oauth2/access_token api_url = https://api.bitbucket.org/2.0/user teams_url = https://api.bitbucket.org/2.0/user/permissions/workspaces team_ids_attribute_path = values[*].workspace.slug team_ids = allowed_organizations = use_refresh_token = true
默认情况下,刷新令牌包含在 授权码授予 的响应中。
使用 OneLogin 设置 OAuth2
要使用 OneLogin 设置通用 OAuth 身份验证,请按照以下步骤操作
在 OneLogin 中使用以下设置创建一个新的自定义连接器
- 名称:Grafana
- 登录方式:OpenID Connect
- 重定向 URI:
https://<grafana domain>/login/generic_oauth
- 签名算法:RS256
- 登录 URL:
https://<grafana domain>/login/generic_oauth
向 Grafana 连接器添加应用
- 显示名称:Grafana
使用应用详细信息页面的 SSO 选项卡中的客户端 ID 和客户端密钥更新 Grafana 配置文件的
[auth.generic_oauth]
部分您的 OneLogin 域将与您用于访问 OneLogin 的 URL 匹配。
[auth.generic_oauth] name = OneLogin enabled = true allow_sign_up = true auto_login = false client_id = <client id> client_secret = <client secret> scopes = openid email name auth_url = https://<onelogin domain>.onelogin.com/oidc/2/auth token_url = https://<onelogin domain>.onelogin.com/oidc/2/token api_url = https://<onelogin domain>.onelogin.com/oidc/2/me team_ids = allowed_organizations =
使用 Dex 设置 OAuth2
要使用 Dex IdP 设置通用 OAuth 身份验证,请按照以下步骤操作
在 Dex 配置 YAML 文件中将 Grafana 添加为客户端
staticClients: - id: <client id> name: Grafana secret: <client secret> redirectURIs: - 'https://<grafana domain>/login/generic_oauth'
注意
与许多其他 OAuth2 提供商不同,Dex 不提供
<client secret>
。相反,可以使用例如openssl rand -hex 20
生成密钥。更新 Grafana 的
[auth.generic_oauth]
部分配置[auth.generic_oauth] name = Dex enabled = true client_id = <client id> client_secret = <client secret> scopes = openid email profile groups offline_access auth_url = https://<dex base uri>/auth token_url = https://<dex base uri>/token api_url = https://<dex base uri>/userinfo
<dex base uri>
对应于 Dex 中的issuer:
配置(例如,Dex 域,可能包含路径,例如/dex
)。当使用 刷新令牌 时,需要offline_access
作用域。