我会与ADFS服务器建立o.auth连接。我按照了文档http://docs.grafana.org/installation/configuration/#auth-generic-oauth。
CONF:
[auth.generic_oauth]
enabled = true
client_id = ID
client_secret = TOKEN
scopes = openid
auth_url = https://GO.tld/adfs/oauth2/authorize
token_url = https://GO.tld/adfs/oauth2/token
api_url = https://GO.tld/adfs/userinfo
allowed_domains = GO.tld
allow_sign_up = true
记录
lvl=dbug msg="HTTP GET https://GO.tld/adfs/userinfo: 200 OK {\"sub\":\"165az5d55s5sa56a5z1ds22tr6h5g5g6za6a6z55z5s=\"}"
lvl=dbug msg="HTTP GET https://GO.tld/adfs/userinfo/emails: 200 OK {\"sub\":\"165az5d55s5sa56a5z1ds22tr6h5g5g6za6a6z55z5s=\"}"
lvl=dbug msg="OAuthLogin got user info" logger=context userId=0 orgId=0 uname= userInfo="&{Name: Email: Login: Company: Role:}"
lvl=info msg="Login provider didn't return an email address" logger=context userId=0 orgId=0 uname=
lvl=info msg="Request Completed" logger=context userId=0 orgId=0 uname= method=GET path=/login/generic_oauth status=302 remote_addr=IP time_ms=26 size=29 referer=https://grafana.tld:3000/login
答案 0 :(得分:0)
日志显示https://GO.tld/adfs/userinfo
正在返回{"sub":"165az5d55s5sa56a5z1ds22tr6h5g5g6za6a6z55z5s="}
,其中grafana希望json文档包含name
,login
,username
,{{}等字段1}}。我发现一些帖子引用该网址作为返回完整的用户信息,因此您可能需要将email
设置更新为类似scopes
的内容,以使其返回更多字段而不仅仅是openid userinfo
。
据我所知,访问令牌本身应该是一个包含用户信息的JWT令牌,所以理论上应该可以更新通用oauth模块以便能够解码并使用它,或为ADFS创建单独的模块。现在虽然Grafana没有解码它,只是把它当作一个不透明的值。
最后,如果有另一个API端点,Grafana可以调用以获取用户的json表示,那么您可以将sub
设置为该值,事情就可以了。