SpotBooker SpotBooker Guide
Início de sessão

Início de sessão OpenID Connect pelo fornecedor da organização

Keycloak, LemonLDAP::NG, Authentik, Okta, Google… : os seus utilizadores entram no SpotBooker com as credenciais da organização.

🔑

A sua organização tem um fornecedor de identidade que fala OpenID Connect (OIDC)? É o caso do Keycloak, do LemonLDAP::NG, do Authentik, do Okta ou do Google Workspace. Uma vez ligado ao SpotBooker, cada pessoa inicia sessão com as credenciais habituais, sem mais uma palavra-passe. O início de sessão OpenID Connect está incluído na subscrição; tal como o início de sessão SAML, exige acesso completo (subscrição ou período de teste em curso). Só os administradores do seu espaço o configuram, na maioria das vezes com o serviço informático.

Antes de começar
1 Um fornecedor OpenID Connect acessível a partir da Internet

O seu endereço (o emissor) deve ser HTTPS e estar acessível a partir da Internet: o SpotBooker recusa endereços de rede privada e os que contêm um ? ou um #.

2 Permissão para criar um cliente nesse fornecedor

É preciso poder declarar lá uma aplicação: um cliente confidencial (com segredo), com o fluxo de código de autorização. O SpotBooker envia sempre também PKCE (S256).

3 Pelo menos um domínio de e-mail

Por exemplo instituto.pt. Ao contrário do SAML, o início de sessão OpenID Connect não se ativa sem domínio: um mesmo fornecedor (Google, Okta…) pode servir muitas organizações e, sem domínio, todas as suas contas poderiam entrar.

4 Acesso ao DNS do domínio

Permite provar que o domínio é seu (ver «Provar os seus domínios» mais abaixo). Esta prova é indispensável para que os seus utilizadores cheguem à ligação a partir da página de início de sessão: sem ela, o endereço escrito não encontra a sua organização, a admissão automática não atua e uma conta já existente não pode ser associada pelo endereço.

Passo a passo
1 Entregar os endereços do SpotBooker ao serviço informático

O seu fornecedor só liga uma aplicação que conhece. A caixa «A declarar no seu fornecedor» mostra dois endereços, cada um com um botão Copiar: o URL de redirecionamento, da forma https://<o-seu-espaço>/oidc/<chave>/callback, e o URL de redirecionamento após o fim de sessão, https://<o-seu-espaço>/oidc/<chave>/logged-out. A chave é estável: estes endereços não mudam, mesmo que altere o endereço público do seu espaço.

2 Criar o cliente no seu fornecedor

Crie uma aplicação do tipo cliente confidencial, com o fluxo de código de autorização (authorization code). Declare o URL de redirecionamento do passo 1; declare o URL após o fim de sessão apenas se o seu fornecedor oferecer fim de sessão centralizado. Anote o identificador do cliente e o seu segredo. As receitas Keycloak e LemonLDAP::NG estão mais abaixo.

3 Introduzir o emissor e testar

No SpotBooker, escolha o tipo de fornecedor (só preenche a ajuda), introduza o emissor tal como o fornecedor o publica e clique em «Testar o fornecedor». O teste lê /.well-known/openid-configuration e as chaves de assinatura, sem guardar nada. O segredo, esse, só é verificado no primeiro início de sessão real.

4 Preencher o identificador, o segredo e a autenticação

Copie o identificador do cliente e o seu segredo (cifrado ao guardar, nunca mais é mostrado). A autenticação no ponto de token é client_secret_basic por predefinição; escolha client_secret_post apenas se o seu fornecedor o exigir. Os scopes predefinidos são openid email profile; openid é sempre acrescentado.

5 Verificar a leitura dos claims

Os claims são as informações que o fornecedor coloca no token da pessoa. Por predefinição: sub (identificador único), email, given_name (nome próprio), family_name (apelido) e groups. Um claim pode ser um caminho aninhado, por exemplo realm_access.roles. Se o endereço ou os nomes faltarem no token, o SpotBooker lê o ponto userinfo do fornecedor, depois de verificar que se trata do mesmo sub.

6 Ativar o início de sessão

A ativação exige: uma descoberta do fornecedor bem-sucedida, o identificador do cliente, o segredo e pelo menos um domínio aceite. Se faltar algum, o SpotBooker indica-o e não ativa nada. Cada alteração do início de sessão fica inscrita no registo de atividade.

Receita Keycloak
1 Criar um cliente confidencial

No seu realm, abra Clients e depois Create client. Tipo de cliente: OpenID Connect. No passo seguinte, ative Client authentication (acesso confidencial) e mantenha assinalado Standard flow (código de autorização). O segredo está depois no separador Credentials.

2 Declarar o URL de redirecionamento

Em «Valid redirect URIs», cole o URL de redirecionamento copiado no passo 1. Se quiser o fim de sessão centralizado, cole o URL após o fim de sessão em «Valid post logout redirect URIs». O emissor tem a forma https://servidor/realms/nome, sem / final.

3 Acrescentar o mapper «Group Membership»

Para receber os grupos, abra o cliente, separador Client scopes, depois o scope dedicado do cliente (…-dedicated) e Add mapper > By configuration > Group Membership. Chame-lhe groups, ponha groups em «Token Claim Name» e desative «Full group path» se quiser nomes simples (labo e não /labo). Para os papéis do realm, use antes o claim realm_access.roles.

4 Verificar email_verified

Um endereço enviado com email_verified: false não é considerado fiável para ligar uma conta SpotBooker já existente. No Keycloak, marque os endereços como verificados (utilizador: «Email verified»); caso contrário, quem já tem conta terá de iniciar sessão com a palavra-passe.

Receita LemonLDAP::NG
1 Declarar uma relação OpenID Connect

No Manager, acrescente um «OpenID Connect Relying Party» (RP) para o SpotBooker, com um identificador de cliente e um segredo. O emissor a introduzir no SpotBooker é o endereço do portal LemonLDAP::NG, por exemplo https://auth.example.fr. Para esta relação, o identificador e o segredo estão em Options → Basic (Client ID, Client secret).

2 Declarar o URL de redirecionamento e a autenticação

Acrescente o URL de redirecionamento do passo 1 aos endereços de redirecionamento permitidos da relação (e o URL após o fim de sessão para o fim de sessão centralizado). Para a autenticação no ponto de token, mantenha client_secret_basic, que é também o valor predefinido do SpotBooker.

3 Exportar os atributos

Nos atributos exportados da relação, associe os claims email, given_name e family_name aos atributos do seu diretório (por exemplo mail, givenName, sn) e groups se quiser gerir os grupos. Acrescente o scope correspondente no SpotBooker se o LemonLDAP::NG o exigir.

O emissor, tal como é publicado
1 Copiar o emissor caráter a caráter

Introduza o emissor exatamente como o seu fornecedor o publica: o SpotBooker não corrige nada em silêncio. Se o emissor publicado diferir do que escreveu, mesmo por uma / final, o teste indica-o e mostra os dois valores: copie o do fornecedor. Exemplo: o Keycloak publica https://<servidor>/realms/<realm>, sem / final.

2 Não acrescentar /.well-known

O endereço a introduzir é o do emissor, não o do documento de descoberta: sem /.well-known/openid-configuration.

3 Um endereço que o SpotBooker aceita

HTTPS obrigatório, acessível a partir da Internet, sem ? nem #. Um endereço de rede privada é recusado: um fornecedor atrás da firewall da organização tem de ser tornado acessível a partir da Internet.

Provar os seus domínios

Um domínio que declara filtra os endereços assim que é guardado. Para que também encontre a sua organização a partir da página de início de sessão, certifique os endereços e admita automaticamente, tem de provar que lhe pertence. Sem essa prova, qualquer espaço poderia reivindicar o seu domínio. A prova vale para o domínio exato: institut.fr não abrange labo.institut.fr, que se declara e se prova à parte.

1 Copiar o registo TXT

Sob o campo dos domínios, cada domínio guardado mostra o seu registo: tipo TXT, valor spotbooker-verification=….

2 Adicioná-lo ao DNS do domínio

O seu serviço informático adiciona-o no próprio domínio (por exemplo institut.fr) ou, se preferir, em _spotbooker.institut.fr. Pode ficar: o SpotBooker volta a verificá-lo todos os dias.

3 Verificar

Clique em «Verificar agora». Caso contrário, o SpotBooker procura-o sozinho a cada 15 minutos durante 14 dias. Um domínio é verificado por um único espaço: se já o estiver noutro, contacte o suporte. Se o registo desaparecer 7 dias seguidos, a verificação é retirada e os seus administradores são avisados por e-mail.

O domínio também decide a ligação: na página de início de sessão, a pessoa escreve o seu endereço em «Iniciar sessão com a sua organização», e o domínio indica a ligação a usar, desde que esteja provado por DNS (sem a prova, a página de início de sessão não encontra a sua organização). Se um domínio for declarado ao mesmo tempo em SAML, OpenID Connect e LDAP, a prioridade é SAML, depois OpenID Connect, depois LDAP. Uma pessoa cujo endereço esteja fora dos seus domínios é recusada. Sem a prova DNS, a admissão automática não se aplica (um pedido de acesso segue para os administradores, que o aceitam ou recusam na gestão de utilizadores) e uma conta existente não pode ser associada pelo endereço.
Os grupos
1 Fazer corresponder os grupos

Em «Correspondência de grupos», associe um valor de grupo do fornecedor a um grupo SpotBooker criado previamente. A cada início de sessão, a pessoa é acrescentada aos grupos que correspondem aos seus no fornecedor e retirada daqueles que deixou. Um grupo criado à mão no SpotBooker nunca é alterado pelo início de sessão.

2 Fazer chegar os grupos no token

O fornecedor tem de enviar o claim groups (ou o que indicou). Com o Keycloak, é o mapper «Group Membership» acima; para papéis, indique realm_access.roles. O Google não envia grupos: limite então o acesso por domínio.

O fim de sessão
1 Se o fornecedor publica end_session_endpoint

Quando a pessoa termina a sessão no SpotBooker, também a termina no fornecedor (RP-Initiated Logout) e regressa à página de início de sessão com esta mensagem de confirmação: «A sua sessão foi terminada, incluindo na sua organização.». Não se esqueça de declarar o URL após o fim de sessão no fornecedor.

2 Caso contrário, fim de sessão local

Se o fornecedor não publica um ponto de fim de sessão, só a sessão do SpotBooker é fechada: a pessoa continua ligada no fornecedor. A caixa de estado do início de sessão indica se o fim de sessão centralizado está disponível.

O que o SpotBooker verifica
1 A assinatura do token

O token de identidade é sempre verificado com as chaves que o fornecedor publica (RS256, RS384, RS512, PS256, ES256, ES384). Os tokens sem assinatura (none) e as assinaturas HMAC (HS256 e outras) são recusados.

2 O endereço verificado

Um endereço enviado com email_verified: false não é considerado fiável para ligar uma conta existente: a pessoa é convidada a iniciar sessão com a palavra-passe.

Em caso de problema
O que vê O que fazer
« O início de sessão através da sua organização não está disponível. Contacte o respetivo administrador. » O início de sessão não está ativado, está incompleto, ou não foi possível ler o fornecedor. Em Definições, verifique que está ativado e que o estado do fornecedor indica «Descoberto em» seguido de uma data (e não «Ainda não descoberto»), e execute o teste.
« O início de sessão através da sua organização falhou. Tente novamente. » Causa mais frequente: o URL de redirecionamento não está declarado de forma idêntica no fornecedor, ou o segredo está errado. Verifique também o método de autenticação (client_secret_basic ou client_secret_post) e o emissor. O «Último erro» da caixa de estado dá o motivo; uma página de início de sessão aberta demasiado tempo também falha: recomece. O fornecedor pode também não ter enviado nem o endereço de e-mail nem o identificador (sub) nos claims que configurou, mesmo após a leitura do ponto userinfo: verifique os nomes em «Leitura dos claims».
« A sua conta não está autorizada a aceder a este espaço. Contacte o administrador da sua organização. » O endereço da pessoa está fora dos domínios aceites, já é usado por uma conta de outro espaço SpotBooker, ou um administrador recusou o pedido de acesso desta pessoa. No primeiro caso, acrescente o domínio; nos outros, uma pessoa recusada não entra ao iniciar sessão de novo.
« Já existe uma conta com este endereço. Por motivos de segurança, a ligação automática não é possível: inicie sessão com a sua palavra-passe. » Já existe uma conta SpotBooker com este endereço e o fornecedor não o declara verificado (email_verified). Marque o endereço como verificado no fornecedor, ou a pessoa inicia sessão com a palavra-passe.
« O seu pedido de acesso foi enviado ao administrador da sua organização. Receberá um email assim que for tratado. » É normal quando a admissão automática está desativada ou o domínio não está provado por DNS: um administrador tem de aceitar o pedido na gestão de utilizadores.
« O seu pedido de acesso aguarda validação por um administrador. » A pessoa já pediu acesso: um administrador ainda não decidiu. Aceite ou recuse o pedido.
« A sua conta foi desativada pela sua organização. Contacte o respetivo administrador. » A conta foi desativada porque a pessoa saiu do diretório. Reabre-se sozinha quando o diretório a marca de novo como ativa; não se reativa à mão no SpotBooker. Veja Sincronizar utilizadores com SCIM.
« Obrigatório para ativar o início de sessão OpenID Connect (fornecedor descoberto, identificador, segredo e pelo menos um domínio). » Falta uma condição: fornecedor descoberto, identificador do cliente, segredo ou pelo menos um domínio aceite. Execute o teste, complete os campos e volte a ativar.
« O endereço do fornecedor é recusado: não usa HTTPS, ou contém uma consulta (?), um fragmento (#) ou carateres não permitidos. » O emissor não está em HTTPS, ou contém um ? ou um #. Introduza apenas o endereço do emissor, em HTTPS.
« Este endereço aponta para uma rede privada: o SpotBooker não se liga a ele. » O endereço aponta para uma máquina de uma rede privada. Torne o fornecedor acessível a partir da Internet e use o seu endereço público.
« Não é possível contactar o fornecedor. Verifique o endereço e se o servidor está acessível a partir da Internet. » Endereço mal escrito, ou servidor inacessível a partir da Internet (firewall, certificado HTTPS inválido). Verifique o endereço e abra-o num navegador fora da organização.
« O fornecedor respondeu com um erro. Verifique o emissor: o endereço não deve incluir /.well-known/openid-configuration. » O endereço introduzido não é o de um fornecedor OpenID Connect. Retire /.well-known/openid-configuration e verifique o caminho (com o Keycloak: /realms/<realm>).
« O emissor introduzido (https://sso.example.fr/) não corresponde ao que o fornecedor publica (https://sso.example.fr). Copie-o de forma idêntica, caráter a caráter (incluindo uma « / » final). » O emissor introduzido difere do que o fornecedor publica. Copie o valor encontrado, caráter a caráter, incluindo uma / final. O SpotBooker não o corrige por si.
« O documento do fornecedor está incompleto: falta um endereço indispensável (autorização, token ou chaves). » O documento do fornecedor não contém todos os endereços necessários. Verifique a configuração do fornecedor ou do realm.
« O início de sessão foi guardado, mas a deteção do fornecedor falhou: … » As definições estão guardadas, mas o início de sessão não pode ser usado enquanto a descoberta não tiver êxito. Corrija a causa indicada e execute o teste.
« A resposta do fornecedor não é um documento OpenID Connect legível. » O endereço não leva a um fornecedor OpenID Connect (página web, portal, redirecionamento). Verifique o emissor.
« A resposta do fornecedor é anormalmente grande e foi recusada. » Uma resposta anormalmente volumosa não é lida. Verifique que o endereço é mesmo o de um fornecedor OpenID Connect.
« O teste falhou. Verifique o emissor introduzido. » A mensagem não dá pormenores: verifique o emissor introduzido e execute o teste novamente.
O seu diretório é o Microsoft Entra ID? O guia Ligar o seu diretório Microsoft é mais direto. O seu fornecedor fala SAML? Veja o início de sessão SAML. Sem fornecedor de identidade, apenas um diretório OpenLDAP ou Active Directory? Veja o início de sessão LDAP. Para que uma saída do diretório corte o acesso no próprio dia, acrescente a sincronização SCIM.

Experimente o SpotBooker grátis — 14 dias, sem cartão de crédito

Crie a sua conta e configure os seus próprios espaços seguindo este guia.

Começar o meu teste grátis
Todos os guias
Reservar Reservar Agenda