Pular para o conteúdo

Login social e corporativo

Deixe as pessoas entrarem com Google, Microsoft Entra ID, GitHub, Apple ou qualquer provedor OpenID Connect, e a sua aplicação continua recebendo tokens comuns do Authio.

O Authio atua como intermediário (broker). Para a sua aplicação, um login pelo Google ou pelo diretório de uma empresa é um login comum do Authio: o mesmo pedido de autorização, o mesmo código, tokens emitidos pelo realm para uma conta local. Por trás, o Authio leva a pessoa ao provedor, valida o que volta e decide a qual conta do realm ela pertence.

Você registra um provedor uma vez por realm e depois escolhe quais clients o mostram na tela de login, e em que ordem. A sua aplicação não muda nada para ganhar uma nova forma de entrar.

Provedores aceitos

TipoProtocoloIdentidade lida deVocê informa
GoogleOpenID ConnectO ID token do provedor, validadoClient ID e segredo
Microsoft Entra IDOpenID ConnectO ID token do provedor, validadoClient ID, segredo e a authority do tenant
GitHubOAuth 2.0A API de perfil e o e-mail primário verificadoClient ID e segredo
AppleOpenID ConnectO ID token do provedor, validado, devolvido por form postClient ID, Team ID, Key ID e a chave privada .p8
OpenID ConnectOpenID ConnectO ID token do provedor, validadoClient ID, segredo e a authority

Google, Microsoft Entra ID, GitHub e Apple são predefinições: os endpoints, os escopos e os nomes das claims já são conhecidos. O tipo OpenID Connect genérico lê os endpoints a partir da authority, o endereço-base onde o provedor publica o documento de descoberta, então ele serve para Okta, Auth0, Keycloak, outro realm do Authio ou qualquer diretório compatível.

A federação funciona sobre OpenID Connect e OAuth 2.0. Provedores de identidade SAML não são aceitos.

Adicionar um provedor

  1. Registre o provedor no Authio

    Abra Provedores de identidade e escolha Criar. Escolha o realm e o tipo e dê o rótulo do botão que as pessoas vão ver. O alias é derivado do nome e passa a fazer parte do endereço de callback; nem o alias nem o tipo podem mudar depois que o provedor é registrado.

  2. Registre o Authio no provedor

    No console do próprio provedor, crie uma aplicação OAuth ou OIDC e registre o endereço de callback. A visão do provedor no Authio mostra esse endereço, pronto para copiar:

    Endereço de callbackTexto simples
    https://authio.api.hyperio.tech/realms/acme/broker/google/callback
  3. Preencha as credenciais e o modo de vínculo

    Cole o client ID e o segredo emitidos pelo provedor (para a Apple, o Team ID, o Key ID e a chave privada). Para Microsoft Entra ID e OpenID Connect genérico, informe a authority. Depois escolha como as contas são vinculadas.

    O segredo é gravado uma vez e nunca mais exibido. Authorities e endpoints que apontam para uma rede privada — um IP não público, localhost, nomes .local ou .internal — são recusados ao salvar.

  4. Ofereça o provedor num client

    Registrar um provedor o deixa disponível no realm; oferecê-lo o torna visível. Em Clients, abra o client, escolha Editar e vá até Opções de login: ofereça os provedores que quiser e coloque-os em ordem. A lista é salva inteira.

  5. Teste

    Comece um login pela sua aplicação. Embaixo do botão de entrar, o login hospedado agora mostra Continuar com Google, ou o rótulo que você escolheu.

Quando um pedido de autorização nomeia uma organização, o login mostra os provedores dessa organização, na ordem dela, no lugar dos do client.

Vínculo de contas e contas novas

Na primeira vez que alguém chega por um provedor, o Authio precisa decidir em que conta a pessoa entra. Uma identidade já vinculada a uma conta é sempre respeitada primeiro — mesmo que o e-mail tenha mudado no provedor. Para uma identidade nunca vista, quem decide é o modo de Vínculo de contas do provedor:

ModoO que acontece com uma identidade desconhecida
Somente contas vinculadasRecusada. Só entram identidades já vinculadas a uma conta do realm. O provedor prova quem a pessoa é; não decide que ela pertence ao realm.
Sempre criar uma nova conta (padrão)Uma conta nova é criada e vinculada. Nunca toca uma conta existente: se o e-mail já estiver em uso e o realm exigir e-mails únicos, o login é recusado.
Vincular por e-mail verificadoEntra na conta existente com o mesmo e-mail — só quando Confiar na claim de e-mail verificado deste provedor está ligado e o provedor declara que verificou o endereço. Caso contrário, nada é vinculado e o comportamento é o de criar conta.
Vincular por e-mail é exatamente tão seguro quanto a verificação do provedor. Se um provedor deixa alguém declarar um endereço sem prová-lo, qualquer um poderia registrar lá o endereço de uma vítima e chegar à conta aqui. Ligue a confiança só para provedores que comprovam o controle do endereço.

Contas criadas no primeiro login

  • A conta é criada sem senha e vinculada ao client pelo qual a pessoa chegou. O webhook user_created é publicado.
  • Ela conta para a cota de usuários do plano dono do realm. Sem vaga, o login é recusado com uma mensagem que a pessoa entende.
  • O nome de usuário é o do provedor; senão, o e-mail; senão, o alias do provedor e o subject unidos por um sublinhado.
  • O e-mail só é marcado como confirmado quando o provedor é confiável e declarou que o endereço foi verificado.

Depois do provedor

Voltar do provedor não é o fim do login. O Authio trata esse retorno como qualquer outro primeiro fator:

  • Ele conta como um fator, faça o provedor o que fizer, e é registrado como fed no amr; o alias do provedor vai na claim idp. As etapas de segundo fator do client continuam valendo: Google mais uma aprovação por push resulta em acr 2.
  • Valem as mesmas recusas do login por senha: conta suspensa ou inativa, sem acesso ao client, endereço de origem não aprovado.
  • Se o client oferece passkeys e a conta não tem nenhuma, a etapa de cadastro é oferecida.
  • Os erros do provedor viram uma mensagem fixa no login hospedado, com a marca e o idioma do client; uma pessoa que recusa no provedor é tratada como uma escolha, não como uma falha.

O que a sua aplicação pediu segue até o provedor na medida em que cada um entende:

ProvedorRecebe do pedido original
OpenID Connect, Microsoft Entra IDprompt=login, prompt=select_account, max_age e login_hint
Googleprompt=select_account, max_age e login_hint; prompt=login é enviado como max_age=0
GitHubSó prompt=select_account
AppleNenhum deles

Papéis a partir das claims do provedor

Um provedor pode conceder papéis. Na aba Acesso do provedor, adicione regras que transformam uma claim enviada pelo provedor — groups contendo financeiro, um departamento, um tenant — num papel do realm. As regras rodam em todo login federado.

Parte da regraValores
ComparaçãoEquals (valor exato), Contains (item de uma lista), StartsWith (prefixo, para caminhos como acme/engineering/backend) ou Present (a claim existe). As comparações diferenciam maiúsculas de minúsculas.
Quando a claim não vemWithdraw retira o papel (o padrão), Keep mantém, Refuse recusa o login, para claims indispensáveis.

Uma claim que chega e não casa sempre retira o papel. As regras só mexem nos papéis concedidos pelas regras do mesmo provedor: papéis dados à mão ou por grupo nunca são retirados. Antes de salvar, a pré-visualização mostra o que uma regra concederia ou retiraria, reproduzindo o último login real de uma pessoa ou claims que você digita.

Como o broker protege o login

  • PKCE com S256 em todos os provedores, inclusive os confidenciais, um state opaco de uso único válido por 15 minutos e um nonce conferido no ID token.
  • O ID token do provedor é validado por inteiro: assinatura contra as chaves publicadas, emissor, audiência e validade.
  • Só os provedores oferecidos no client podem ser usados a partir do login dele, e só enquanto estiverem ativos.
  • As chamadas ao provedor, inclusive ao documento de descoberta e às chaves dele, vão só para endereços públicos e nunca seguem redirecionamentos.
  • A sua aplicação nunca recebe os tokens do provedor, só um código comum do Authio.

Ocultar e remover um provedor

Ocultar um provedor em Provedores de identidade o deixa inativo: o botão some de todas as telas de login e o broker recusa logins por ele. Mostrar de novo é imediato.

Remover um provedor mantém as contas que chegaram por ele, mas elas perdem esse caminho de entrada. Quem não tem senha precisa de outro meio de entrar, como uma redefinição de senha ou uma passkey.

Próximos passos

Cookies de analytics

Gostaríamos de medir como o console é usado, com o Google Analytics, para enxergar em quais telas as pessoas travam. Isso grava um cookie que reconhece este navegador na sua próxima visita.

Recusar não muda mais nada. Os cookies que mantêm você conectado e lembram o seu idioma e o seu tema são necessários para o console funcionar, e ficam de qualquer forma. Ler a Política de Privacidade