Autorización OAuth vs Autenticación
oauth-2.0 (2)
OAuth es una especificación de autorización
OAuth 2.0 es una especificación para la autorización, pero NO para la autenticación. RFC 6749, 3.1. El punto final de autorización dice explícitamente lo siguiente:
El punto final de autorización se utiliza para interactuar con el propietario del recurso y obtener una concesión de autorización. El servidor de autorización DEBE verificar primero la identidad del propietario del recurso. La forma en que el servidor de autorización autentica al propietario del recurso (por ejemplo, nombre de usuario y contraseña de inicio de sesión, cookies de sesión) está fuera del alcance de esta especificación .
Autenticación OAuth?
La autenticación ofrece información sobre "quién es". La autorización trata información sobre "quién otorga qué permisos a quién". El flujo de autorización contiene autenticación como primer paso. Es la razón por la cual las personas a menudo están confundidas.
Hay muchas bibliotecas y servicios que usan OAuth 2.0 para la autenticación. A menudo se le llama "inicio de sesión social" y hace que la gente se confunda más. Si ve "Autenticación OAuth" (no "Autorización OAuth"), es una solución que utiliza OAuth para la autenticación.
OpenID Connect
OpenID 1.0 y OpenID 2.0 son especificaciones antiguas para la autenticación. Aquellos que hicieron las especificaciones esperaban que las personas usaran OpenID para la autenticación. Sin embargo, algunas personas comenzaron a usar OAuth 2.0 para autenticación (no para autorización) y la autenticación OAuth ha prevalecido rápidamente.
Desde el punto de vista de los chicos de OpenID, la autenticación basada en OAuth no era lo suficientemente segura, pero tenían que admitir que las personas preferían la autenticación OAuth. Como resultado, los chicos de OpenID decidieron definir una nueva especificación, OpenID Connect , además de OAuth 2.0.
Sí, esto ha confundido mucho a la gente.
Definiciones de una oración de OAuth 2.0 y OpenID Connect
OAuth 2.0 es un marco en el que un usuario de un servicio puede permitir que una aplicación de terceros acceda a sus datos alojados en el servicio sin revelar sus credenciales (ID y contraseña) a la aplicación.
OpenID Connect es un marco sobre OAuth 2.0 donde una aplicación de terceros puede obtener la información de identidad de un usuario que es administrada por un servicio.
(Lo sentimos, estas definiciones son extractos de la página de overview de mi empresa)
Definiciones desde el punto de vista de los implementadores
La autenticación es un proceso para determinar el sujeto (= identificador único) de un usuario final. Hay muchas formas de determinar el tema. Identificación y contraseña, huellas digitales, reconocimiento de iris, etc.
La autorización es un proceso para asociar el tema con los permisos solicitados y la aplicación cliente que solicitó los permisos. Un token de acceso representa la asociación.
Ver también
La terminología de OAuth me ha estado molestando desde hace mucho tiempo. ¿Es la Autorización OAuth como algunos sugerirían o es Autenticación?
Corríjame si me equivoco, pero siempre he leído Autorización como el acto de permitir que alguien acceda a un recurso, pero OAuth no parece tener ninguna implementación que realmente permita el acceso de los usuarios a un recurso determinado. Todas las implementaciones de OAuth de las que se habla es proporcionar al usuario un token (firmado y a veces encriptado). Este token se pasa con cada llamada a un punto final de servicio de fondo donde se verifica su validez, nuevamente no es una preocupación de OAuth.
¿Es la autenticación OAuth (cada artículo dice que no lo es) lo que considero que requiere que un usuario proporcione credenciales que a su vez prueban que un usuario debe / no debe tener acceso?
Por lo tanto, parece que OAuth no es Autorización ni Autenticación ya que estos deben ser realizados por otros procesos. Entonces, ¿qué diablos es eso? ¿Es un proceso para comunicar un token? ¿Es una palabra esponjosa que realmente no tiene un significado específico?
Es difícil hacer una pregunta sobre este tema sin sonar enigmático y supersticioso (fantasmas y duendes), por lo que espero que responder a esta pregunta tampoco sea algo simple. Entrar a su propio riesgo.
OAuth
no es una API o un servicio: es un estándar abierto para la
authorization
y cualquiera puede implementarlo.
OAuth se creó como respuesta al
authentication pattern
directa.
Este es OAuth:
How can I allow an app to access my data without necessarily giving it my password?
Actores de OAuth
OAuth != authentication
OAuth no es autenticación. Es un protocolo de autorización o, mejor aún, un protocolo de delegación.
Autenticación vs. Autorización
Authentication
es el proceso de verificar una identidad (quiénes dicen que son)
Authorization
es el proceso de verificar lo que alguien tiene permitido hacer (permisos)