¿Qué es exactamente OAuth (Autorización abierta)?
OAuth permite notificar a un proveedor de recursos (por ejemplo, Facebook) que el propietario del recurso (por ejemplo, usted) otorga permiso a un tercero (por ejemplo, una aplicación de Facebook) para acceder a su información (por ejemplo, la lista de sus amigos).
Si lo lees expresado claramente, entendería tu confusión. Entonces, vamos con un ejemplo concreto: ¡unirse a otra red social más!
Supongamos que tiene una cuenta de GMail existente. Decides unirte a LinkedIn. Agregar todos tus muchos, muchos amigos manualmente es cansador y propenso a errores. Puede que te hartas hasta la mitad o insertes errores tipográficos en su dirección de correo electrónico para invitarlos. Por lo tanto, puede tener la tentación de no crear una cuenta después de todo.
Enfrentando esta situación, LinkedIn tiene la Buena Idea (TM) para escribir un programa que agregue su lista de amigos automáticamente porque las computadoras son mucho más eficientes y efectivas en tareas aburridas y propensas a errores. Dado que unirse a la red ahora es tan fácil, no hay forma de que rechace tal oferta, ¿verdad?
Sin una API para intercambiar esta lista de contactos, tendrías que darle a LinkedIn el nombre de usuario y la contraseña a tu cuenta de GMail, dándoles demasiado poder .
Aquí es donde entra OAuth. Si su GMail admite el protocolo OAuth, LinkedIn puede pedirle que los autorice a acceder a su lista de contactos de GMail.
OAuth permite:
- Diferentes niveles de acceso: solo lectura VS lectura-escritura. Esto le permite otorgar acceso a su lista de usuarios o un acceso bidireccional para sincronizar automáticamente sus nuevos amigos de LinkedIn con sus contactos de GMail.
- Granularidad de acceso: puede decidir otorgar acceso solo a su información de contacto (nombre de usuario, correo electrónico, fecha de nacimiento, etc.) o a toda su lista de amigos, calendario y demás.
- Le permite administrar el acceso desde la aplicación del proveedor de recursos. Si la aplicación de terceros no proporciona un mecanismo para cancelar el acceso, estaría atrapado con ellos teniendo acceso a su información. Con OAuth, existe una disposición para revocar el acceso en cualquier momento.
¿Se convertirá de facto (estándar) en un futuro próximo?
Bueno, aunque OAuth es un importante paso adelante, no resuelve problemas si las personas no lo usan correctamente. Por ejemplo, si un proveedor de recursos proporciona un solo nivel de acceso de lectura y escritura a todos sus recursos a la vez y no proporciona un mecanismo para administrar el acceso, entonces no tiene sentido. En otras palabras, OAuth es un marco para proporcionar funcionalidad de autorización y no solo autenticación.
En la práctica, se ajusta muy bien al modelo de red social. Es especialmente popular para aquellas redes sociales que desean permitir "complementos" de terceros. Esta es un área donde el acceso a los recursos es inherentemente necesario y también es inherentemente poco confiable (es decir, tiene poco o ningún control de calidad sobre esas aplicaciones).
No he visto tantos otros usos en la naturaleza. Es decir, yo no sé de una firma de asesoramiento financiero en línea que tendrá acceso a sus registros bancarios de forma automática, aunque podría técnicamente ser utilizado de esa manera.
OAuth es simplemente un protocolo de autorización seguro que se ocupa de la autorización de aplicaciones de terceros para acceder a los datos del usuario sin exponer su contraseña. p.ej. (Inicie sesión con fb, gPlus, twitter en muchos sitios web ...) todos funcionan bajo este protocolo.
El Protocolo se vuelve más fácil cuando conoce a las partes involucradas. Básicamente hay tres partes involucradas: oAuth Provider, oAuth Client y Owner.
Supuse un escenario en el que un sitio web (stackoverflow) necesita agregar inicio de sesión con la función de Facebook. Por lo tanto, Facebook es oAuth Provider y el stackoverflow es oAuth Client.
Este paso lo realiza el desarrollador de la aplicación . Al principio, Facebook (oAuth Provider) no tiene idea sobre el stackoverflow (oAuth Client) porque no hay un enlace entre ellos. Entonces, el primer paso es registrar stackoverflow con el sitio de desarrolladores de Facebook . Esto se hace manualmente donde los desarrolladores necesitan dar la información de la aplicación a Facebook, como el nombre de la aplicación, el sitio web, el logotipo, la URL de redireccionamiento (importante). Entonces stackoverflow se registra con éxito, tiene el ID del cliente, el secreto del cliente, etc. de Facebook y está funcionando con OAUTH .
2. Ahora, cuando el usuario de stackoverflow haga clic en iniciar sesión con el botón fb . Stackoverflow solicita Facebook con ClientId (fb, úselo para reconocer al cliente) y redirectUrl (fb volverá a esta url después del éxito). De este modo, el usuario será redirigido a la página de inicio de sesión de Facebook. Esta es la mejor parte del usuario (propietario) no está dando su credencial de Facebook para stackoverflow.
Para más:
Video rápido
enlace web
fuente
En pocas palabras, OAuth es una forma en que las aplicaciones obtienen credenciales para su información sin obtener directamente su información de inicio de sesión de usuario en algún sitio web. Por ejemplo, si escribe una aplicación en su propio sitio web y desea que use datos de la cuenta de Facebook de un usuario, puede usar OAuth para obtener un token a través de una URL de devolución de llamada y luego usar ese token para hacer llamadas a la API de Facebook para obtener su usar datos hasta que expire el token. Los sitios web confían en él porque permite a los programadores acceder a sus datos sin que el usuario tenga que revelar directamente su información y difundir sus credenciales en línea, pero aún así proporciona un nivel de protección a los datos. ¿Se convertirá en el método de autorización de facto? Tal vez, ha estado ganando mucho apoyo recientemente de Twitter, Facebook,
fuente
Oauth definitivamente está ganando impulso y se está volviendo popular entre las API empresariales también. En el mundo de las aplicaciones y los datos, las empresas exponen cada vez más las API al mundo exterior de acuerdo con Google, Facebook y Twitter. Con este desarrollo se forma un triángulo de autenticación de 3 vías
1) Proveedor de API: cualquier empresa que exponga sus activos mediante API, por ejemplo, Amazon, Target, etc. 2) Desarrollador: el que crea aplicaciones móviles / otras sobre estas API 3) El usuario final: el usuario final del servicio prestado por: digamos usuarios registrados / invitados de Amazon
Ahora, esto desarrolla una situación relacionada con la seguridad (estoy enumerando algunas de estas complejidades) 1) Usted, como usuario final, quiere permitir que el desarrollador acceda a las API en su nombre. 2) El proveedor de API debe autenticar al desarrollador y al usuario final 3) El usuario final debe poder otorgar y revocar los permisos por el consentimiento que han otorgado 4) El desarrollador puede tener un nivel variable de confianza con el proveedor de API, en que el nivel de permisos otorgados a ella es diferente
El Oauth es un marco de autorización que intenta resolver el problema mencionado de una manera estándar. Con la prominencia de las API y las aplicaciones, este problema se volverá cada vez más relevante y cualquier estándar que intente resolverlo, ya sea bajo juramento o cualquier otro, será algo de lo que preocuparse como proveedor / desarrollador de API e incluso como usuario final.
fuente
OAuth ( O pen Auth orization) es un estándar abierto para otorgar acceso / protocolo de delimitación. Se utilizó como una forma para que los usuarios de Internet otorguen a los sitios web o aplicaciones acceso a su información en otros sitios web, pero sin darles las contraseñas. No se trata de autenticación .
O
OAuth 2.0 es un protocolo que permite a un usuario otorgar acceso limitado a sus recursos en un sitio, a otro sitio, sin tener que exponer sus credenciales.
Analogía 1: Muchos autos de lujo hoy vienen con una llave de valet. Es una llave especial que le da al asistente de estacionamiento y, a diferencia de su llave regular, no permitirá que el automóvil conduzca más de una milla o dos. Algunas teclas de servicio no abrirán el baúl, mientras que otras bloquearán el acceso a la libreta de direcciones de su teléfono celular a bordo. Independientemente de las restricciones que imponga la clave de valet, la idea es muy inteligente. Le da a alguien acceso limitado a su automóvil con una llave especial, mientras usa su llave regular para desbloquear todo. src de auth0
Analogía 2: Supongamos que queremos completar un formulario de solicitud para una cuenta bancaria. Aquí Oauth funciona ya que, en lugar de llenar el formulario por solicitante, el banco puede llenar el formulario usando Adhaar o el pasaporte.
Aquí están involucradas las siguientes tres entidades:
fuente
OAuth se trata de delegar Autorización (elegir a alguien que pueda hacer la Autorización por usted). Tenga en cuenta que la autenticación y la autorización son cosas diferentes. OAuth es Autorización (control de acceso), y si desea implementar también la Autenticación (verificación de ID), el protocolo OpenID se puede usar además de OAuth.
Todas las grandes compañías como Facebook, Google, Github, ... usan este tipo de autenticación / autorización hoy en día. Por ejemplo, acabo de iniciar sesión en este sitio web usando mi cuenta de Google, esto significa que Stackoverflow no conoce mi contraseña, recibe el permiso de Google donde se guarda mi contraseña (obviamente, hash). Esto ofrece muchos beneficios, uno de ellos es; En un futuro cercano no tendrá que hacer varias cuentas en cada sitio web. Se puede usar un sitio web (en el que más confías) para iniciar sesión en todos los demás sitios web. Entonces solo tendrás que recordar una contraseña.
fuente
Fuente: proveedores de servicios OAuth1
fuente
OAuth es un estándar abierto para la autorización, comúnmente utilizado como una forma para que los usuarios de Internet inicien sesión en sitios web de terceros utilizando sus cuentas de Microsoft, Google, Facebook o Twitter sin exponer su contraseña.
fuente
OAuth es un protocolo que se utiliza desde el propietario del recurso (facebook, google, tweeter, microsoft live, etc.) para proporcionar la información necesaria o para proporcionar un permiso para escribir correctamente en un sistema de terceros (su sitio, por ejemplo). Lo más probable es que sin el protocolo OAuth las credenciales estén disponibles para los sistemas de terceros, que serán una forma inapropiada de comunicación entre esos sistemas.
fuente