如何使用oauth配置grafana(私有ADFS)

时间:2017-08-23 13:46:12

标签: oauth adfs grafana

我会与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

1 个答案:

答案 0 :(得分:0)

日志显示https://GO.tld/adfs/userinfo正在返回{"sub":"165az5d55s5sa56a5z1ds22tr6h5g5g6za6a6z55z5s="},其中grafana希望json文档包含nameloginusername,{{}等字段1}}。我发现一些帖子引用该网址作为返回完整的用户信息,因此您可能需要将email设置更新为类似scopes的内容,以使其返回更多字段而不仅仅是openid userinfo

据我所知,访问令牌本身应该是一个包含用户信息的JWT令牌,所以理论上应该可以更新通用oauth模块以便能够解码并使用它,或为ADFS创建单独的模块。现在虽然Grafana没有解码它,只是把它当作一个不透明的值。

最后,如果有另一个API端点,Grafana可以调用以获取用户的json表示,那么您可以将sub设置为该值,事情就可以了。

相关问题