我正在使用azure active directory对grafana应用程序进行身份验证和授权。
我已经按照给定的教程中提出:https://grafana.com/docs/grafana/latest/setup-grafana/configure-security/configure-authentication/azuread/
我用下面的compose文件启动容器:
version: '3.9'
services:
grafana:
image: grafana/grafana:9.4.7-ubuntu
ports:
- 3000:3000
restart: unless-stopped
volumes:
- ./grafana_config.ini:/etc/grafana/grafana.ini
- grafana-data:/var/lib/grafana
volumes:
grafana-data:
配置文件如下:
[auth.azuread]
name = Azure AD
enabled = true
allow_sign_up = true
auto_login = true
client_id = <redacted_client_id>
client_secret = <redacted_client_secret>
scopes = openid email profile
auth_url = https://login.microsoftonline.com/<TENANT_ID>/oauth2/v2.0/authorize
token_url = https://login.microsoftonline.com/<TENANT_ID>/oauth2/v2.0/token
allowed_domains =
allowed_groups = <admin_group_object_id> <editor_object_id>
role_attribute_strict = false
allow_assign_grafana_admin = true
skip_org_role_sync = true
[log]
level = "debug"
我可以登录,但即使我是AD中所有安全组的成员,我在登录时仍然被分配了Viewer
。我试着添加
role_attribute_path = contains(info.roles[*], 'admin') && 'GrafanaAdmin' || contains(info.roles[*], 'editor') && 'Editor' || 'Viewer'
在[auth.azuread]
下. ini文件中。<admin_group_object_id>
是AD中分配给应用程序的组的objectID
,如教程中所述。
我试图获取令牌,但令牌没有登录到终端,也没有发送到应用程序浏览器。
我认为问题是应用程序中的role_mapping
(即grafana app)端,但不确定如何在启动容器之前将AD内的objectID
Map到应用程序中的grafana角色。
我做错了什么?或者有其他办法解决这个问题吗?
1条答案
按热度按时间zour9fqk1#
请参阅链接的Azure身份验证文档:
默认情况下,Azure AD身份验证将根据在AzureAD中分配给用户的最高特权应用程序角色将用户Map到组织角色。
所以你不能使用
role_attribute_path
-它不支持这种类型的认证。如果您想使用
role_attribute_path
,请使用正确配置的generic OAuth。Azure身份验证只是OAuth/OIDC,因此基本身份验证没有问题。