2009-07-20 63 views
6

Actualmente estoy debatiendo si debo usar el inicio de sesión de OpenID para uno de mis sitios web. OpenID puede ser más difícil de implementar porque ya tengo el código de registro y de inicio de sesión escrito, pero esto es solo una consideración de tiempo. ¿Qué ventajas y desventajas hay al usar OpenID en contraste con, por ejemplo, un sistema de cuenta de usuario de sitio web tradicional?¿Cuáles son las ventajas y desventajas de usar OpenID?

Respuesta

5

Ventajas

que tienen un inicio de sesión único, que es en realidad muy bien, en especial para las personas que tienen una gran cantidad de cuentas aquí y allá.

El servidor de apertura proporciona información básica sobre el usuario, ahorrándose la necesidad de escribir siempre la información básica habitual. En este sentido, guarda la molestia para sus usuarios.

Mejora bastante el mecanismo tradicional de usuario/pase. Hay muchos sitios que ofrecen ambos sistemas al mismo tiempo.

Mueve la confianza de la honestidad de varias partes a una sola. Por el momento, no sé si alguno de los sitios en los que estoy registrado guarda mi contraseña en texto claro para robarla e intenta usarla en otros sitios suponiendo que tengo la misma contraseña.

La ventaja técnica de la delegación. No está obligado a usar el mismo proveedor. Puedes cambiar

Desventajas

usted todavía tiene que dar de usuario/contraseña para aquellos que no entienden el nuevo paradigma o que no tiene un OpenID (tal vez lo tienen, pero que no saben) . Si se trata de una amplia gama de personas que estás tratando de abordar, entonces podrías ahuyentarlas.

Además, no lo usaría para nada serio. No confío en que mi banco me pida que inicie sesión con mi openid, sino también en muchos sitios de comercio electrónico. Está bien para cosas sin importancia.

El proveedor de código abierto puede rastrear los hábitos del usuario, ya que reciben todas las solicitudes de autenticación. Es por eso que implementé mi proveedor personal.

Finalmente, por lo que pude ver, muchos casos de servidores abiertos mueven la contraseña en texto claro, pero esta es mi comprensión y podría estar equivocado. Desplegué mi propio proveedor de OpenID, y fui muy bien para que la contraseña se transportara a través de https, incluso si mi openid está marcado como http

1

La principal ventaja que veo, aunque no necesariamente se aplica en su caso si quiero mantener su sistema actual, es que no tengo que preocuparme por almacenar contraseñas.

Demasiadas personas usan la misma contraseña (o un pequeño conjunto de contraseñas) para todo, así que si mi sitio se vio comprometido (y espero que tenga suficiente habilidad para evitarlo, pero la seguridad es un multicapas bestia, entonces cualquier cosa para agregar seguridad adicional es buena en mi libro) entonces el atacante no pudo obtener la contraseña.

Para el usuario, ahora puede legítimamente tener solo una contraseña para todo. Usan un proveedor de OpenID en el que confían en lugar de tener que confiar en cualquier Tom Dick o Harry en Internet con un sitio web.

1

Bien tomando SO como ejemplo, es compatible con ambos. Ingreso usando mi cuenta de Google a través de OpenID, pero aún necesito tener una cuenta/nombre de usuario para vincular a mi OpenID.Supongo que solo permite los inicios de sesión a través de OpenID, pero no que sus usuarios inicien sesión utilizando su sitio como un servidor OpenID.

Para aclarar las cosas; Puede usar una gran cantidad de su código de inicio de sesión/cierre de sesión y lo necesitará porque la única diferencia es que se autentica a través de un tercero en lugar de su propia base de datos. En pseudocódigo imagínese esto:

authenticate_from_db(String username, String password) 
{ 
     fetch username and password where username = username 
     if username = username and password = hash_of(password) 
     { 
      return true; 
     } 
     else 
     { 
      return false; 
     } 
} 

authenticate_from_openid(String openId_provider) 
{ 
    provider = contact_openID_provider(openID_provider) 
    if(provider) 
    { 
     login.username = map(returned_user, your_db) 
     return true 
    } 
    else 
    { 
     return false; 
    } 
} 

Como ve, la mayor parte del proceso de autenticación se modifica mientras que el suyo también se sigue utilizando.

La ventaja es bastante claro:

  • Permitir a los usuarios iniciar sesión con cuentas existentes a través de su proveedor de OpenID.
  • Sus usuarios existentes podrían opcionalmente inicio de sesión a través de su proveedor de OpenID

Las desventajas son (me podría imaginar):

  • proveedores de OpenID hostiles (? Spam) autenticar sus spam etc
  • Otro seguridad preocupaciones al permitir que un tercero autentique a sus usuarios

Quiero subrayar que el soporte de OpenID no debería cambiar nada para sus usuarios existentes.

Los usuarios de OpenID aún deben tener una cuenta, solo están autenticados por un tercero.

+0

De hecho, OpenID forma el elemento de autenticación (quiénes son). La cuenta de usuario en su aplicación define el elemento de autorización (lo que pueden hacer). –

Cuestiones relacionadas