oauth-2.0 使用oauth2_proxy进行Grafana登录

wn9m85ua  于 2022-10-31  发布在  其他
关注(0)|答案(1)|浏览(733)

出版日期:

我正在尝试在本地设置一个非常简单的配置

  • grafana在默认端口3000上运行
  • oauth2_proxy在默认端口4180上运行
    期望

期望是:在使用google凭证通过oauth2_proxy成功登录后,该登录在Grafana中“被保留”。但是,用户仅被重定向到Grafana登录页面。
重现步骤:创建以下空目录结构

  • /monitoring
  • /data/grafana//这将作为grafana的装入卷
  • /data/oauth2//这将作为oauth2_proxy的装入卷

将下面的docker-compose.yaml文件复制到/monitoring文件夹中

停靠-编写.yaml


# docker-compose.yml

version: '3'
services:
  grafana:
    container_name: grafana
    image: grafana/grafana:latest
    restart: always
    user: '104'
    volumes:
      - $PWD/data/grafana:/var/lib/grafana
    ports:
      - 3000:3000
    environment:
      # [users]
      - GF_USERS_ALLOW_SIGN_UP=false
      - GF_USERS_AUTO_ASSIGN_ORG=true
      - GF_USERS_AUTO_ASSIGN_ORG_ROLE=Admin

      # [auth]      
      - GF_AUTH_DISABLE_LOGIN_FORM=true

      # [auth.generic_oauth]
      - GF_AUTH_GENERIC_OAUTH_ENABLED=true
      - GF_AUTH_GENERIC_OAUTH_NAME=OAuth
      - GF_AUTH_GENERIC_OAUTH_ALLOW_SIGN_UP=true
      - GF_AUTH_GENERIC_OAUTH_CLIENT_ID=<google_client_id>
      - GF_AUTH_GENERIC_OAUTH_CLIENT_SECRET=<google_client_secret>
      - GF_AUTH_GENERIC_OAUTH_SCOPES=openid email nickname
      - GF_AUTH_GENERIC_OAUTH_AUTH_URL=http://localhost:4180/auth
      - GF_AUTH_GENERIC_OAUTH_TOKEN_URL=http://localhost:4180/token
      - GF_AUTH_GENERIC_OAUTH_API_URL=http://localhost:4180/userinfo

  oauth2-proxy:
    container_name: oauth2-proxy
    image: quay.io/oauth2-proxy/oauth2-proxy:latest
    restart: always
    ports:
      - 4180:4180
    volumes:
      - $PWD/data/oauth2:/var/lib/oauth2_proxy
    environment:
      - OAUTH2_PROXY_PROVIDER=oidc
      - OAUTH2_PROXY_CLIENT_ID=<google_client_id>
      - OAUTH2_PROXY_CLIENT_SECRET=<google_client_secret>
      - OAUTH2_PROXY_OIDC_ISSUER_URL=https://accounts.google.com
      - OAUTH2_PROXY_COOKIE_SECRET=<some_secret>
      - OAUTH2_PROXY_COOKIE_DOMAIN=http://localhost:3000
      - OAUTH2_PROXY_EMAIL_DOMAINS=*
      - OAUTH2_PROXY_REDIRECT_URL=http://localhost:3000/oauth2/callback
      - OAUTH2_PROXY_HTTP_ADDRESS=http://:4180
      - OAUTH2_PROXY_UPSTREAMS=http://localhost:3000/
      - OAUTH2_PROXY_COOKIE_SECURE=false
      - OAUTH2_PROXY_ERRORS_TO_INFO_LOG=true

运行
docker-compose up -d --build
运行Grafana:http://localhost:3000

到目前为止一切顺利,我们得到了Grafana登录页面,只启用了OAuth登录
现在,我们单击OAuth登录按钮

成功认证后,用户认证的会话不会被转移到Grafana,而是被重定向到登录页面。
Grafana或oauth2_proxy中均无错误
请注意,这里使用Google作为身份提供者只是为了简化(我知道我可以直接在grafana中插入它,而不需要oauth2_proxy)。我使用generic_oauth的原因是,最终,oauth2_proxy将与企业身份提供者集成。

ukxgm1gy

ukxgm1gy1#

您不需要任何oauth2-proxy。我猜您在某处找到了它,但这是一个针对旧Grafana版本的解决方案,几年前它还没有OIDC支持。现在,Grafana对OIDC有很好的本地支持,所以只需正确配置所有GF_AUTH_GENERIC_OAUTH_* 变量。

相关问题