Keycloak: proveedor de identidad OpenID Connect y mappers

Necesitas tres valores de la consola para desarrolladores: el ID de cliente, el secreto de cliente (solo apps de servidor web) y la URI de redirección que registraste. Todo lo demás está en el documento de descubrimiento en https://identity.dazr.eu/.well-known/openid-configuration.

Keycloak (identity brokering)

Si tus apps ya inician sesión a través de Keycloak, añade Dazr Identity como proveedor de identidad. Keycloak muestra entonces «Sign in with Dazr Identity» en su propia página de inicio de sesión y tus apps siguen hablando con Keycloak. En la consola de administración de Keycloak de tu realm, abre Identity providers, añade OpenID Connect v1.0 y rellena:

AjusteValor
Aliasdazr (la URI de redirección que debes registrar en Dazr es https://keycloak.example.eu/realms/<realm>/broker/dazr/endpoint)
Display nameDazr Identity
Discovery endpointhttps://identity.dazr.eu/.well-known/openid-configuration
Client authenticationClient secret sent as basic auth
Client ID and Client secretde la consola para desarrolladores de Dazr (app de servidor web)
Use PKCEactivado, método S256
Validate signaturesactivado, con Use JWKS URL activado y JWKS URL https://identity.dazr.eu/oauth/jwks
Scopesopenid profile email, más organisations si relacionas organizaciones como se indica abajo
Backchannel logoutdesactivado: Dazr Identity no tiene back-channel logout. El cierre de sesión pasa por el navegador hacia https://identity.dazr.eu/oauth/logout.
Disable user infodesactivado: los mappers de abajo leen la respuesta de user info
Trust emailactivado: Dazr solo emite direcciones de correo verificadas
Sync modeForce, para que nombres y roles se actualicen en cada inicio de sesión

Keycloak vincula la cuenta federada al sub de Dazr. Configura el first login flow para vincular usuarios existentes de Keycloak por correo solo si tu realm verifica por sí mismo las direcciones de correo.

Asignar organizaciones y roles

Cuando Keycloak hace de broker de Dazr Identity (consulta la guía de Keycloak), añade mappers en la pestaña Mappers del proveedor de identidad, con el sync mode Force. Keycloak lee estas rutas de la respuesta de user info, y una ruta puede indicar una posición en una lista: organisations[0] es la primera organización que marcó la persona. Para un portal con una cuenta de cliente por persona es suficiente; si hay personas que trabajan para varias organizaciones, haz que marquen una sola, o lee la lista completa en tu app.

Tipo de mapperClaimResultado
Attribute Importerorganisations[0].idAtributo de usuario dazr_org_id: la clave del tenant
Attribute Importerorganisations[0].nameAtributo de usuario dazr_org_name
Claim to Roleorganisations[0].role, valor del claim ownerRol de realm o de cliente tenant_admin
Claim to Roleorganisations[0].role, valor del claim adminRol de realm o de cliente tenant_admin
Claim to Roleorganisations[0].role, valor del claim memberRol de realm o de cliente tenant_user
Claim to Roleorganisations[0].verification.status, valor del claim verifiedRol verified_business

Después añade un mapper User Attribute para dazr_org_id al client scope de tu app en Keycloak, para que tu app reciba la clave del tenant en los propios tokens de Keycloak, junto a los roles.

Más para desarrolladores