Usando OpenID / Keycloak con Superset

Quiero usar keycloak para autenticar a mis usuarios en nuestro entorno Superset.

Superset está usando flask-openid, como se implementa en flask-security:

http://flask-appbuilder.readthedocs.io/en/latest/_modules/flask_appbuilder/security/manager.htmlhttps://pythonhosted.org/Flask-OpenID/

Para habilitar una autenticación de usuario diferente a la normal (base de datos), debe anular el parámetro AUTH_TYPE en su archivo superset_config.py. También deberá proporcionar una referencia a su reino de conexión abierta y habilitar el registro del usuario. Según tengo entendido, debería verse más o menos así:

from flask_appbuilder.security.manager import AUTH_OID
AUTH_TYPE = AUTH_OID
OPENID_PROVIDERS = [
    { 'name':'keycloak', 'url':'http://localhost:8080/auth/realms/superset' }
]
AUTH_USER_REGISTRATION = True
AUTH_USER_REGISTRATION_ROLE = 'Gamma'

Con esta configuración, la página de inicio de sesión cambia a un mensaje donde el usuario puede seleccionar el proveedor de OpenID deseado (en nuestro caso, keycloak). También tenemos dos botones, uno para iniciar sesión (para usuarios existentes) y otro para registrarse como nuevo usuario.

Esperaría que cualquiera de estos botones me llevara a mi página de inicio de sesión de keycloak. Sin embargo, esto no sucede. En cambio, me redirigen de vuelta a la página de inicio de sesión.

En el caso en que presiono el botón de registro, recibo un mensaje que dice 'No es posible registrarlo en este momento, intente nuevamente más tarde'. Cuando presiono el botón de inicio de sesión, no se muestra ningún mensaje. Los registros de Superset muestran la solicitud que carga la página de inicio de sesión, pero no las solicitudes de keycloak. He intentado lo mismo con el proveedor de Google OpenID, que funciona bien.

Dado que no veo solicitudes de keycloak, esto me hace pensar que me falta una configuración en alguna parte o que estoy usando la configuración incorrecta. ¿Podrías ayudarme a determinar qué configuraciones debo usar?

Respuestas a la pregunta(1)

Su respuesta a la pregunta