Keycloak: fornecedor de identidade OpenID Connect e mappers

Precisa de três valores da consola para programadores: o ID de cliente, o segredo de cliente (apenas aplicações de servidor web) e o URI de redirecionamento que registou. O resto está no documento de descoberta em https://identity.dazr.eu/.well-known/openid-configuration.

Keycloak (identity brokering)

Se as suas aplicações já iniciam sessão através do Keycloak, adicione o Dazr Identity como fornecedor de identidade. O Keycloak mostra então «Sign in with Dazr Identity» na sua própria página de início de sessão e as suas aplicações continuam a falar com o Keycloak. Na consola de administração do Keycloak do seu realm, abra Identity providers, adicione OpenID Connect v1.0 e preencha:

DefiniçãoValor
Aliasdazr (o URI de redirecionamento a registar na Dazr é 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 secretda consola de programadores da Dazr (aplicação de servidor web)
Use PKCEativado, método S256
Validate signaturesativado, com Use JWKS URL ativado e JWKS URL https://identity.dazr.eu/oauth/jwks
Âmbitosopenid profile email, mais organisations se associar organizações como abaixo
Backchannel logoutdesativado: o Dazr Identity não tem back-channel logout. O fim de sessão passa pelo navegador para https://identity.dazr.eu/oauth/logout.
Disable user infodesativado: os mappers abaixo leem a resposta de user info
Trust e-mailativado: a Dazr só emite endereços de e-mail verificados
Sync modeForce, para que nomes e funções sejam atualizados em cada início de sessão

O Keycloak associa a conta federada ao sub da Dazr. Configure o first login flow para associar utilizadores existentes do Keycloak por e-mail apenas se o seu realm verificar ele próprio os endereços de e-mail.

Mapear organizações e funções

Quando o Keycloak faz de broker do Dazr Identity (veja o guia do Keycloak), adicione mappers no separador Mappers do fornecedor de identidade, com o sync mode Force. O Keycloak lê estes caminhos na resposta de user info, e um caminho pode indicar uma posição numa lista: organisations[0] é a primeira organização que a pessoa assinalou. Para um portal com uma conta de cliente por pessoa, isso chega; se houver pessoas que trabalham para várias organizações, peça-lhes que assinalem apenas uma, ou leia a lista completa na sua aplicação.

Tipo de mapperClaimResultado
Attribute Importerorganisations[0].idAtributo de utilizador dazr_org_id: a chave do tenant
Attribute Importerorganisations[0].nameAtributo de utilizador dazr_org_name
Claim to Roleorganisations[0].role, valor da claim ownerFunção de realm ou de cliente tenant_admin
Claim to Roleorganisations[0].role, valor da claim adminFunção de realm ou de cliente tenant_admin
Claim to Roleorganisations[0].role, valor da claim memberFunção de realm ou de cliente tenant_user
Claim to Roleorganisations[0].verification.status, valor da claim verifiedFunção verified_business

Depois adicione um mapper User Attribute para dazr_org_id ao client scope da sua aplicação no Keycloak, para que a sua aplicação receba a chave do tenant nos tokens do próprio Keycloak, ao lado das funções.

Mais para programadores