Configurar login social com protocolo OAuth 2.0 (Set up social login with OAuth 2.0 protocol)
O conector oficial do Logto para o protocolo OAuth 2.0.
Este guia assume que você tem um entendimento básico dos Conectores (Connectors) do Logto. Para aqueles que não estão familiarizados, consulte o guia de Conectores para começar.
Primeiros passos
O conector OAuth permite a conexão do Logto com um provedor de identidade social arbitrário que suporte o protocolo OAuth 2.0. Use o conector OAuth para permitir que seu aplicativo:
- Adicione botões de login social
- Vincule contas de usuários a identidades sociais
- Sincronize informações do perfil do usuário a partir do provedor social
- Acesse APIs de terceiros por meio do armazenamento seguro de tokens no Logto Secret Vault para tarefas de automação (por exemplo, editar Google Docs, gerenciar eventos do Calendário em seu app)
Para configurar esses recursos de autenticação, crie primeiro um conector OAuth 2.0 no Logto:
- Vá para Console do Logto > Conector > Conector social.
- Clique em Adicionar conector social, selecione OAuth 2.0, clique em Próximo e siga o tutorial passo a passo para concluir a integração.
O conector OAuth é um tipo especial de conector no Logto, você pode adicionar vários conectores baseados no protocolo OAuth.
Crie seu app OAuth
Ao abrir esta página, acreditamos que você já sabe qual provedor de identidade social deseja conectar. O primeiro passo é confirmar se o provedor de identidade suporta o protocolo OAuth, que é um pré-requisito para configurar um conector válido. Em seguida, siga as instruções do provedor de identidade para registrar e criar o app relevante para autorização OAuth.
Configure seu conector
Nós SOMENTE suportamos o tipo de concessão "Authorization Code" por questões de segurança e ele se encaixa perfeitamente no cenário do Logto.
clientId
e clientSecret
podem ser encontrados na página de detalhes do seu app OAuth.
clientId: O client ID é um identificador único que identifica o aplicativo cliente durante o registro com o servidor de autorização. Esse ID é usado pelo servidor de autorização para verificar a identidade do aplicativo cliente e associar quaisquer tokens de acesso autorizados a esse aplicativo específico.
clientSecret: O client secret é uma chave confidencial emitida para o aplicativo cliente pelo servidor de autorização durante o registro. O aplicativo cliente usa essa chave secreta para se autenticar com o servidor de autorização ao solicitar tokens de acesso. O client secret é considerado informação confidencial e deve ser mantido seguro o tempo todo.
tokenEndpointAuthMethod: O método de autenticação do endpoint de token é usado pelo aplicativo cliente para se autenticar com o servidor de autorização ao solicitar tokens de acesso. Para descobrir os métodos suportados, consulte o campo token_endpoint_auth_methods_supported
disponível no endpoint de descoberta OpenID Connect do provedor de serviço OAuth 2.0, ou consulte a documentação relevante fornecida pelo provedor de serviço OAuth 2.0.
clientSecretJwtSigningAlgorithm (Opcional): Só é necessário quando tokenEndpointAuthMethod
é client_secret_jwt
. O algoritmo de assinatura JWT do client secret é usado pelo aplicativo cliente para assinar o JWT que é enviado ao servidor de autorização durante a solicitação de token.
scope: O parâmetro scope é usado para especificar o conjunto de recursos e permissões que o aplicativo cliente está solicitando acesso. O parâmetro scope geralmente é definido como uma lista de valores separados por espaço que representam permissões específicas. Por exemplo, um valor de scope "read write" pode indicar que o aplicativo cliente está solicitando acesso de leitura e escrita aos dados do usuário.
Você deve encontrar authorizationEndpoint
, tokenEndpoint
e userInfoEndpoint
na documentação do fornecedor social.
authenticationEndpoint: Este endpoint é usado para iniciar o processo de autenticação. O processo de autenticação normalmente envolve o usuário fazendo login e concedendo autorização para o aplicativo cliente acessar seus recursos.
tokenEndpoint: Este endpoint é usado pelo aplicativo cliente para obter um token de acesso que pode ser usado para acessar os recursos solicitados. O aplicativo cliente normalmente envia uma solicitação ao endpoint de token com um tipo de concessão e código de autorização para receber um token de acesso.
userInfoEndpoint: Este endpoint é usado pelo aplicativo cliente para obter informações adicionais sobre o usuário, como nome completo, endereço de e-mail ou foto de perfil. O endpoint de informações do usuário geralmente é acessado após o aplicativo cliente obter um token de acesso do endpoint de token.
O Logto também fornece um campo profileMap
que os usuários podem personalizar para mapear os perfis dos fornecedores sociais, que geralmente não são padronizados. As chaves são os nomes dos campos padrão do perfil de usuário do Logto e os valores correspondentes devem ser os nomes dos campos dos perfis sociais. No estágio atual, o Logto só se preocupa com 'id', 'name', 'avatar', 'email' e 'phone' do perfil social, sendo apenas 'id' obrigatório e os outros campos opcionais.
responseType
e grantType
SÓ podem ser valores FIXOS com o tipo de concessão authorization code, então os tornamos opcionais e os valores padrão serão preenchidos automaticamente.
Por exemplo, você pode encontrar a resposta do perfil de usuário do Google e, portanto, seu profileMap
deve ser assim:
{
"id": "sub",
"avatar": "picture"
}
Fornecemos uma chave OPCIONAL customConfig
para colocar seus parâmetros personalizados.
Cada provedor de identidade social pode ter sua própria variação no protocolo padrão OAuth. Se o seu provedor de identidade social desejado seguir estritamente o protocolo padrão OAuth, então você não precisa se preocupar com o customConfig
.
Tipos de configuração
Nome | Tipo | Obrigatório |
---|---|---|
authorizationEndpoint | string | true |
userInfoEndpoint | string | true |
clientId | string | true |
clientSecret | string | true |
tokenEndpointResponseType | enum | false |
responseType | string | false |
grantType | string | false |
tokenEndpoint | string | false |
scope | string | false |
customConfig | Record<string, string> | false |
profileMap | ProfileMap | false |
Campos do ProfileMap | Tipo | Obrigatório | Valor padrão |
---|---|---|---|
id | string | false | id |
name | string | false | name |
avatar | string | false | avatar |
string | false | ||
phone | string | false | phone |
Configurações gerais
Aqui estão algumas configurações gerais que não bloqueiam a conexão com seu provedor de identidade, mas podem afetar a experiência de autenticação do usuário final.
Nome e logo do botão social
Se você quiser exibir um botão social na sua página de login, pode definir o nome e o logo (modo escuro e modo claro) do provedor de identidade social. Isso ajudará os usuários a reconhecerem a opção de login social.
Nome do provedor de identidade
Cada conector social tem um nome exclusivo de Provedor de Identidade (IdP) para diferenciar as identidades dos usuários. Enquanto conectores comuns usam um nome de IdP fixo, conectores personalizados exigem um valor exclusivo. Saiba mais sobre nomes de IdP para mais detalhes.
Sincronizar informações do perfil
No conector OAuth, você pode definir a política para sincronizar informações do perfil, como nomes de usuário e avatares. Escolha entre:
- Sincronizar apenas no cadastro: As informações do perfil são buscadas uma vez quando o usuário faz login pela primeira vez.
- Sempre sincronizar no login: As informações do perfil são atualizadas toda vez que o usuário faz login.
Armazenar tokens para acessar APIs de terceiros (Opcional)
Se você quiser acessar as APIs do Provedor de Identidade e realizar ações com autorização do usuário (seja via login social ou vinculação de conta), o Logto precisa obter escopos de API específicos e armazenar tokens.
- Adicione os escopos necessários no campo scope seguindo as instruções acima
- Ative Armazenar tokens para acesso persistente à API no conector OAuth do Logto. O Logto armazenará tokens de acesso com segurança no Cofre de Segredos.
- Para provedores de identidade OAuth/OIDC padrão, o escopo
offline_access
deve ser incluído para obter um token de atualização, evitando solicitações repetidas de consentimento do usuário.
Mantenha seu client secret seguro e nunca o exponha em código do lado do cliente. Se for comprometido, gere um novo imediatamente nas configurações do app do seu provedor de identidade.
Utilize o conector OAuth
Depois de criar um conector OAuth e conectá-lo ao seu provedor de identidade, você pode incorporá-lo aos seus fluxos de usuário final. Escolha as opções que correspondem às suas necessidades:
Ativar botão de login social
- No Logto Console, vá para Experiência de login > Cadastro e login.
- Adicione o conector OAuth na seção Login social para permitir que os usuários se autentiquem com seu provedor de identidade.
Saiba mais sobre experiência de login social.
Vincular ou desvincular uma conta social
Use a Account API para construir um Centro de Conta personalizado em seu app que permita aos usuários autenticados vincular ou desvincular suas contas sociais. Siga o tutorial da Account API
É permitido ativar o conector OAuth apenas para vinculação de conta e acesso à API, sem ativá-lo para login social.
Acessar APIs do provedor de identidade e realizar ações
Seu aplicativo pode recuperar tokens de acesso armazenados do Cofre de Segredos para chamar as APIs do seu provedor de identidade e automatizar tarefas de backend. As capacidades específicas dependem do seu provedor de identidade e dos escopos solicitados. Consulte o guia sobre como recuperar tokens armazenados para acesso à API.
Gerenciar a identidade social do usuário
Depois que um usuário vincula sua conta social, os administradores podem gerenciar essa conexão no Logto Console:
- Navegue até Logto console > Gerenciamento de usuários e abra o perfil do usuário.
- Em Conexões sociais, localize o item do provedor de identidade e clique em Gerenciar.
- Nesta página, os administradores podem gerenciar a conexão social do usuário, ver todas as informações de perfil concedidas e sincronizadas da conta social e verificar o status do token de acesso.
Algumas respostas de token de acesso do Provedor de Identidade não incluem informações específicas de escopo, então o Logto não pode exibir diretamente a lista de permissões concedidas pelo usuário. No entanto, desde que o usuário tenha consentido com os escopos solicitados durante a autorização, seu aplicativo terá as permissões correspondentes ao acessar a API OAuth.