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.
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:
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.
Crear un grupo en Keycloak y asignarlo a un usuario.
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:
Reemplazar, , , , y con los valores apropiados para la instalación de Keycloak.
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.