Quero entender o que significa autenticação baseada em token. Eu procurei na internet, mas não consegui encontrar nada compreensível.
Quero entender o que significa autenticação baseada em token. Eu procurei na internet, mas não consegui encontrar nada compreensível.
Respostas:
Eu acho que está bem explicado aqui - citando apenas as principais frases do longo artigo:
O conceito geral por trás de um sistema de autenticação baseado em token é simples. Permita que os usuários insiram seu nome de usuário e senha para obter um token que permita buscar um recurso específico - sem usar seu nome de usuário e senha. Após a obtenção do token, o usuário pode oferecer o token - que oferece acesso a um recurso específico por um período de tempo - ao site remoto.
Em outras palavras: adicione um nível de indireção para autenticação - em vez de ter que se autenticar com nome de usuário e senha para cada recurso protegido, o usuário se autentica dessa maneira uma vez (em uma sessão de duração limitada), obtém um token por tempo limitado em troca e usa esse token para autenticação adicional durante a sessão.
As vantagens são muitas - por exemplo, o usuário pode passar o token, uma vez obtido, para algum outro sistema automatizado no qual ele esteja disposto a confiar por um tempo limitado e um conjunto limitado de recursos, mas não estaria disposto confiar em seu nome de usuário e senha (ou seja, com todos os recursos que eles têm permissão para acessar, para todo o sempre ou pelo menos até que eles mudem sua senha).
Se algo ainda não estiver claro, edite sua pergunta para esclarecer o que não é 100% claro para você e tenho certeza de que podemos ajudá-lo.
De Auth0.com
Autenticação baseada em token, depende de um token assinado enviado ao servidor em cada solicitação.
Quais são os benefícios de usar uma abordagem baseada em token?
Entre domínios / CORS: cookies + CORS não funcionam bem em domínios diferentes. Uma abordagem baseada em token permite fazer chamadas AJAX para qualquer servidor, em qualquer domínio, porque você usa um cabeçalho HTTP para transmitir as informações do usuário.
Sem estado (também conhecido como escalabilidade no lado do servidor): não há necessidade de manter um armazenamento de sessão, o token é uma entidade independente que transmite todas as informações do usuário. O restante do estado vive em cookies ou armazenamento local no lado do cliente.
CDN: você pode veicular todos os ativos do seu aplicativo a partir de uma CDN (por exemplo, javascript, HTML, imagens etc.), e o servidor é apenas a API.
Dissociação: você não está vinculado a nenhum esquema de autenticação específico. O token pode ser gerado em qualquer lugar, portanto, sua API pode ser chamada de qualquer lugar com uma única maneira de autenticar essas chamadas.
Pronto para celular: quando você começa a trabalhar em uma plataforma nativa (iOS, Android, Windows 8, etc.), os cookies não são ideais quando consumir uma abordagem baseada em token simplifica muito isso.
CSRF: como você não depende de cookies, não precisa se proteger contra solicitações entre sites (por exemplo, não seria possível enviar seu site para outro local, gerar uma solicitação POST e reutilizar o cookie de autenticação existente, pois não haverá nenhum. )
Desempenho: não estamos apresentando nenhum benchmark de desempenho aqui, mas uma ida e volta da rede (por exemplo, encontrar uma sessão no banco de dados) provavelmente levará mais tempo do que calcular um HMACSHA256 para validar um token e analisar seu conteúdo.
A token
é um dado que apenas Server X
poderia ter sido criado e que contém dados suficientes para identificar um usuário específico.
Você pode apresentar suas informações de login e solicitar Server X
um token
; e, em seguida, você pode apresentar token
e pedir Server X
para executar alguma ação específica do usuário.
Token
s são criados usando várias combinações de várias técnicas do campo da criptografia, bem como com informações do campo mais amplo da pesquisa de segurança. Se você decidir criar seu próprio token
sistema, é melhor ser realmente inteligente.
Um token é um dado criado pelo servidor e contém informações para identificar um usuário específico e a validade do token. O token conterá as informações do usuário, bem como um código de token especial que o usuário pode passar para o servidor com todos os métodos que suportam autenticação, em vez de passar diretamente um nome de usuário e senha.
A autenticação baseada em token é uma técnica de segurança que autentica os usuários que tentam efetuar login em um servidor, rede ou outro sistema seguro, usando um token de segurança fornecido pelo servidor.
Uma autenticação é bem-sucedida se um usuário puder provar a um servidor que ele é um usuário válido, passando um token de segurança. O serviço valida o token de segurança e processa a solicitação do usuário.
Depois que o token é validado pelo serviço, ele é usado para estabelecer o contexto de segurança para o cliente, para que o serviço possa tomar decisões de autorização ou atividade de auditoria para solicitações sucessivas do usuário.
Baseado em token (segurança / autenticação)
significa que, para provarmos que temos acesso, primeiro precisamos receber o token. Em um cenário da vida real, o token pode ser um cartão de acesso à construção, pode ser a chave da fechadura da sua casa. Para recuperar um cartão-chave para o seu escritório ou a chave da sua casa, primeiro você precisa provar quem é e que, de fato, tem acesso a esse token. Pode ser algo tão simples quanto mostrar a alguém o seu ID ou fornecer uma senha secreta. Imagine que eu preciso ter acesso ao meu escritório. Vou até o escritório de segurança, mostro minha identidade e eles me dão esse símbolo, que me deixa entrar no prédio. Agora eu tenho acesso irrestrito para fazer o que eu quiser dentro do prédio, desde que eu tenha meu token comigo.
Qual é o benefício da segurança baseada em token?
Se pensarmos na API insegura, o que tínhamos que fazer nesse caso era que precisássemos fornecer nossa senha para tudo o que queríamos fazer.
Imagineque toda vez que entramos em uma porta de nosso escritório, precisamos fornecer a todos os que estão sentados ao lado da porta nossa senha. Agora isso seria muito ruim, porque isso significa que qualquer pessoa em nosso escritório poderia pegar nossa senha e nos representar, e isso é muito ruim. Em vez disso, o que fazemos é recuperar o token, é claro, juntamente com a senha, mas o recuperamos de uma pessoa. E então podemos usar esse token onde quisermos dentro do edifício. Obviamente, se perdermos o token, teremos o mesmo problema de alguém saber nossa senha, mas isso nos leva a coisas como garantir que, se perdermos o token, podemos revogar o acesso e talvez o token. não deve durar mais de 24 horas; portanto, no dia seguinte em que chegamos ao escritório, precisamos mostrar nossa identidade novamente. Ainda assim, há apenas uma pessoa para quem mostramos o ID,
A questão é antiga e a tecnologia avançou, eis o estado atual:
O JSON Web Token (JWT) é um padrão aberto baseado em JSON (RFC 7519) para transmitir declarações entre partes no ambiente de aplicativos da web. Os tokens foram projetados para serem compactos, seguros para URL e utilizáveis, especialmente no contexto de logon único (SSO) do navegador da web.
É apenas o hash associado ao usuário no banco de dados ou de alguma outra maneira. Esse token pode ser usado para autenticar e autorizar um usuário a acessar o conteúdo relacionado ao aplicativo. Para recuperar esse token no login do lado do cliente é necessário. Após o primeiro login, você precisa salvar o token recuperado e não outros dados como sessão, ID da sessão, porque aqui tudo é token para acessar outros recursos do aplicativo.
O token é usado para garantir a autenticidade do usuário.
Atualmente, a abordagem mais preferida para proteger os recursos da API da Web é autenticar os usuários no servidor da API da Web usando o token assinado (que contém informações suficientes para identificar um usuário específico) que precisa ser enviado ao servidor pelo cliente com cada um e todo pedido. Isso é chamado de abordagem de autenticação baseada em token.
A autenticação baseada em token funciona da seguinte maneira:
Um usuário digita o nome e a senha no cliente (cliente significa o navegador ou dispositivos móveis etc).
O cliente envia essas credenciais (ou seja, nome de usuário e senha) ao Servidor de Autorização.
Em seguida, o servidor de autorização autentica as credenciais do cliente (ou seja, nome de usuário e senha) e, em seguida, gera e retorna um token de acesso. Este token de acesso contém informações suficientes para identificar um usuário e também o tempo de expiração do token.
O aplicativo cliente inclui o token de acesso no cabeçalho de autorização da solicitação HTTP para acessar os recursos restritos do servidor de recursos até que o token expire.
O artigo a seguir mostra como implementar a autenticação baseada em token na API WEB passo a passo.
https://dotnettutorials.net/lesson/token-based-authentication-web-api/
Quando você se registra em um novo site, geralmente recebe um email para ativar sua conta. Esse e-mail normalmente contém um link para clicar. Parte desse link, contém um token, o servidor conhece esse token e pode associá-lo à sua conta. O token geralmente tem uma data de validade associada a ele; portanto, você pode ter apenas uma hora para clicar no link e ativar sua conta. Nada disso seria possível com cookies ou variáveis de sessão, pois não se sabe qual dispositivo ou navegador o cliente está usando para verificar e-mails.