- Al crear un ID interno de cuenta a largo plazo, usarlo como ID permanente solo porque OIDC devuelve una dirección de correo hace que cargues con los problemas de cambios y reutilización.
- Una dirección de correo puede cambiar incluso dentro de una misma organización, igual que un nombre o un login, así que no es lo bastante estable como para usarla como valor base de la cuenta.
- Aunque se mantenga el acceso o el reenvío al correo de una dirección antigua, eso no garantiza que esa dirección siga funcionando para usos no relacionados con correo, como la autenticación con OIDC.
- La dirección de correo puede ser necesaria para la recuperación de la cuenta, pero si el sistema de autenticación ofrece un ID distinto, único y permanente, ese valor debe usarse como ID interno.
- Aunque sea un valor que el usuario no ve, conviene que el identificador interno de la cuenta sea un ID sin significado, porque eso simplifica la operación a largo plazo y la seguridad.
Por qué dan ganas de usar una dirección de correo como ID permanente
- Cuando se crea un identificador interno por cuenta, la dirección de correo parece una candidata porque los sistemas de autenticación como OIDC devuelven datos que incluyen la dirección de correo.
- Pero si se usa la dirección de correo como identificador interno permanente de la cuenta, aparecen dos problemas: puede cambiar y puede reutilizarse.
Una dirección que puede cambiar difícilmente sirve como valor de referencia
- El problema más grande es que una dirección de correo puede cambiar.
- Incluso dentro de una misma organización, la dirección de correo de una persona puede cambiar.
- Puede cambiar por razones del mismo tipo que hacen cambiar el nombre de uso cotidiano de una persona o su login.
- Negarse a cambiar o reasignar una dirección de correo asignada por la organización puede ser, en muchos lugares, una dureza difícil de sostener legalmente.
- Aunque una dirección antigua no desaparezca por completo, sigue siendo insuficiente como identificador permanente.
- Puede mantenerse el acceso o el reenvío hacia la dirección antigua.
- Aun así, esa dirección antigua podría dejar de funcionar para usos no relacionados con correo, como la autenticación con OIDC.
- Además, el usuario querrá usar su dirección nueva actual en lugar de una dirección antigua que puede resultar incómoda.
La reutilización y el correo de recuperación deben tratarse por separado
- Un problema menor es que no hay garantía de que una organización no reutilice direcciones de correo.
- En general, podrían reutilizarse.
- En especial, las direcciones más codiciadas podrían reutilizarse o reasignarse de forma excepcional porque alguien influyente las quiere.
- Si la recuperación de la cuenta debe hacerse mediante la dirección de correo registrada, quizá sea necesario guardar ese correo.
- Pero si existe un ID interno teóricamente único y permanente, como en OIDC, debe usarse ese ID interno.
- Aunque sea necesario guardar un correo para recuperación, el identificador interno de la cuenta debería ser un ID sin significado.
- Aunque ese valor no se exponga al usuario, a largo plazo simplifica más la operación.
- Darle demasiado significado a una dirección de correo también puede esconder problemas de seguridad.
1 comentarios
Opiniones de Hacker News
No existe un buen identificador de identidad
El correo electrónico cambia, y también se puede perder el acceso a un correo anterior.
A mucha gente tampoco le gustan los nombres de usuario, así que prefiere elegir un nombre no único antes que un nombre único sin sentido como
user53267.Como los dispositivos también se pierden, no se resuelve solo guardando un UUID secreto en una cookie o usando la passkey del dispositivo.
No hay una solución ideal; hay que combinar varios métodos. Para algunas personas, el correo electrónico es estable durante mucho tiempo y funciona bien como identificador de identidad, pero para otras el nombre de usuario es más estable y prefieren eso. Eso sí, casi no he visto a nadie usar el mismo dispositivo principal por más de unos años, mucho menos por décadas, así que la identificación basada en dispositivos probablemente no funcione bien.
Esto se ve especialmente con frecuencia en correos laborales como
first.last@company.com. Mucho software de proveedores usa Sign in with Google y guarda esa dirección de correo como identificador dentro de la app del proveedor.Los nombres cambian por matrimonio, divorcio, transición, cambio de cultura, elección de un nuevo nombre, etc., y las direcciones de correo también cambian.
Tal vez algo como OIDC necesite nuevas extensiones, como una API estándar para cambiar el nombre de usuario y una API estándar para cambiar la dirección de correo.
Salvo identificadores oficiales como documentos de identidad o números de seguro social, parece difícil hacerlo mejor.
subsea único y no se reasigne: https://openid.net/specs/openid-connect-core-1_0.html#IDToke...Por supuesto, eso significa que no se debe poner una dirección de correo en el
subdel token de ID.Me tocó una empresa donde, al pasar a empleado, había que crear una cuenta completamente nueva, y como no tenían un sistema de permisos simple y unificado, después de la conversión tardé unas 3 semanas en recuperar los accesos a sistemas que tenía hasta el día anterior.
Lo más divertido es que esa empresa hace mucho negocio ofreciendo a clientes sistemas de cuentas complejos, y además tiene un sistema de identidad externo que maneja fácilmente este tipo de problemas. Pero no lo aplican al personal interno que mantiene ese mismo sistema de identidad externo.
Como todos tenían un número, el número no significaba gran cosa. Me dio algo de pena cuando cambiaron a un ID de cuenta único, y todavía me pregunto por qué lo hicieron.
Como persona, ¿cuál es el mejor enfoque para manejar este problema?
Gmail puede bloquearte de repente o prohibir tu cuenta por sus algoritmos de IA, y si algo sale mal no hay forma de remediarlo.
Yahoo hace poco me pidió, al iniciar sesión, que verificara con un correo inactivo al que no tenía acceso desde hacía 15 años, y perdí el acceso. Por suerte todavía podía acceder desde un cliente de correo, así que pude mover mis cuentas importantes.
Yahoo/AOL/Tutanota/Protonmail/y muchos otros eliminan automáticamente las cuentas si no inicias sesión con suficiente frecuencia. Protonmail todavía no lo hace, pero sus términos se lo permiten.
El autohospedaje también requiere correo electrónico para toda la infraestructura desde el principio. Si pierdes acceso a ese correo, también puedes perder avisos de pago y la cuenta de hosting. Casi pierdo un dominio porque los avisos de pago llegaban a un correo que casi no revisaba porque no soportaba IMAP. Si no eres administrador de sistemas profesional y no tienes suficiente tiempo de mantenimiento, también aumenta el riesgo de hackeo.
Con Duo Push, si se rompe el teléfono se acabó; y la autenticación por SMS tiene problemas como daño del teléfono, pérdida de acceso al plan o filtración de códigos por empleados internos.
Al final decidí usar mi dirección de Gmail de la universidad. Prometieron que los egresados pueden conservarla, y si algo sale mal —probablemente perder el segundo factor por haber perdido el teléfono— hay un centro de soporte para egresados bastante bueno.
Es indispensable tener en algún lugar una mesa de soporte con personas con quien hablar. Aun así, no estoy seguro de que esto sea lo mejor, y me pregunto si todavía queda algún riesgo del lado de Google.
Como dices, si te bloquean, “simplemente” cambias de proveedor y, como mucho, pierdes unas horas de correo.
Estoy de acuerdo en que el email no sirve como identificador permanente. Pero usar el número de teléfono como parte de la identificación es peor
Llevo casi 20 años usando el mismo email con mi propio dominio, pero en ese mismo período cambié de número de teléfono unas 12 veces. Veo con frecuencia casos en los que un sitio web dejó activada la verificación en dos pasos con un número viejo, o en los que la persona ni siquiera recuerda haber registrado ese número viejo en ese sitio
Incluso viviendo en el extranjero, sigo manteniendo mi número de EE. UU. pagando a AT&T unos 150 dólares de impuestos al mes, por los sitios que todavía envían códigos de inicio de sesión a ese número y por miedo a perder acceso a servicios importantes si lo abandono, ya sea porque olvidé actualizarlo o porque necesitan un número estadounidense y no puedo cambiarlo
Si más adelante quieres volver a usar ese número en una cuenta móvil, lo transfieres de nuevo al operador que prefieras
Cambia la autenticación de dos pasos, cuando sea posible, a una app como Google Authenticator, y mueve el número a Google Voice para poder recibir gratis mensajes de texto en tu número anterior
Si no quieres involucrar a Google en absoluto, hay muchas otras apps de autenticación basada en tiempo, y también puedes usar www.tossabledigits.com para los SMS
Incluso como servicio celular normal es una cantidad excesiva. Yo no pago ni 100 dólares al mes por dos líneas
Hace años, cuando me mudé, mi número telefónico de oficina personal no estaba permitido en la nueva zona, pero tuve suerte de poder transferirlo a una cuenta VoIP
En esa época internet era lento, así que durante un tiempo usé un adaptador telefónico Ethernet; después dejé ese número solo para recibir. Las llamadas de voz y los faxes se reenvían al email
Lleva más de 20 años funcionando bien. Como no hay ningún dispositivo conectado, el costo anual también es bastante bajo
Tal vez algún día conecte un teléfono y aproveche el internet moderno, pero me gusta cómo funciona ahora y que no esté atado a una ubicación específica
Mi experiencia es la misma. Personalmente, creo que lo mejor es un UUID aleatorio
Ni siquiera un hash del email inicial del usuario es ideal. Puede que solo saltearlo no alcance, y otras personas podrían asumir que es seguro hashear cualquier email de entrada
En la práctica, siempre uso enteros autoincrementales o cadenas/UUID aleatorios como clave primaria
No debe tener ninguna relación con atributos del mundo real que a la gente le importen, como números de teléfono, direcciones de email, IDs nacionales tipo registro civil, nombres o huellas digitales
Una cadena aleatoria cumple perfectamente esta condición. Un entero secuencial también está bien, pero al ser fácil de adivinar puede requerir medidas de seguridad adicionales
¿Qué tal soportar direcciones de email con clave pública? Por ejemplo, tratar como equivalentes algo como . y algo como .
Permitir que alguien se registre con una y luego pueda iniciar sesión o recuperar la cuenta con la otra. Aunque Google me bloquee o Hotmail desaparezca, podría ir a otro servicio, autenticarme con mi clave privada y abrir la misma cuenta
Por supuesto haría falta un proceso de alias para usar nombres cómodos, pero creo que los clientes de correo tendrían que mapear esas direcciones o, como mínimo, rastrearlas junto con la clave pública
También podría ser una oportunidad para introducir email con cifrado de extremo a extremo. Eso casi nunca ha logrado adoptarse a gran escala
Para que funcione de verdad, los grandes proveedores tendrían que soportarlo, pero pensándolo rápido suena bastante sólido. Salvo por el detalle de que todavía nadie lo soporta
Se están creando nuevas formas de identificarse y comunicarse en la web, en las que uno es dueño de su identidad sin depender de un proveedor ni de una autoridad central
Mi proveedor de energía anterior, British Gas (propiedad de Centrica), no permitía usar la misma dirección de email para más de una dirección física
Después de mudarme, intenté “configurar” la cuenta en línea y cada vez que quería ver los datos de mi dirección actual recibía un HTTP 500
Al consultar por teléfono, me dijeron que “no se puede usar la misma dirección de email para varias direcciones postales”, aunque la cuenta de energía de la dirección anterior ya estuviera cerrada
+whatever. Si es Gmail, también sirve el truco del punto.Ahora estoy cambiando el sistema de email para permitir varias direcciones de email vinculadas a una sola cuenta
Una de las razones principales es que ofrecemos descuentos para estudiantes. La forma más sencilla de aplicar el descuento a una cuenta es verificar que el email pertenezca a una institución educativa. Cosas como
.edu,.ac.ukPero parece que la mayoría en realidad no quiere registrarse con ese email. Permitir varios emails nos da lo mejor de ambos mundos
Ojalá lo hubiéramos hecho así desde el principio
.eduincluso después de graduarse de la universidadTengo una dirección bastante buena. La pedí temprano, así que solo contiene mi nombre
Eso sí, no la uso mucho. Al principio el reenvío a veces era inestable, aunque supongo que ahora habrá mejorado
En la práctica, mi dirección de Gmail ya lleva casi décadas siendo estable y no parece que vaya a cambiar
En cualquier caso, solo le doy mi dirección edu a muy poca gente
Aunque no sea la opción más elegante, existe una solución del lado del cliente
Si pagas y mantienes tu propio dominio, puedes controlar al 100% los alias de email
Incluso si tu proveedor actual, Google, desaparece, puedes alojar tú mismo el correo para recuperar las cuentas y conservar la propiedad de los alias
Creo que esto es un problema de backend. El ID visible para el usuario puede ser el correo electrónico, pero la clave primaria dentro de los datos del sistema no debería ser el correo electrónico.
¿Todavía hay lugares que hacen esto? No usen algo como el correo electrónico como identificador; tener una tabla de consulta que lo mapee a un ID realmente único (UUID o un valor autoincremental basado en secuencia) es una cuestión básica de diseño de bases de datos.
El artículo no hace bien esta distinción, así que también puede leerse como si el usuario tuviera que ser consciente de esta abstracción.
Nada es eterno. Casi nada es siquiera estable durante toda la vida de una persona.
Incluso los marcadores biométricos fáciles de escanear no son establemente únicos en poblaciones lo suficientemente grandes.
Las direcciones de correo electrónico se eligen para este uso porque son establemente únicas durante periodos bastante largos.
Los números de teléfono también se han vuelto identificadores más persistentes que antes, y ahora son similares al correo electrónico como identificadores útiles.
Tanto el correo electrónico como el número de teléfono se pierden con frecuencia, y a menudo al mismo tiempo.
La respuesta es una dirección de correo electrónico de respaldo.
Considero que GitHub maneja bastante bien la identidad, pero todavía usa contraseñas. Las contraseñas son malas.