Endereços de e-mail não são adequados como identificadores 'permanentes' de conta
(utcc.utoronto.ca)- Ao criar um ID interno de conta para uso de longo prazo em um sistema, usar o endereço de e-mail como ID permanente só porque o OIDC o retorna faz com que você assuma, ao mesmo tempo, os problemas de mudança e de reutilização
- Mesmo dentro de uma organização, um endereço de e-mail pode mudar, assim como o nome ou o login, então ele não é estável o bastante para servir como valor de referência da conta
- Mesmo que o acesso ou encaminhamento para o endereço antigo continue existindo, isso não garante que ele seguirá funcionando em usos não relacionados a e-mail, como autenticação via OIDC
- O endereço de e-mail pode ser necessário para recuperação de conta, mas se o sistema de autenticação fornecer um ID separado, único e permanente, esse é o valor que deve ser usado como ID interno
- Mesmo que seja um valor invisível para o usuário, é melhor que o identificador interno da conta seja um ID sem significado, o que simplifica a operação de longo prazo e a segurança
Por que dá vontade de usar endereços de e-mail como ID permanente
- Ao criar um identificador interno por conta, o endereço de e-mail surge como candidato porque sistemas de autenticação como o OIDC retornam dados que incluem o endereço de e-mail
- Mas, se você adotar o endereço de e-mail como identificador interno permanente da conta, surgem dois problemas: possibilidade de mudança e possibilidade de reutilização
Um endereço que pode mudar dificilmente serve como valor de referência
- O maior problema é que o endereço de e-mail pode mudar
- Mesmo dentro de uma organização, o endereço de e-mail de uma pessoa pode ser alterado
- Isso pode acontecer pelos mesmos tipos de motivo pelos quais mudam o nome usado no dia a dia ou o login
- Recusar mudanças ou reemissões de endereços de e-mail atribuídos pela organização pode ser severo a ponto de, em muitos lugares, ser difícil de sustentar legalmente ao longo do tempo
- Mesmo que o endereço antigo não desapareça por completo, ele ainda é insuficiente como identificador permanente
- Pode continuar existindo acesso ao endereço antigo ou encaminhamento dele
- Ainda assim, o endereço antigo pode não continuar funcionando para usos não relacionados a e-mail, como autenticação via OIDC
- O usuário vai querer usar o endereço novo e atual, em vez do antigo, que pode ser inconveniente
Reutilização e e-mail de recuperação devem ser tratados separadamente
- Um problema menor é que não há garantia de que a organização não reutilize endereços de e-mail
- Em geral, eles podem ser reutilizados
- Em especial, endereços muito desejados podem ser reutilizados ou reatribuídos como exceção porque alguma pessoa influente os quer
- Se a recuperação de conta precisar acontecer por meio de um endereço de e-mail registrado, talvez seja necessário armazenar esse e-mail
- Mas, se houver um ID interno teoricamente único e permanente, como no OIDC, então é esse ID interno que deve ser usado
- Mesmo que seja necessário armazenar um e-mail para recuperação de conta, o identificador interno da conta deve ser um ID sem significado
- Mesmo que esse valor não seja exposto ao usuário, a operação de longo prazo fica mais simples
- Dar significado demais ao endereço de e-mail também pode esconder problemas de segurança
1 comentários
Comentários do Hacker News
Não existe um bom identificador de identidade
E-mails mudam, e às vezes você perde o acesso ao e-mail antigo
Muita gente também não gosta de nome de usuário, então prefere escolher um nome não único em vez de um nome único sem sentido como
user53267Dispositivos também se perdem, então guardar um UUID secreto em um cookie ou usar passkeys do dispositivo por si só não resolve
Não existe solução ideal; é preciso misturar vários métodos. Para algumas pessoas, o e-mail é estável por muito tempo e funciona bem como identificador de identidade, mas para outras o nome de usuário é mais estável, então elas preferem isso. Ainda assim, quase nunca vi alguém usar o mesmo dispositivo principal por mais do que alguns anos, quanto mais por décadas, então identificação baseada em dispositivo provavelmente não vai funcionar muito bem
Isso aparece com frequência especialmente em e-mails corporativos como
first.last@company.com. Muitos softwares de fornecedores usam Sign in with Google e salvam esse endereço de e-mail como identificador dentro do app do fornecedorNomes mudam por casamento, divórcio, transição, mudança de contexto cultural, escolha de um novo nome etc., e os endereços de e-mail também mudam
Talvez coisas como OIDC precisem de novas extensões, como uma API padrão para mudança de nome de usuário e outra API padrão para mudança de endereço de e-mail
Tirando identificadores públicos como documento oficial ou número de seguridade social, parece difícil fazer melhor do que isso
subseja única e não seja reatribuída: https://openid.net/specs/openid-connect-core-1_0.html#IDToke...Claro, isso significa que você não deve colocar um endereço de e-mail no
subdo token de IDJá passei por empresa em que, ao ser efetivado, você precisava criar uma conta completamente nova, e como não havia um sistema de permissões simples e unificado, levei umas 3 semanas para recuperar, após a transição, o acesso aos sistemas que eu usava até o dia anterior
O mais engraçado é que essa empresa fazia muito negócio fornecendo aos clientes estruturas complexas de contas e até tinha um sistema de identidade externo que tratava esse tipo de problema com facilidade. Só não aplicava isso aos funcionários internos que mantinham esse sistema de identidade externo
Todo mundo tinha números anexados, então os números não significavam muito. Fiquei um pouco decepcionado quando isso virou um ID de conta único, e até hoje me pergunto por que mudaram
Como pessoa física, qual seria a melhor forma de lidar com esse problema?
O Gmail pode ser bloqueado de repente ou ter a conta banida por causa de algoritmos de IA, e não há nenhum recurso se algo der errado
Recentemente o Yahoo me pediu, no login, para autenticar com um e-mail inativo ao qual eu não tinha acesso havia 15 anos, e acabei perdendo o acesso. Por sorte eu ainda conseguia entrar pelo cliente de e-mail e pude migrar as contas importantes
Yahoo/AOL/Tutanota/Protonmail/e muitos outros apagam contas automaticamente se você não fizer login com frequência suficiente. O Protonmail ainda não faz isso, mas os termos permitem
Hospedar por conta própria também não resolve do zero, porque toda a infraestrutura já exige um e-mail. Se você perder acesso a esse e-mail, pode perder alertas de pagamento e até a conta de hospedagem. Quase perdi meu domínio porque alertas de cobrança estavam indo para um e-mail que eu quase nunca verificava, já que ele não suportava IMAP. Se você não for um administrador de sistemas profissional e não tiver tempo suficiente para manutenção, o risco de invasão também fica maior
Push do Duo acaba se o celular quebrar, e autenticação por SMS tem problemas como celular danificado, perda de acesso ao plano ou até vazamento do código por funcionários internos
No fim, decidi usar meu endereço Gmail da universidade. Prometeram que ex-alunos poderiam mantê-lo, e se algo der errado — provavelmente perder a segunda etapa por causa da perda do celular — existe um centro de suporte a ex-alunos razoável
Você realmente precisa ter algum canal de suporte humano com quem possa falar em algum lugar. Mesmo assim, não tenho certeza se isso é o melhor possível e ainda me pergunto se o risco do lado do Google continua existindo
Como você disse, se bloquear, você “simplesmente” troca de provedor e perde, no máximo, algumas horas de e-mails
Concordo que o e-mail não é um bom identificador permanente. Dito isso, usar número de telefone como parte da identificação é ainda pior
Usei praticamente o mesmo e-mail com meu próprio domínio por quase 20 anos, mas no mesmo período meu número de telefone mudou umas 12 vezes. Vejo com frequência sites que ainda deixaram a autenticação em duas etapas ativada para um número antigo, ou casos em que eu simplesmente esqueci que tinha cadastrado aquele número antigo no site
Mesmo morando no exterior, ainda mantenho meu número dos EUA pagando cerca de US$ 150 por mês em impostos para a AT&T, porque ainda há sites que enviam códigos de login para ele, e porque, se eu abrir mão dele, posso perder acesso a serviços importantes cujo cadastro esqueci de atualizar ou que exigem um número americano e não me deixariam trocar
Se depois quiser usar esse número novamente em uma conta de celular, basta portar de volta para a operadora que preferir
O ideal é trocar a autenticação em duas etapas, quando possível, por um app como o Google Authenticator, e portar o número para o Google Voice para continuar recebendo mensagens no número antigo gratuitamente
Se você não quiser envolver o Google de jeito nenhum, também há vários outros apps de autenticação baseados em tempo, e você pode usar www.tossabledigits.com para SMS
Mesmo considerando serviço normal de celular, esse valor é alto demais. Pago menos de US$ 100 por mês por duas linhas
Quando me mudei anos atrás, meu número do escritório particular não era permitido na nova região, mas por sorte consegui portá-lo para uma conta de VoIP
Na época a internet era lenta, então por um tempo usei um adaptador de telefone Ethernet e, mais tarde, passei a usar esse número só para recebimento. Chamadas de voz e fax são todos encaminhados por e-mail
Já funciona bem há mais de 20 anos. Como não tenho nenhum aparelho conectado, o custo anual também é bem baixo
Talvez algum dia eu conecte um telefone e aproveite a internet atual, mas gosto do jeito como está hoje e do fato de não ficar preso a um local específico
Minha experiência é a mesma. Pessoalmente, acho que um UUID aleatório é o melhor
Até mesmo um hash do primeiro e-mail do usuário não é o ideal. Só usar salt pode não ser suficiente, porque outras pessoas podem assumir que é seguro gerar hash de qualquer e-mail de entrada
Na prática, sempre uso inteiro autoincremental ou string aleatória/UUID como chave primária
Ele não deve ter nenhuma relação com atributos do mundo real com os quais as pessoas se importam, como número de telefone, endereço de e-mail, ID nacional estilo CPF, nome ou impressão digital
Uma string aleatória se encaixa perfeitamente nisso. Inteiros sequenciais também servem, mas, por serem fáceis de adivinhar, podem exigir medidas extras de segurança
E se suportassem endereços de e-mail com chave pública? Por exemplo, tratar algo como . e algo como . como equivalentes
Você se cadastra com um deles e depois poderia fazer login ou recuperar a conta com o outro também. Se o Google me banir ou o Hotmail acabar, eu poderia ir para outro serviço e, autenticando com a chave privada, abrir a mesma conta
Claro que seria preciso algum processo de alias para usar nomes convenientes, mas imagino que o cliente de e-mail teria de mapear esses endereços ou ao menos rastreá-los junto com a chave pública
Isso também poderia ser uma oportunidade para emplacar e-mail com criptografia de ponta a ponta. Quase nunca conseguiu ganhar escala de verdade
Para funcionar na prática, os grandes provedores teriam de oferecer suporte, mas, pensando rapidamente, a ideia parece bem sólida. Tirando o fato de que ninguém dá suporte a isso ainda
Estão surgindo novas formas de se identificar e se comunicar na web de um jeito em que a própria pessoa possui sua identidade, sem depender de provedor ou autoridade central
A British Gas (da Centrica), minha fornecedora de energia anterior, não permitia usar o mesmo endereço de e-mail para dois ou mais endereços físicos diferentes
Depois que me mudei, tentei “configurar” a conta online, mas toda vez que eu via os dados do endereço atual o sistema retornava HTTP 500
Quando liguei para perguntar, disseram que, mesmo com a conta de energia do endereço anterior já encerrada, “não é possível usar o mesmo endereço de e-mail para vários endereços postais”
+whatever. No Gmail, o truque do ponto.também funcionaNo momento, estou alterando o sistema de e-mail para permitir vários endereços de e-mail vinculados a uma mesma conta
Um dos principais motivos é que oferecemos desconto estudantil. A forma mais fácil de aplicar o desconto à conta é verificar se o e-mail pertence a uma instituição de ensino, como
.edu,.ac.uke similaresSó que a maioria das pessoas aparentemente não quer de fato se cadastrar com esse e-mail. Permitir vários e-mails faz com que você tenha o melhor dos dois mundos
Acho que deveríamos ter feito isso desde o início
.edumesmo depois de se formar na universidadeTenho um bem legal. Pedi cedo e consegui um endereço só com meu nome
Mas não uso muito. No começo, o encaminhamento às vezes era instável, embora eu imagine que hoje esteja melhor
Na prática, meu endereço do Gmail já é estável há quase décadas e não parece que vai mudar
De qualquer forma, passo meu endereço edu para pouquíssimas pessoas
Não é a solução mais elegante, mas existe uma solução do lado do cliente
Se você pagar e mantiver seu próprio domínio, pode controlar 100% dos aliases de e-mail
Mesmo que o Google, seu provedor atual, desapareça, você pode hospedar o e-mail por conta própria para recuperar a conta e manter a posse dos aliases
Vejo isso como um problema de backend. O ID visível para o usuário pode ser o e-mail, mas a chave primária nos dados do sistema não deveria ser o e-mail
Ainda existe lugar fazendo isso? Não usar algo como e-mail como identificador e manter uma tabela de consulta que faça o mapeamento para um ID realmente único (UUID ou valor autoincremental baseado em sequência) é o mais básico em projeto de banco de dados
O texto não faz bem essa distinção, então dá até para ler como se o usuário tivesse que perceber essa abstração
Nada é eterno. Quase nada é estável durante toda a vida de uma pessoa
Mesmo marcadores biométricos fáceis de escanear não são estavelmente únicos em populações grandes o bastante
Endereços de e-mail foram escolhidos para esse tipo de uso porque são razoavelmente únicos por um período bem longo
Números de telefone também se tornaram identificadores mais pegajosos do que antes, e agora se parecem com e-mails como identificadores úteis
E-mail e número de telefone são ambos perdidos com frequência, e muitas vezes ao mesmo tempo
Um endereço de e-mail de backup é a resposta
Acho que o GitHub lida bem com identidade, mas ainda usa senhas. Senhas são ruins