Provedores de identidade: O que é a autenticação baseada em token?
A autenticação baseada em token é um protocolo de autenticação em que os usuários verificam sua identidade em troca de um token de acesso único. Os usuários podem então acessar o site, aplicativo ou recurso durante a validade do token sem ter que reinserir suas credenciais.
Como funciona a autenticação baseada em token?
A autenticação baseada em token começa com o login de um usuário em um sistema, dispositivo ou aplicativo, normalmente usando uma senha ou uma pergunta de segurança. Um servidor de autorização valida essa autenticação inicial e depois emite um token de acesso, que é um pequeno dado que permite a um aplicativo cliente fazer uma chamada ou sinal seguro para um servidor de API.
A autenticação baseada em token funciona oferecendo ao servidor uma segunda maneira, de alta garantia, de verificar a identidade do usuário e a autenticidade da solicitação.
Uma vez concluído este protocolo inicial de autenticação baseada em token, o token funciona como um bilhete carimbado: o usuário pode continuar a acessar continuamente os recursos relevantes, sem autenticar novamente, durante todo o ciclo de vida do token. Esse ciclo de vida termina quando o usuário faz o logout ou sai de um aplicativo e também pode ser acionado por um protocolo de tempo limite definido.
Quais são os benefícios da autenticação baseada em token?
A autenticação baseada em token oferece muitos benefícios a vários interessados:
- Experiências do usuário com perfeição: Ao invés de ter que reinserir credenciais e autenticar novamente a cada vez que retornam a um sistema, aplicativo ou página da Web, o usuário mantém acesso contínuo enquanto o token permanecer válido (geralmente até que a sessão seja encerrada pelo logout ou ao fechar o aplicativo).
- Segurança digital adicionada: A autenticação baseada em token adiciona uma camada adicional de segurança sobre a autenticação tradicional por senha ou por servidor. Os tokens são geralmente muito mais difíceis de roubar, hackear ou comprometer do que uma senha.
- Controle administrativo: A autenticação baseada em token dá aos administradores um controle muito mais detalhado e visibilidade sobre cada ação e transação do usuário.
- Carga técnica mais leve: Como a geração de token pode ser totalmente desacoplada da verificação de token, a verificação pode ser realizada por um serviço secundário como o fornecido pela solução de Gerenciamento de identificação e acesso da Entrust. Isso reduz significativamente os locais de carga em servidores e dispositivos internos.
O que é um token de acesso?
Os tokens de acesso ou de autenticação dão aos usuários acesso a um dispositivo, aplicativo ou outro recurso digital. Há muitos tipos diferentes de tokens disponíveis hoje em dia:
Tokens de hardware
Os tokens de hardware são pequenos dispositivos físicos que os usuários apresentam para ter acesso a um recurso. Os tokens de hardware podem ser conectados (ou seja, por USB, smart card, tags com senha única) ou sem contato (ou seja, tokens por Bluetooth). Estes tokens são portados pelo usuário. Nos primeiros dias da autenticação baseada em token (leia-se: antes dos smartphones), os tokens de hardware eram a única opção. Entretanto, os tokens de hardware são comparativamente caros, estão sujeitos a perda e roubo, consequentemente, muitas vezes requerem um suporte de TI mais significativo.
Tokens de software
Os tokens de software, também chamados tokens desconectados, são verdadeiramente sem contato e podem autenticar a identidade de qualquer lugar. Os exemplos mais comuns de tokens de software são os atuais aplicativos móveis que utilizam smartphones para facilitar a autenticação de dois fatores (2FA), a autenticação multifator (MFA) ou tokens da web por JSON. Os tokens de software são cada vez mais a escolha dominante para autenticação baseada em token, oferecendo vantagens pelo custo reduzido, menor conflito do usuário, menor probabilidade de perda ou roubo e menor risco de ataques humanos.
O que são tokens web de código aberto ou JSON?
O tipo mais comum de tokens desconectados ou de software é o token de código aberto, mais especificamente, o JSON Web Token (JWT). JSON é um padrão de código aberto (RFC 7519) que oferece um protocolo simples e independente para codificar informações como um objeto JSON, o que permite que essas informações sejam transmitidas de forma eficiente e segura entre elas. O JWT ganhou popularidade por ser um objeto extremamente compacto que pode ser transmitido em uma variedade de meios eficientes, inclusive através de strings de consulta, atributos de cabeçalho e dentro do corpo de uma solicitação de POST.
Componentes de um token web de código aberto ou JSON
O JSON web token é composto por três partes distintas:
- Cabeçalho: O tipo de token e algoritmo de criptografia
- Carga útil: As credenciais de autenticação para o recurso em questão
- Assinatura: Uma chave criptográfica para verificar a autenticidade da carga útil
Como implementar a autenticação baseada em token?
Há cinco passos essenciais para implementar um protocolo de autenticação baseado em token:
- Solicitação: Um usuário insere suas credenciais de login
- Verificação: O servidor verifica as credenciais do usuário
- Envio do token: O servidor gera um token que será válido por um período de tempo definido
- Armazenamento: O token é armazenado pelo navegador da web do usuário para uso futuro
- Validade: O token permanece ativo por um determinado período
Quando é recomendada a autenticação baseada em token?
Há muitos casos em que a autenticação por senha ou por servidor é mais do que adequada para atender às necessidades de segurança. Entretanto, há várias características que sinalizam uma situação em que a segurança adicional, o controle e a conveniência do usuário da autenticação baseada em token são particularmente úteis:
- Sistemas/recursos que frequentemente concedem acesso temporário: Se sua base de usuários varia muito por dia ou por hora, o protocolo tradicional de concessão e a seguinte rescisão do acesso temporário de usuários pode ser excessivamente demorado, dispendioso e pesado em termos tecnológicos. Os tokens podem fornecer uma solução dinâmica, ágil e econômica para um acesso temporário seguro e sem problemas.
- Sistemas/recursos que requerem controle de acesso detalhado: Se você precisar controlar o acesso até um nível muito mais detalhado (por exemplo, conceder acesso a partes específicas de um documento ou conceder privilégios específicos de edição ou uso), a autenticação baseada em senha não será suficiente. A autenticação baseada em token é ideal para esses privilégios muito mais detalhados e um controle administrativo mais específico.
- Sistemas/recursos que correm alto risco de invasão ou comprometimento: Se seu recurso digital contém informações particularmente sigilosas, valiosas ou protegidas, a autenticação baseada em token oferece um avanço significativo em relação à autenticação por senha.
- Sistemas/recursos altamente regulamentados: Relacionado ao tópico acima, se seu recurso digital contém informações sigilosas que são protegidas por normas de privacidade de dados ou outros regulamentos, essas normas provavelmente estipulam que a autenticação ocorra além das senhas básicas. A autenticação baseada em token, quando configurada adequadamente, pode atender aos requisitos de conformidade para proteção de alta segurança.
Melhores práticas para autenticação baseada em token de alta segurança
Embora a autenticação baseada em token seja sem dúvida um importante passo acima da autenticação tradicional por senha, o token ainda é considerado um “token do portador”, ou seja, o acesso é concedido a quem quer que possua o token. Isso significa que mesmo os tokens de software, como aplicativos móveis, estão sujeitos a roubo ou comprometimento: se um indivíduo malicioso tomar posse de um token, ele poderá usá-lo para obter acesso não autorizado a recursos e informações protegidas. Para proteger-se contra este risco remanescente de comprometimento e violação, é importante construir seu programa de autenticação baseada em tokens em torno das seguintes melhores práticas:
- Manter o token em sigilo: Os usuários devem tratar o token, seja em hardware ou software, como qualquer credencial de segurança. Isso significa que deve ser armazenado de forma segura, nunca compartilhado e só revelado aos serviços verificados, de modo a evitar perda ou roubo.
- Simplificar a carga útil do token: Os tokens são desenvolvidos para usar a quantidade mínima de informações para autenticar um usuário. Embora sejam codificados, também são facilmente decodificados por indivíduos maliciosos. Por essa razão, nunca coloque informações sensíveis ou protegidas dentro da carga útil do token e procure minimizar as demandas à carga útil. Isso também ajudará a aumentar a velocidade/desempenho.
- Definir a expiração do token e permitir a revogação do token: Um token é normalmente definido para expirar automaticamente quando um usuário sai do sistema ou faz uma saída forçada. Mas, tecnicamente, na ausência desse acionador de fim de sessão, um token assinado não tem expiração incorporada. Para proteger contra ameaças, você deve estabelecer uma expiração padrão em todos os tokens e ter um protocolo para revogar os tokens quando necessário.
- Usar sempre conexões HTTPS: Conexões sem segurança tornam incrivelmente fácil a interceptação e o roubo de tokens em trânsito. Utilize sempre conexões HTTPS ao transmitir tokens de e para o servidor de verificação de tokens.
- Considerar camada(s) adicional(is) ou segurança: Dependendo dos seus requisitos de segurança, pode ser necessário adicionar protocolos adicionais de segurança e autenticação sobre a autenticação básica baseada em token. Por exemplo, alguns casos de uso acrescentam um segundo sistema de verificação de tokens que garante especificamente que todos os tokens sejam gerados a partir do servidor correto.