DEV Community

Cover image for Tutorial OpenID Connect: Guia Completo Passo a Passo
Lucas
Lucas

Posted on • Originally published at apidog.com

Tutorial OpenID Connect: Guia Completo Passo a Passo

OpenID Connect se tornou o padrão da indústria para autenticação segura e moderna e para o single sign-on (SSO). Se você está procurando um tutorial de OpenID Connect claro, prático e exaustivo, está no lugar certo. Este guia vai te mostrar o que é OpenID Connect, por que ele é importante, seus conceitos centrais, o fluxo de autenticação, implementação prática e exemplos de uso real.

Experimente o Apidog hoje

O que é OpenID Connect? (Noções Básicas do Tutorial de OpenID Connect)

OpenID Connect é um protocolo de autenticação baseado no framework OAuth 2.0. Enquanto OAuth 2.0 é para autorização (acesso a recursos), OpenID Connect é para autenticação — verificar a identidade do usuário e fornecer informações seguras de perfil.

  • Autenticação Segura: Evita sistemas caseiros e inseguros de login.
  • Single Sign-On (SSO): Permite login em múltiplas aplicações com um único provedor de identidade.
  • Interoperabilidade: Funciona em aplicações web, mobile e APIs.
  • Informações de Perfil: Retorna dados de identidade e perfil em tokens JWT padronizados.

Neste tutorial, você vai ver como esses benefícios são implementados, etapa por etapa.

Conceitos Chave para este Tutorial de OpenID Connect

Antes do fluxo prático, entenda os principais termos:

  • Provedor de Identidade (IdP): Serviço que autentica usuários (ex: Google, Auth0, Okta).
  • Cliente (Parte Confiável): Sua aplicação web/mobile/API que pede autenticação.
  • Usuário Final: Quem está autenticando.
  • Servidor de Autorização: Normalmente o IdP; emite tokens após autenticação.
  • ID Token: JWT com informações de identidade do usuário.
  • Access Token: Usado para acessar APIs protegidas.
  • Discovery Document: Endpoint que fornece metadados e URLs do IdP.

Tutorial de OpenID Connect: O Fluxo de Autenticação Explicado

Veja o fluxo de autenticação OpenID Connect, passo a passo:

1. Usuário Inicia o Login

O usuário clica em "Fazer Login com OpenID Connect" na sua aplicação.

2. Cliente Redireciona para o Servidor de Autorização

Redirecione o navegador para o endpoint de autorização do IdP, com parâmetros:

  • client_id
  • redirect_uri
  • scope (incluindo openid)
  • state
  • response_type (geralmente code)

Exemplo de URL:

https://idp.example.com/authorize?
  client_id=YOUR_CLIENT_ID
  &redirect_uri=https://yourapp.com/callback
  &scope=openid%20profile%20email
  &response_type=code
  &state=randomState123
Enter fullscreen mode Exit fullscreen mode

3. Usuário se Autentica

O IdP mostra a tela de login, o usuário preenche as credenciais e consente o compartilhamento do perfil.

4. Servidor de Autorização Redireciona de Volta

Após autenticação, o IdP redireciona para sua redirect_uri com o código de autorização e state.

Exemplo:

https://yourapp.com/callback?code=AUTH_CODE&state=randomState123
Enter fullscreen mode Exit fullscreen mode

5. Cliente Troca Código por Tokens

Seu backend troca o código por tokens via POST para o endpoint de token do IdP.

Exemplo HTTP POST:

POST /token
Host: idp.example.com
Content-Type: application/x-www-form-urlencoded

grant_type=authorization_code
&code=AUTH_CODE
&redirect_uri=https://yourapp.com/callback
&client_id=YOUR_CLIENT_ID
&client_secret=YOUR_CLIENT_SECRET
Enter fullscreen mode Exit fullscreen mode

6. Tokens Retornados

Resposta do IdP:

  • id_token (JWT com dados do usuário)
  • access_token (acesso a APIs)
  • refresh_token (opcional)

Exemplo de resposta JSON:

{
  "access_token": "eyJ...abc",
  "id_token": "eyJ...xyz",
  "expires_in": 3600,
  "token_type": "Bearer"
}
Enter fullscreen mode Exit fullscreen mode

7. Cliente Valida e Usa Tokens

Valide o id_token (assinatura, audiência, expiração) e faça o login do usuário. Use o access_token para consumir APIs protegidas.

Tutorial de OpenID Connect: Compreendendo os Fluxos

OpenID Connect suporta diferentes fluxos. O mais seguro e comum é o Fluxo de Código de Autorização.

Fluxo de Código de Autorização (Recomendado para Aplicações Web)

  • Mais seguro (tokens não expostos ao navegador)
  • Permite validação no backend
  • Ideal para aplicações com backend (clientes confidenciais)

Por que evitar o Fluxo Implícito?

O Fluxo Implícito expõe tokens na URL do navegador e não é mais recomendado. Sempre prefira o Fluxo de Código com PKCE, especialmente para SPAs.

Tutorial de OpenID Connect: Decodificando o ID Token

O id_token é um JWT (JSON Web Token), que pode ser decodificado para extrair dados do usuário.

Exemplo de payload:

{
  "iss": "https://idp.example.com",
  "sub": "1234567890",
  "aud": "YOUR_CLIENT_ID",
  "exp": 1712345678,
  "iat": 1712341678,
  "email": "user@example.com",
  "name": "Jane Doe"
}
Enter fullscreen mode Exit fullscreen mode
  • iss: Emissor (IdP)
  • sub: ID do usuário
  • aud: Seu client_id
  • exp: Expiração
  • email, name: Claims de perfil

Dica: Sempre valide assinatura e claims do ID token antes de autenticar o usuário.

Tutorial de OpenID Connect: Exemplo Prático (Python)

Veja como implementar o fluxo usando Python puro:

Passo 1: Construir a URL de Autorização

import urllib.parse

params = {
    "client_id": "YOUR_CLIENT_ID",
    "redirect_uri": "https://yourapp.com/callback",
    "response_type": "code",
    "scope": "openid profile email",
    "state": "randomState123"
}
auth_url = "https://idp.example.com/authorize?" + urllib.parse.urlencode(params)
print(auth_url)
Enter fullscreen mode Exit fullscreen mode

Passo 2: Trocar Código de Autorização por Tokens

import requests

token_data = {
    "grant_type": "authorization_code",
    "code": "AUTH_CODE",
    "redirect_uri": "https://yourapp.com/callback",
    "client_id": "YOUR_CLIENT_ID",
    "client_secret": "YOUR_CLIENT_SECRET"
}
resp = requests.post("https://idp.example.com/token", data=token_data)
tokens = resp.json()
print(tokens)
Enter fullscreen mode Exit fullscreen mode

Passo 3: Decodificar e Validar o ID Token

import jwt

id_token = tokens['id_token']
decoded = jwt.decode(id_token, options={"verify_signature": False})
print(decoded)
Enter fullscreen mode Exit fullscreen mode

Nota: Em produção, valide a assinatura usando a chave pública do IdP!

Tutorial de OpenID Connect: Cenários de Aplicação Prática

1. Single Sign-On (SSO) em Múltiplas Aplicações

Implemente SSO: o usuário se autentica uma vez (ex: Google) e acessa todas as suas aplicações. Use o fluxo acima para implementar SSO empresarial.

2. Autenticação Segura de API

Autentique consumidores de API: valide o ID token no backend para cada requisição. Ferramentas como o Apidog ajudam a projetar e testar endpoints de API seguros rapidamente.

3. Integração de Login Social

Para "Login com Google" ou "Login com Microsoft", siga este tutorial para integrar os provedores usando OpenID Connect.

4. Autenticação de Aplicativos Móveis

Utilize o mesmo fluxo em apps móveis, usando deep links ou navegadores in-app para autenticação.

Tutorial de OpenID Connect: Testando e Depurando com Apidog

Durante o desenvolvimento de integrações OpenID Connect, testes robustos de API são essenciais. O Apidog é uma plataforma de desenvolvimento de API orientada por especificação que simplifica design, mocking e testes de APIs.

  • Teste de Requisições: Simule requisições de token e valide respostas visualmente no Apidog.
  • Mocking de Endpoints: Crie endpoints IdP simulados no Apidog para testar autenticação sem provedores reais.
  • Documentação: Documente APIs seguras com OpenID Connect no Apidog e facilite colaboração frontend/backend.

Integrando o Apidog ao seu fluxo, você acelera o desenvolvimento, reduz bugs e garante autenticação sólida.

Tutorial de OpenID Connect: Melhores Práticas

  • Valide sempre os ID tokens: Assinatura, emissor, audiência e expiração.
  • Use HTTPS sempre: Nunca transmita tokens em canais inseguros.
  • Proteja segredos: Mantenha client_secret e tokens seguros.
  • Trate erros corretamente: Lide com erros de login, tokens expirados e sessões revogadas.
  • Mantenha-se atualizado: OpenID Connect evolui; mantenha suas libs e conhecimento atualizados.

Conclusão: Próximos Passos Após Este Tutorial de OpenID Connect

Você finalizou um tutorial prático e completo de OpenID Connect — cobrindo protocolo, fluxos, implementação e cenários reais. OpenID Connect é o padrão ouro de autenticação moderna, e dominar esse fluxo aumenta a segurança e experiência do usuário.

Próximos passos:

  1. Cadastre sua aplicação em um IdP confiável (Google, Auth0, Okta ou próprio).
  2. Implemente o Fluxo de Código de Autorização seguindo este passo a passo.
  3. Teste os fluxos com o Apidog para garantir segurança e robustez.
  4. Aprofunde seu conhecimento em tópicos avançados como OpenID Connect Discovery, registro dinâmico e identidade federada.

Com este tutorial, você está pronto para implementar autenticação segura e moderna em qualquer aplicação. Boa codificação!

Top comments (0)