配置Okta OAuth2认证
仅在Grafana v7.0+中可用
Okta身份验证允许您的Grafana用户通过使用外部Okta授权服务器登录。
创建Okta应用程序
在让用户登录之前,需要从Okta开发人员控制台创建一个Okta应用程序。
登录Okta门户。
转到管理员,然后选择开发人员控制台。
选择应用程序,然后添加应用程序。
选择网络作为平台。
为您的应用程序输入一个名称(或保留默认值)。
添加基础URI您的应用程序,例如https://grafana.example.com。
为登录重定向URI。使用基础URI然后加上
/登录/ okta
,例如:https://grafana.example.com/login/okta。点击完成完成Okta应用程序的创建。
在Grafana中启用Okta OAuth
- 将以下内容添加到Grafana配置文件:
(auth.okta)name = Okta icon = okta enabled = true allow_sign_up = true client_id = some_id client_secret = some_secret scopes = openid profile email groups auth_url = https://.okta.com/oauth2/v1/authorize token_url = https://.okta.com/oauth2/v1/token api_url = https://.okta.com/oauth2/v1/userinfo allowed_domains = allowed_groups = role_attribute_path =
配置刷新令牌
在Grafana v9.3及更高版本中可用。
注意:这个特性的背后
accessTokenExpirationCheck
功能切换。
当用户使用OAuth提供程序登录时,Grafana会验证访问令牌是否过期。当一个访问令牌过期时,Grafana使用提供的刷新令牌(如果存在的话)来获取一个新的访问令牌。
Grafana使用一个刷新令牌来获得一个新的访问令牌,而不需要用户再次登录。如果刷新令牌不存在,Grafana会在访问令牌过期后将用户从系统中注销。
- 要启用
刷新令牌
,授予类型一般设置
部分。 - 扩展
作用域
在(auth.okta)
与offline_access
。
配置允许的组和域
若要限制已通过身份验证的用户访问一个或多个组的成员,请设置allowed_groups
到以逗号或空格分隔的Okta组列表。
allowed_groups =开发人员,管理员
的allowed_domains
选项限制属于特定域的用户的访问。域之间用空格或逗号分隔。
Allowed_domains = mycompany.com mycompany.org
地图的角色
Grafana可以尝试通过Okta OAuth进行角色映射。方法来检查角色是否存在JMESPath通过role_attribute_path
配置选项。
Grafana使用从查询/用户信息
路径查找的端点。评估后的结果role_attribute_path
JMESPath表达式需要是一个有效的Grafana角色,即。查看器
,编辑器
或管理
。有关Grafana中的角色和权限的更多信息,请参阅角色和权限。
警告:目前如果没有找到用户的组织角色映射,Grafana不会更新用户的组织角色。这将在Grafana 10中改变。为避免覆盖手动设置的角色,请启用
oauth_skip_org_role_update_sync
选择。看到configure-grafana获取更多信息。
在第一次登录时,如果role_attribute_path
属性不返回角色,则为用户分配指定的角色的auto_assign_org_role
选项。您可以通过设置禁用此默认角色分配Role_attribute_strict = true
。如果没有返回角色或返回无效角色,则拒绝用户访问。
警告:使用Grafana 10,每次登录时,如果
role_attribute_path
属性不返回角色,则为用户分配指定的角色的auto_assign_org_role
选项。
阅读有关如何添加自定义声明到Okta中的用户信息。此外,查看Generic OAuth页面JMESPath例子。
地图服务器管理员权限
在Grafana v9.2及更高版本中可用。
如果Grafana接收到的应用角色为GrafanaAdmin
, Grafana授予用户服务器管理员权限。
如果您想将服务器管理员特权授予用户的子集,这很有用。
Grafana还为用户分配管理
默认组织的角色。
设置allow_assign_grafana_admin
下(auth.okta)
必须设置为真正的
这样才能奏效。
如果设置为假
时,用户被分配的角色为管理
默认组织的权限,而不是服务器管理员权限。
Allow_assign_grafana_admin = true
例子:
role_attribute_path = contains(groups[*], 'admin') && 'GrafanaAdmin' || contains(groups[*], 'editor') && 'editor' || 'Viewer'
团队同步(企业版)
将您的Okta组映射到Grafana中的团队,这样您的用户将自动添加到正确的团队。
Okta组可以通过组名引用,例如管理员
。