Provedores de identidade
Login com o provedor de identidade da sua empresa: como tudo se encaixa, como adicionar e testar um provedor e como dar papéis nos espaços de trabalho a partir dos grupos dele.
Descreve o Ronne AI Marketplace 0.4.0. Traduzida do inglês.
Como tudo se encaixa
O Ronne pode deixar as pessoas fazerem login com o provedor de identidade da sua empresa (OpenID Connect): Google Workspace, Microsoft Entra ID, Okta, Keycloak, authentik, Auth0 ou qualquer outro que publique um documento de descoberta. O root o configura em Admin › Settings › Authentication, no navegador: nada a digitar no servidor.
- Adicione um provedor a partir do preset dele, registre o Ronne no provedor com a URI de redirecionamento que o formulário mostra e traga de volta os valores que ele pede (Adicionar um provedor).
- Teste-o: Test connection, depois Test sign-in com a sua própria conta no provedor. Nada muda até ele ser ativado.
- Ative-o. A página de login mostra Continue with <name>.
Quando alguém faz login com ele, o Ronne decide quem a pessoa é, nesta ordem:
- O provedor precisa dizer que o e-mail está verificado; se não, a pessoa é recusada.
- Uma conta desativada é recusada.
- Quem já fez login com este provedor antes é essa mesma conta, mesmo que o e-mail tenha mudado no provedor.
- Se não, uma conta com exatamente esse e-mail é vinculada e faz login, se o provedor vincula por e-mail e o domínio do e-mail é um dos que ele lista (a conta do root também). A senha dela continua funcionando também.
- Se não, se o domínio do e-mail for um dos que o provedor lista, uma conta nova é criada: um user no
global, com um espaço de trabalho pessoal e sem senha, nunca root. - Qualquer outra pessoa é recusada, com uma mensagem para falar com o root.
Depois, os grupos do provedor são aplicados, e a sessão dura no máximo 24 horas e termina quando o navegador fecha, então quem é desativado no provedor normalmente perde o acesso em até um dia. Para cortar o acesso de alguém na hora, desative a conta no Ronne: isso encerra as sessões e os tokens. Com SCIM, o provedor faz isso na próxima sincronização. O login em duas etapas não é pedido: o provedor pede a sua própria segunda etapa. O root decide se os outros ainda podem usar uma senha (Login com senha), e o root sempre pode fazer login com uma (Bloqueio).
Adicionar um provedor
Em Admin › Settings › Authentication › Identity providers, escolha Add provider e depois o cartão do seu provedor. O formulário preenche o que o preset sabe e, ao lado dele (embaixo, no celular), ficam os passos a seguir no provedor. Cada preset tem o seu próprio guia abaixo.
- Provider id: de 3 a 32 letras minúsculas, dígitos e hifens, começando e terminando com uma letra ou um dígito. Ele faz parte da URI de redirecionamento, então não pode ser mudado depois.
- A URI de redirecionamento,
https://ronne.example.com/api/auth/sso/callback/<id>: registre-a no provedor exatamente como aparece, com Copy. O provedor manda as pessoas de volta para esse endereço depois do login, e só para um endereço registrado nele, por isso ela precisa ser igual: ela é montada a partir do endereço público da instância (PUBLIC_URL) e do id. - Display name, no botão de login; a URL do issuer (exatamente como o documento de descoberta do provedor a escreve, barra final incluída; o preset a monta a partir das partes que pede), o client ID e o client secret, e os scopes (
openid email profile, mais um scope de grupos de que alguns provedores precisam). - O client secret é guardado criptografado e nunca mais aparece: o formulário diz Secret saved, com Replace.
- Who may sign in: os domínios de e-mail com que esse provedor faz login, e se as contas existentes são vinculadas pelo e-mail verificado. Um endereço novo nesses domínios ganha uma conta no primeiro login; uma conta existente com um deles é vinculada se a vinculação estiver ligada. Uma conta de outro domínio nunca é vinculada, então um provedor não consegue tomar um endereço que não é dele. Vazio: só fazem login as contas já vinculadas.
- Groups: a claim de grupos e os mapeamentos de grupos (Grupos e papéis nos espaços de trabalho).
Depois, na página do provedor:
- Test connection confere o documento de descoberta do provedor, se ele cita o issuer que você digitou, e as chaves dele, e diz o que encontrou.
- Test sign-in abre o provedor em uma nova aba: faça login lá com a sua própria conta. De volta à página, o Ronne mostra o que recebeu (o e-mail e se ele está verificado, o nome, os grupos) e o que um login de verdade faria com isso (entrar, vincular, criar ou recusar, e quais papéis nos espaços de trabalho mudam). Ele não muda nada.
- Turn on exige um Test sign-in aprovado, feito por você, das configurações como estão agora. Mudar depois o issuer, o client, o secret ou os scopes o desativa até ele passar de novo.
O painel mostra o estado de cada provedor: Off, Tested, On ou Failing (o último teste falhou, três logins seguidos falharam, ou o secret dele não pode ser lido depois de uma restauração), e quando alguém fez login com ele pela última vez. Turn off impede logins com ele; os vínculos e as participações em grupos continuam. Delete o remove: as contas vinculadas a ele continuam e ainda podem usar uma senha se tiverem uma, e os papéis nos espaços de trabalho que os grupos dele deram são removidos (no global, voltam a user). Toda mudança fica no log de auditoria.
Erros comuns, com qualquer provedor: uma URI de redirecionamento que difere por uma barra ou por http/https; um issuer sem a barra final que o documento dele tem (ou com uma que ele não tem); um e-mail que o provedor não marca como verificado; e uma claim de grupos que o aplicativo não envia. O Test sign-in mostra cada um.
Grupos e papéis nos espaços de trabalho
Um provedor pode dar papéis nos espaços de trabalho a partir dos grupos dele. No formulário do provedor, defina a claim de grupos (normalmente groups; o preset sabe) e depois adicione linhas: grupo → espaço de trabalho → papel (user, moderator ou admin). Um grupo é escrito exatamente como o provedor o envia, com maiúsculas e minúsculas.
A cada login com o provedor:
- Cada grupo mapeado de que a pessoa faz parte dá a ela, no espaço de trabalho do mapeamento, pelo menos o papel mapeado. Dois grupos que dão o mesmo espaço de trabalho dão o papel mais alto.
- Um papel que um grupo deu é retirado quando a pessoa sai do grupo (ou cai para o que outro grupo ainda dá), no próximo login dela. Apagar o último mapeamento faz o mesmo.
- Uma participação que alguém definiu à mão nunca é mudada, nem para subir. Quando alguém muda uma participação que um grupo deu (em Members), ela passa a ser dessa pessoa: os grupos a deixam em paz.
- No
global, de que ninguém sai, um grupo pode subir o papel user simples que todos têm; quando o grupo deixa de valer, o papel volta a user. - O root nunca é mudado por grupos, e os grupos nunca tornam ninguém root.
- Uma claim de grupos ausente não muda nada. O Entra a omite acima de 200 grupos: atribua ao aplicativo só os grupos que o Ronne mapeia.
- Um mapeamento cujo espaço de trabalho foi apagado é ignorado, e o formulário avisa. Espaços de trabalho pessoais não podem ser mapeados.
Cada mudança fica no log de auditoria como uma mudança de membro, marcada como do provedor. O Test sign-in lista as mudanças que os seus próprios grupos fariam.