es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Grafana OAuth con Keycloak

Estoy utilizando gráficos de Helm. Durante el proceso de implementación, anulo los valores de la siguiente manera:

auth.generic_oauth:  # para SSO
      groups_attribute_path: contains(groups[*], 'GrafanaAdmins') && 'Admin' || 'Viewer'
      enabled: true
      name: Keycloak
      allow_sign_up: false
      client_id: grafana
      client_secret: CLIENT_SECRET
      scopes: openid,email,profile,groups
      team_ids:
      allowed_organizations:
      auth_url: AUTH_URL
      token_url: TOKEN_URL
      api_url: API_URL
      tls_skip_verify_insecure: true

En Keycloak, creo un cliente, un ámbito de cliente, un generador de grupos en el ámbito de cliente, un grupo y asigno el grupo GrafanaAdmins a un usuario.

Lo que quiero lograr es poder iniciar sesión en Grafana con un usuario definido en Keycloak que también esté asignado al grupo GrafanaAdmins.

Lo que tengo es este error:

t=2021-12-27T13:32:18+0000 lvl=warn msg="Not allowing oauth_generic_oauth login, user not found in internal user database and allow signup = false"
t=2021-12-27T13:32:18+0000 lvl=eror msg="invalid username or password" logger=context userId=0 orgId=0 uname=

No quiero registrar nuevos usuarios ni utilizar una base de datos adicional. Debería usar Keycloak.

La documentación de Grafana no es muy descriptiva y es difícil de entender.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para lograr iniciar sesión en Grafana con un usuario definido en Keycloak que también esté asignado al grupo GrafanaAdmins, se pueden seguir los siguientes pasos:

    1. Crear un cliente en Keycloak y tomar nota de su identificador de cliente (client ID) y su secreto de cliente (client secret).
    2. Crear un alcance de cliente (client scope) en Keycloak y agregarlo al cliente creado en el paso 1. En la pestaña “Mappers” del alcance de cliente, agregar un mapeador de grupo que asocie el atributo del grupo a los roles.

    3. Crear un grupo en Keycloak y asignarlo a un usuario.

    4. En el archivo values.yaml utilizado para implementar Grafana con las gráficas Helm, anular la sección auth.generic_oauth con los siguientes valores:

    auth.generic_oauth:
      enabled: true
      name: Keycloak
      client_id: <client id="">
      client_secret: <client secret="">
      scopes: openid,email,profile,groups
      group_mappings:
        <nombre de="" grupo="">: 
          role_attribute_path: contains(roles[*], 'Admin') && 'Admin' || 'Viewer'
      auth_url: <url de="" autenticación="">
      token_url: <url del="" token="">
      api_url: <url de="" la="" api="">
      tls_skip_verify_insecure: true
    

    Reemplazar , , , , y con los valores apropiados para la instalación de Keycloak.

    1. Volver a implementar Grafana con el archivo values.yaml actualizado.

    Siguiendo estos pasos, el usuario asignado al grupo GrafanaAdmins en Keycloak debería poder iniciar sesión en Grafana sin necesidad de registrarse ni utilizar una base de datos adicional. El mensaje de error sobre el usuario no se encuentra en la base de datos de usuario interno ya no debería aparecer.

Comments are closed.