0

我正在尝试使用 Keyrock 在不同平台上提供单点登录。具体来说,我想在 Grafana 中提供该服务。我在 Grafana 中看到了要更改的配置,我的 docker-compose 是这样的:

version: "3.1"
    services:

      grafana:
        image: grafana/grafana:5.1.0
        ports:
          - 3000:3000
        networks:
          default:
           ipv4_address: 172.18.1.4
        environment:
          - GF_AUTH_GENERIC_OAUTH_CLIENT_ID=90be8de5-69dc-4b9a-9cc3-962cca534410
          - GF_AUTH_GENERIC_OAUTH_CLIENT_SECRET=9e98964b-5043-4086-9657-51f1d8c11fe0
          - GF_AUTH_GENERIC_OAUTH_ENABLED=true
          - GF_AUTH_GENERIC_OAUTH_AUTH_URL=http://172.18.1.5:3005/oauth2/authorize
          - GF_AUTH_GENERIC_OAUTH_TOKEN_URL=http://172.18.1.5:3005/oauth2/token
          - GF_AUTH_GENERIC_OAUTH_API_URL=http://172.18.1.5:3005/v1/users
          - GF_AUTH_GENERIC_OAUTH_ALLOW_SIGN_UP = true
          - GF_Server_DOMAIN=172.18.1.4
          - GF_Server_ROOT_URL=http://172.18.1.4:3000

      keyrock:
        image: fiware/idm:7.5.1
        container_name: fiware-keyrock
        hostname: keyrock
        networks:
          default:
            ipv4_address: 172.18.1.5
        depends_on:
          - mysql-db
        ports:
          - "3005:3005"
          - "3443:3443"
        environment:
          - DEBUG=idm:*
          - DATABASE_HOST=mysql-db
          - IDM_DB_PASS_FILE=/run/secrets/my_secret_data
          - IDM_DB_USER=root
          - IDM_HOST=http://localhost:3005
          - IDM_PORT=3005
          - IDM_HTTPS_ENABLED=false
          - IDM_HTTPS_PORT=3443
          - IDM_ADMIN_USER=admin
          - IDM_ADMIN_EMAIL=admin@test.com
          - IDM_ADMIN_PASS=test
        secrets:                
          - my_secret_data
        healthcheck:
          test: curl --fail -s http://localhost:3005/version || exit 1

      mysql-db:
        restart: always
        image: mysql:5.7
        hostname: mysql-db
        container_name: db-mysql
        expose:
          - "3306"
        ports:
          - "3306:3306"
        networks:
          default:
            ipv4_address: 172.18.1.6
        environment:
          - "MYSQL_ROOT_PASSWORD_FILE=/run/secrets/my_secret_data"
          - "MYSQL_ROOT_HOST=172.18.1.5"
        volumes:
          - mysql-db-sso:/var/lib/mysql
          - ./mysql-data:/docker-entrypoint-initdb.d/:ro
        secrets:                
          - my_secret_data

    networks:
      default:
        ipam:
          config:
            - subnet: 172.18.1.0/24
    volumes:
      mysql-db-sso:

    secrets:
      my_secret_data:
        file: ./secrets.txt

我在 Keyrock 中注册了 Grafana 应用程序并具有回调http://172.18.1.4:3000/login。当我尝试通过 Oauth 在 Grafana 中登录时,它会将我重定向到登录的 keyrock 页面,但是在输入凭据时它会返回一个invalid client_id,但它与获取应用程序信息时返回给我的 Keyrock 相同。

是否有可能我缺少要配置的东西,还是应该以其他方式完成?

4

1 回答 1

1

这是 Keyrock 7.5.1 和 Grafana 6.0.0 的工作配置

格拉法纳:

[auth.generic_oauth]
enabled = true
allow_sign_up = true
client_id = ${CLIENT_ID}
client_secret = ${CLIENT_SECRET}
scopes = permanent
auth_url = ${KEYROCK_URL}/oauth2/authorize
token_url = ${KEYROCK_URL}/oauth2/token
api_url =  ${KEYROCK_URL}/user

Keyrock 中的应用程序:

url - ${GRAFANA_ROOT_URL}
callback_url - ${GRAFANA_ROOT_URL}/login/generic_oauth
Token types - Permanent

所以你需要修复环境变量

GF_AUTH_GENERIC_OAUTH_API_URL

http://172.18.1.5:3005/user

和回调网址

http://172.18.1.4:3000/login

http://172.18.1.4:3000/login/generic_oauth

并添加 oauth2 范围

于 2019-03-06T19:04:05.807 回答