O Google permite o uso de autenticação OAuth para buscar e-mails, mas também o uso de uma longa "senha de aplicativo" gerada pelo Google em vez de uma senha de conta. O Yahoo/AT&T também permite o uso de uma "chave de correio seguro" em vez de OAuth - a "chave de correio seguro" parece a mesma que uma "senha de aplicativo". Como o OAuth oferece mais segurança e quais outras vantagens o OAuth oferece em relação à "senha do aplicativo"?
São semelhantes, mas:
As senhas de aplicativos são gerenciadas manualmente (copiar e colar, etc.) com cada site tendo seu próprio mecanismo. Os tokens OAuth2 são emitidos mais ou menos automaticamente de maneira mais ou menos padrão.
(Em teoria, o OAuth2 também tem fluxos que permitem que dispositivos limitados (por exemplo, smart TVs com teclados na tela tediosos) obtenham tokens sem muita entrada – você faz login através do seu computador para obter um PIN numérico, insira esse PIN no seu smart torradeira ou geladeira ou o que for, e agora tem um token OAuth2 sem a necessidade de inserir uma senha longa de aplicativo.)
Na maioria dos serviços, todas as senhas de aplicativos concedem de forma idêntica a mesma ampla variedade de permissões. Os tokens OAuth2 concedem apenas o acesso específico que você confirmou (por exemplo, apenas Gmail, Drive ou Agenda).
(Alguns serviços, como o GitHub, permitem especificar escopos mesmo para senhas de aplicativos, mas você ainda precisa saber exatamente quais serão necessários, e eu aposto que a maioria das pessoas apenas clica em "Todos eles, obrigado" e depois usa esse único aplicativo senha em todos os lugares.)
OAuth2 usa um sistema de duas camadas, com um token de "atualização" de longa duração que é enviado apenas para o servidor de autenticação e um token de "acesso" de curta duração que o cliente substitui a cada X dias.
Dependendo de como o serviço foi projetado, isso pode realmente proteger contra alguns comprometimentos de segurança do lado do serviço (por exemplo, um servidor IMAP comprometido pode coletar senhas de aplicativos válidas para sempre, mas não pode obter tokens de atualização OAuth2 – apenas tokens de acesso temporários).
As senhas de aplicativos funcionam com qualquer aplicativo. OAuth2 exige que cada desenvolvedor registre seu aplicativo como um "cliente" e permite que o Google ou o Yahoo imponham quaisquer políticas de desenvolvimento tolas que quiserem nesta semana.