Pregunta ¿Cuál es la diferencia entre OpenID y OAuth?


Realmente estoy tratando de entender la diferencia entre OpenID y OAuth? ¿Tal vez son dos cosas totalmente separadas?


813
2017-07-06 13:40


origen


Respuestas:


OpenID se trata de autenticación (es decir, probar quién es usted), OAuth se trata de autorización (es decir, para otorgar acceso a la funcionalidad / datos / etc. sin tener que lidiar con la autenticación original).

OAuth podría usarse en sitios externos asociados para permitir el acceso a datos protegidos sin que tengan que volver a autenticar a un usuario.

La publicación del blog "OpenID versus OAuth desde la perspectiva del usuario"tiene una simple comparación de los dos desde la perspectiva del usuario y"OAuth-OpenID: Estás Ladrando el Árbol Incorrecto si crees que son lo mismo"tiene más información al respecto".


702
2017-07-06 13:47



Hay tres formas de comparar OAuth y OpenID:

1. Propósitos

OpenID se creó para la autenticación federada, es decir, permitir que un tercero autentique a sus usuarios por usted, mediante el uso de cuentas que ya tienen. El término federado es fundamental porque todo el objetivo de OpenID es que se puede usar cualquier proveedor (con la excepción de las listas blancas). No es necesario pre-elegir o negociar un acuerdo con los proveedores para permitir a los usuarios usar cualquier otra cuenta que tengan.

OAuth se creó para eliminar la necesidad de que los usuarios compartan sus contraseñas con aplicaciones de terceros.. En realidad, comenzó como una forma de resolver un problema de OpenID: si admite OpenID en su sitio, no puede usar las credenciales de HTTP Basic (nombre de usuario y contraseña) para proporcionar una API porque los usuarios no tienen una contraseña en su sitio.

El problema es que esta separación de OpenID para la autenticación y OAuth para la autorización es que ambos protocolos pueden lograr muchas de las mismas cosas. Cada uno de ellos proporciona un conjunto diferente de características que son deseadas por diferentes implementaciones, pero esencialmente, son bastante intercambiables. En esencia, ambos protocolos son un método de verificación de aseveración (OpenID está limitado a la afirmación "esto es lo que soy", mientras que OAuth proporciona un "token de acceso" que puede intercambiarse por cualquier afirmación soportada a través de una API).

2. Características

Ambos protocolos proporcionan una forma para que un sitio redirija a un usuario a otro lugar y vuelva con una afirmación verificable. OpenID proporciona una afirmación de identidad, mientras que OAuth es más genérico en forma de un token de acceso que luego se puede usar para "hacer las preguntas al proveedor de OAuth". Sin embargo, cada uno admite diferentes características:

OpenID - la característica más importante de OpenID es su proceso de descubrimiento. OpenID no requiere una codificación rígida para cada uno de los proveedores que desea utilizar con anticipación. Con el descubrimiento, el usuario puede elegir cualquier proveedor de terceros que quiera autenticar. Esta característica de descubrimiento también ha causado la mayoría de los problemas de OpenID porque la forma en que se implementa es mediante el uso de URI HTTP como identificadores que la mayoría de los usuarios de la web simplemente no obtienen. Otras características que OpenID tiene es su soporte para el registro ad-hoc de clientes usando un intercambio de DH, modo inmediato para la experiencia optimizada del usuario final, y una forma de verificar las afirmaciones sin hacer otro viaje de ida y vuelta al proveedor.

OAuth- La característica más importante de OAuth es el token de acceso que proporciona un método duradero para realizar solicitudes adicionales. A diferencia de OpenID, OAuth no finaliza con la autenticación, sino que proporciona un token de acceso para obtener acceso a recursos adicionales proporcionados por el mismo servicio de terceros. Sin embargo, dado que OAuth no es compatible con el descubrimiento, se requiere preseleccionar y codificar los proveedores que usted decida usar. Un usuario que visite su sitio no puede usar ningún identificador, solo aquellos que preseleccionó. Además, OAuth no tiene un concepto de identidad, por lo que usarlo para iniciar sesión significa agregar un parámetro personalizado (como lo hace Twitter) o hacer otra llamada API para obtener el usuario actualmente "conectado".

3. Implementaciones técnicas

Los dos protocolos comparten una arquitectura común al usar la redirección para obtener la autorización del usuario. En OAuth, el usuario autoriza el acceso a sus recursos protegidos y en OpenID, a su identidad. Pero eso es todo lo que comparten.

Cada protocolo tiene una forma diferente de calcular una firma utilizada para verificar la autenticidad de la solicitud o respuesta, y cada uno tiene diferentes requisitos de registro.


319
2017-07-06 13:45



OpenID es (principalmente) para la identificación / autenticación, de modo que stackoverflow.com sabe que yo tengo chris.boyle.name (o donde sea) y por lo tanto, que probablemente soy la misma persona que poseía chris.boyle.name ayer y ganó algunos puntos de reputación.

OAuth está diseñado para la autorización para tomar acciones en su nombre, de modo que stackoverflow.com (o donde sea) puede pedir permiso para, por ejemplo, twittear en su nombre automáticamente, sin conocer su contraseña de Twitter.


93
2018-05-19 08:37



Muchas personas aún visitan esto, así que aquí hay un diagrama muy simple para explicarlo

OpenID_vs._pseudo-authentication_using_OAuth

Cortesía Wikipedia


78
2017-07-06 20:15



OAuth 

Utilizado para delegado authorization solo, lo que significa que está autorizando a un servicio de terceros el acceso para usar datos personales, sin dar una contraseña. Además, las "sesiones" de OAuth generalmente duran más que las sesiones de los usuarios. Lo que significa que OAuth está diseñado para permitir la autorización

es decir, Flickr usa OAuth para permitir que los servicios de terceros publiquen y editen una imagen de una persona en su nombre, sin que tengan que dar su nombre de usuario y contraseña.

OpenID

Acostumbrado a authenticate identidad de inicio de sesión único. Se supone que todo lo que OpenID debe hacer es permitir que un proveedor de OpenID pruebe que usted dice que lo es. Sin embargo, muchos sitios usan autenticación de identidad para proporcionar autorización (sin embargo, los dos se pueden separar)

es decir, uno muestra su pasaporte en el aeropuerto para autenticar (o probar) el nombre de la persona que figura en el boleto que están usando.


39
2018-03-20 19:37



Use OAuth si sus usuarios solo desean iniciar sesión con Facebook o Twitter. Use OpenID si sus usuarios son parientes que manejan sus propios proveedores de OpenID porque "no quieren que nadie más tenga su identidad".


30
2017-08-27 23:27



OpenID y OAuth son cada uno de los protocolos basados ​​en HTTP para autenticación y / o autorización. Ambos están destinados a permitir a los usuarios realizar acciones sin dar credenciales de autenticación o permisos globales a clientes o terceros. Si bien son similares, y existen estándares propuestos para usarlos juntos, son protocolos separados.

OpenID está destinado a la autenticación federada. Un cliente acepta una afirmación de identidad de cualquier proveedor (aunque los clientes son libres de incluir en la lista blanca o en la lista negra a los proveedores).

OAuth está destinado a la autorización delegada. Un cliente se registra con un proveedor, que proporciona tokens de autorización que aceptará para realizar acciones en nombre del usuario.

Actualmente, OAuth es más adecuado para la autorización, ya que las interacciones posteriores a la autenticación están incorporadas en el protocolo, pero ambos protocolos están evolucionando. OpenID y sus extensiones se pueden usar para la autorización, y OAuth se puede usar para la autenticación, que se puede considerar como una autorización no operativa.


17
2018-01-12 11:18