uma requisição com o Header Authorization: Basic - Usuário e senhas em encoding base64 separados por ":" - Inclui o usuário no header após Basic - Envia a request - Se receber um outro header WWW-Authenticate vai chamar um prompt para login Server: - Deve responder com o header WWW-Authenticate para logins inválidos
enviados - Usuário e senha não são criptografados - Não existe meio de deslogar o usuário - Não é trivial expirar as credenciais - Usuário ou senha não podem conter ":" - Nenhuma segurança se estiver em sites HTTP (sem SSL)
uma requisição para o server, que responde com 401 e um nonce 2. Cliente pega o nonce e monta um hash MD5(user:realm:password:nonce) a. Cliente pode incluir outras informações como URI b. Cliente pode gerar um nonce próprio 3. Server compara o MD5 enviado com sua própria versão gerada com o usuário encontrado
do Basic - Vulnerável a ataques Man-in-the-middle - Um dos dados sensíveis do usuário precisa ser reversível - Aumenta o número de requests - MD5 não é seguro
de autenticação por muito tempo - Armazenamento de sessão do lado do servidor - Utilização de cookies para armazenar o ID desta sessão - O ID da sessão é enviado a cada request
post com usuário e senha para o servidor 2. Servidor autentica usuário e cria uma sessão no banco de dados 3. Servidor envia header Set-Cookie para o client com o ID da sessão 4. Todas as requisições subsequentes são feitas com o cookie
um protocolo Stateless - O cookie pode ser roubado facilmente - Não funciona bem para SPAs - Não escala bem no server - Requer armazenamento em banco de sessões
que uma aplicação se autentique em um servidor como se fosse um usuário - Muito utilizado quando temos que ter terceiros usando nossas APIs (Facebook, Twitter) - Comum em APIs públicas - Delega autorização por escopo
- Dono do recurso (usuário) - Cliente - Servidor de recurso - Servidor de autorização 1. A aplicação solicita autorização 2. Usuário concede autorização 3. Aplicação recebe uma concessão 4. Aplicação requisita um token usando sua identidade e a concessão do usuário 5. Servidor emite um token de acesso 6. Aplicação usa o token para requisitar qualquer dado
delegada para outra pessoa - Autorização por escopo - Permissionamento em partes pelo usuário - Facilidade de acesso de APIs de terceiros - Uma vez logado, não é necessário logar novamente
autenticação está em poder de terceiros - Complicada implementação - Provedores diferentes possuem modelos diferentes de autenticação - Níveis de privilégios podem criar muito overhead na aplicação
Token leve, mas com toda a informação necessária - Mutável, sendo possível adicionar mais dados no login - Diminui a quantidade de informação que o servidor precisa buscar - Consiste em um cabeçalho, um payload e uma assinatura - Enviado através do header Authorization com o tipo Bearer
de chamadas que devem ser feitas ao servidor - Não é suscetível a Man in the Middle - Possui todas as informações do usuário - Extensível - Controle de expiração simples - Controle de escopo - Pode ser usado entre serviços
da request - Single point of failure no secret - Não é possível gerenciar clientes a partir do servidor - Tamanho do token tende a crescer com o tamanho dos dados