"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Tipos de autenticação: JWT, OAuth e integração segura com Google e Facebook

Tipos de autenticação: JWT, OAuth e integração segura com Google e Facebook

Publicado em 31/10/2024
Navegar:132

Authentication Types: JWT, OAuth, and Secure Integration with Google and Facebook

No mundo do desenvolvimento web moderno, a autenticação é essencial para garantir acesso seguro ao seu aplicativo. Existem várias maneiras de lidar com a autenticação do usuário, e alguns dos métodos mais populares incluem JWT (JSON Web Token) e OAuth. Nesta postagem, exploraremos esses métodos e mostraremos como integrar a autenticação com serviços populares como Google e Facebook, tudo isso enquanto mantém seu sistema seguro.

O que é autenticação?

Autenticação é o processo de verificação da identidade de um usuário que tenta acessar um sistema. Quando você faz login em um aplicativo, a autenticação garante que você é quem diz ser.

Existem vários métodos de autenticação, incluindo:

  • Autenticação baseada em senha: o método mais comum em que os usuários fornecem um nome de usuário e uma senha.
  • Autenticação baseada em token: os usuários recebem um token após o login, que é usado para autenticar solicitações subsequentes.
  • OAuth: permite que serviços de terceiros verifiquem usuários, fornecendo acesso sem compartilhar senhas.

O que é JWT (JSON Web Token)?

JSON Web Token (JWT) é um método popular para proteger APIs e aplicativos de página única (SPAs). Um JWT é um token compacto e seguro para URL usado para transmitir informações com segurança entre as partes.

Aqui está o que constitui um JWT:

  • Cabeçalho: Contém informações sobre o tipo de token e algoritmo de assinatura (por exemplo, HMAC, RSA).
  • Payload: contém as reivindicações ou dados que estão sendo transferidos (por exemplo, ID do usuário, prazo de validade).
  • Assinatura: Garante a integridade do token verificando se os dados não foram alterados.

Exemplo de JWT

{
  "header": {
    "alg": "HS256",
    "typ": "JWT"
  },
  "payload": {
    "sub": "1234567890",
    "name": "John Doe",
    "iat": 1516239022
  },
  "signature": "SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"
}

O JWT é criado codificando o cabeçalho, a carga útil e a assinatura usando uma chave secreta. Esse token é então enviado ao cliente (geralmente armazenado em armazenamento local ou cookies) e repassado junto com cada solicitação para autenticar o usuário.

Funciona assim:

sequenceDiagram
    participant User
    participant Server
    User ->> Server: Sends Login Credentials
    Server ->> User: Sends JWT
    User ->> Server: Requests Data with JWT
    Server ->> User: Verifies Token, Responds with Data

Por que usar JWT?

  1. Sem estado: O servidor não precisa armazenar nenhum dado de sessão. O JWT contém todas as informações necessárias.
  2. Escalável: como não há armazenamento de sessão no servidor, é mais fácil dimensionar aplicativos.
  3. Segurança: A assinatura garante que o token não foi adulterado.

O que é OAuth?

OAuth é um padrão aberto para autorização. Ele permite que os usuários façam login em aplicativos de terceiros usando suas contas existentes (por exemplo, Google, Facebook) sem compartilhar suas credenciais com o aplicativo de terceiros.

OAuth funciona emitindo tokens de acesso que permitem que serviços de terceiros interajam com outras plataformas em nome do usuário.

Aqui está um fluxo básico para OAuth:

sequenceDiagram
    participant User
    participant App
    participant Google/Facebook
    User ->> App: Login with Google/Facebook
    App ->> Google/Facebook: Requests Authorization
    Google/Facebook ->> User: User Authorizes Access
    Google/Facebook ->> App: Sends Access Token
    App ->> User: Authenticated!
  1. O usuário clica em Login com Google ou Login com Facebook.
  2. O aplicativo redireciona o usuário para o Google/Facebook para autenticação.
  3. O usuário consente permitir acesso a informações específicas (por exemplo, perfil, e-mail).
  4. O Google/Facebook fornece um token de acesso ao aplicativo.
  5. O aplicativo usa o token para fazer solicitações de API autorizadas em nome do usuário.

Por que usar o OAuth?

  1. Conveniência: os usuários não precisam criar uma nova senha ou conta.
  2. Segurança: os usuários nunca compartilham suas credenciais diretamente com seu aplicativo.
  3. Padronizado: OAuth é amplamente suportado por plataformas como Google, Facebook, Twitter, etc.

Integrando OAuth com Google e Facebook

Para integrar o OAuth ao Google ou Facebook, siga estas etapas:

Etapa 1: crie um aplicativo no Google ou Facebook

  • Para o Google, acesse o Google Developer Console e crie um projeto.
  • Para o Facebook, acesse o Facebook Developer Portal e configure um novo aplicativo.

Etapa 2: Obtenha o ID do cliente e o segredo do cliente

Você receberá um ID do cliente e um Segredo do cliente do Google ou Facebook. Eles são usados ​​para identificar seu aplicativo e autorizá-lo.

Etapa 3: configurar o OAuth em seu aplicativo

Aqui está um exemplo usando Node.js e Passport.js para implementar a autenticação do Google:

const passport = require('passport');
const GoogleStrategy = require('passport-google-oauth20').Strategy;

passport.use(new GoogleStrategy({
    clientID: process.env.GOOGLE_CLIENT_ID,
    clientSecret: process.env.GOOGLE_CLIENT_SECRET,
    callbackURL: '/auth/google/callback'
  },
  function(token, tokenSecret, profile, done) {
    // Save the user info from the profile
    return done(null, profile);
  }
));

// Routes for authentication
app.get('/auth/google', passport.authenticate('google', { scope: ['profile', 'email'] }));

app.get('/auth/google/callback', 
  passport.authenticate('google', { failureRedirect: '/' }),
  function(req, res) {
    // Successful authentication
    res.redirect('/dashboard');
  });

Neste exemplo:

  1. O usuário clica em "Login com Google".
  2. O usuário é redirecionado ao Google para autenticação.
  3. Após o login bem-sucedido, o Google redireciona o usuário de volta ao seu aplicativo com um token de acesso.

Protegendo a autenticação

A segurança é crítica ao implementar a autenticação. Aqui estão algumas práticas recomendadas para proteger seu sistema de autenticação:

1. Usar HTTPS

Sempre use HTTPS para criptografar dados transmitidos entre o cliente e o servidor. Isso evita que invasores interceptem informações confidenciais.

2. Implementar expiração do token

Tokens (especialmente JWTs) devem ter um prazo de validade para reduzir o risco de reutilização de tokens. Por exemplo, você pode definir JWTs para expirarem em 15 minutos e usar tokens de atualização para gerar novos tokens.

3. Armazenar tokens com segurança

Para aplicativos da Web, armazene tokens em cookies httpOnly em vez de armazenamento local. Isso evita que ataques baseados em JavaScript (como XSS) acessem o token.

4. Rodar tokens

Gire e invalide tokens periodicamente para minimizar os danos causados ​​por tokens vazados.

5. Use segredos fortes do cliente

Certifique-se de que seu ID do cliente e Segredo do cliente sejam fortes e nunca expostos ao público. Armazene-os com segurança usando variáveis ​​de ambiente.

Conclusão

A autenticação é um aspecto fundamental de qualquer aplicação web e há várias maneiras de lidar com isso. O JWT fornece uma abordagem escalonável e sem estado, enquanto o OAuth oferece integração perfeita com serviços de terceiros, como Google e Facebook.

Seguindo as melhores práticas de segurança, você pode garantir que seu sistema de autenticação não seja apenas fácil de usar, mas também seguro.

Declaração de lançamento Este artigo é reproduzido em: https://dev.to/ivannalon/authentication-types-jwt-oauth-and-secure-integration-with-google-and-pacebook-3do6?1 Se houver alguma violação, entre em contato com [email protected] para deletá-lo.
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3