¿Qué es exactamente OAuth (Autorización abierta)?

Respuestas:

327

¿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:

  1. 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.
  2. 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.
  3. 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.

André Caron
fuente
66
Lo hiciste fácil de entender. Puede que haya cambiado la primera línea a algo como esto en su lugar. "OAuth permite notificar a un proveedor de recursos (por ejemplo, Gmail) que el propietario del recurso (por ejemplo, usted un usuario de gmail) otorga permiso a un tercero (por ejemplo, su cuenta de LinkedIn) para acceder a su información (por ejemplo, su lista de contactos)". Lo que escribió, es decir, el proveedor y el tercero 'ambos' siendo Facebook es confuso. Aunque presenta un escenario interesante, es decir, Oauth también se puede usar internamente, entre diferentes proyectos de su empresa. ¿Correcto? ¿Es por eso que introdujiste una introducción complicada?
Miel
Según tengo entendido, el propósito de OAuth es otorgar una autorización por tiempo limitado a una aplicación de terceros en nombre del propietario del recurso sin compartir credenciales. ¿Tengo curiosidad por saber si necesito que OAuth consuma API alojadas en mi servidor de aplicaciones desde una aplicación móvil (sin la participación de terceros)?
Monish Kamble
Cuando una parte de confianza me autoriza, ¿no implica eso que también es un mecanismo de autenticación?
variable
245

¿Qué es oAuth?

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.

Partes involucradas

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.

  • oAuth Client (Aplicación que quiere acceder a su credencial)
  • oAuth Provider (por ejemplo, Facebook, Twitter ...)
  • Propietario (la persona con cuenta de facebook, twitter ..)

¿Cómo funciona?

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.

  1. 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 . ingrese la descripción de la imagen aquí

    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.

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

  1. Después de que el Propietario permita que Stackoverflow acceda a la información . Luego, Facebook redirige nuevamente a stackoverflow, junto con authcode usando redirectUrl provisto en el paso 2.
  2. Luego, Stackoverflow contacta con Facebook junto con el código de autenticación obtenido para asegurarse de que todo esté bien.
  3. Solo entonces Facebook dará token de acceso a stackoverflow. Luego, stackoverflow utiliza el token de acceso para recuperar la información del propietario sin usar contraseña. Este es todo el motivo de oAuth, donde las credenciales agudas nunca están expuestas a aplicaciones de terceros.

Para más:

Video rápido

enlace web

Balman Rawat
fuente
seguro localhost también es una url y por qué no caduca y publica el resultado aquí.
Balman Rawat
2
Sí. Puede usar la dirección IP como URL de redireccionamiento: redirect_uri = ' 127.0.0.1:4200 ' y el nombre de dominio OAuth debe ser 127.0.0.1
Samson Maben
Pero, ¿debería ser el mismo correo electrónico tanto en el cliente oAuth como en el proveedor oAuth para que funcione?
Rowayda Khayri
buena explicación
JayD
OAuth 2 es un protocolo de seguridad, no un protocolo de autorización. La respuesta comienza en la nota incorrecta.
Rajat
13

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,

ameer
fuente
14
OAuth no es un proceso de autenticación, sino más bien un proceso de autorización.
André Caron el
No quiero decir que la aplicación necesita autenticación directamente, sino de autenticación del usuario con el proveedor de servicios para autorizar a un tercero a los datos de usuario de acceso Creo ...
Ameer
Agregué la precisión porque OpenID está específicamente dirigido a la autenticación delegada (reutilizar una cuenta externa existente) con la esperanza de que las personas dejen de compartir sus credenciales compartidas. OAuth está dirigido específicamente a la autorización (reutilización de recursos) con la esperanza de facilitar el intercambio de información.
André Caron el
9

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.

aleatoriedad
fuente
9

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:

    1. Solicitante, es decir, propietario
    2. Cuenta bancaria es cliente de OAuth, necesitan información
    3. Adhaar / Passport ID es el proveedor de OAuth
Premraj
fuente
7

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.

Ozkan
fuente
2

OAuth sucedió cuando registramos una cuenta SO con el botón Facebook / Google.

  1. Aplicación (SO) que redirige al usuario a la URL de autorización del proveedor. (Mostrar una página web preguntando al usuario si desea otorgar a la aplicación acceso para leer y actualizar sus datos).
  2. El usuario acepta otorgar el proceso de solicitud.
  3. El proveedor de servicios redirige al usuario nuevamente a la aplicación (SO), pasando el código de autorización como parámetro.
  4. SO intercambia el código por una concesión de acceso.

Fuente: proveedores de servicios OAuth1

John Joe
fuente
Hola, necesito trabajar con REST API, así que instale oAuth, en realidad estoy usando Magento, en localhost, he instalado oAuth, en el servidor en vivo, ¿cómo puedo instalar, estoy usando el servidor GoDaddy VPS, alguna ayuda? @john joe
Gema
@Rathinam hola, me gustaría ayudar, pero está fuera de mi experiencia. Lo siento mucho.
John Joe
¿Es posible utilizar la API REST sin oAuth? @John Joe
Gema
@Rathinam sí, depende de ti
John Joe
1

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.

Yuvraj Singh Shekhawat
fuente
2
Creo que has confundido OAuth y OpenID
A23149577
0

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