openid vs oauth
¿Cuál es la diferencia entre OpenID y SAML? (4)
Original OpenID 2.0 vs SAML
Son dos protocolos diferentes de autenticación y difieren a nivel técnico.
Desde la distancia, las diferencias comienzan cuando los usuarios inician la autenticación. Con OpenID, un inicio de sesión de usuario generalmente es una dirección HTTP del recurso que es responsable de la autenticación. Por otro lado, SAML se basa en una confianza explícita entre su sitio y el proveedor de identidad, por lo que es bastante raro aceptar credenciales de un sitio desconocido.
Las identidades de OpenID son fáciles de usar en la red. Como desarrollador, puede aceptar usuarios provenientes de proveedores de OpenID muy diferentes. Por otro lado, un proveedor de SAML generalmente debe codificarse por adelantado y usted federa su aplicación con solo proveedores de identidad seleccionados. Es posible reducir la lista de proveedores aceptados de identidad OpenID, pero creo que esto sería contrario al concepto general de OpenID.
Con OpenID aceptas identidades provenientes de servidores arbitrarios. Alguien dice ser http://someopenid.provider.com/john.smith
. ¿Cómo vas a unir esto con un usuario en tu base de datos? De alguna manera, por ejemplo, almacenando esta información con una nueva cuenta y reconociéndola cuando el usuario visita su sitio nuevamente. Tenga en cuenta que no se puede confiar en ninguna otra información sobre el usuario (incluido su nombre o correo electrónico).
Por otro lado, si existe una confianza explícita entre su aplicación y el Proveedor de Id de SAML, puede obtener información completa sobre el usuario, incluido el nombre y el correo electrónico, y esta información puede ser de confianza, solo por la relación de confianza. Significa que usted tiende a creer que el Proveedor de Id de alguna manera validó toda la información y puede confiar en ella a nivel de la aplicación. Si los usuarios vienen con tokens SAML emitidos por un proveedor desconocido, su aplicación simplemente rechaza la autenticación.
OpenID Connect vs SAML
(sección añadida 07-2017)
Esta respuesta data de 2011 y en ese momento OpenID significaba OpenID 2.0 . Más tarde, en algún lugar en 2012, se publicó OAuth2.0 y en 2014, OpenID Connect (una línea de tiempo más detallada here ).
Para cualquiera que lea esto hoy en día, OpenID Connect no es el mismo OpenID al que se refiere la respuesta original , sino que es un conjunto de extensiones de OAuth2.0.
Si bien esta respuesta puede arrojar algo de luz desde el punto de vista conceptual, una versión muy concisa para alguien con antecedentes de OAuth2.0 es que OpenID Connect es de hecho OAuth2.0 pero agrega una forma estándar de consultar la información del usuario , después del token de acceso está disponible.
En referencia a la pregunta original: ¿cuál es la principal diferencia entre OpenID Connect (OAuth2.0) y SAML? ¿Cómo se construye la relación de confianza entre la aplicación y el proveedor de identidad?
SAML crea la relación de confianza en una firma digital, los tokens SAML emitidos por el proveedor de identidad son XML firmados, la aplicación valida la firma en sí misma y el certificado que presenta. La información del usuario se incluye en un token de SAML, entre otra información.
OpenID Connect (OAuth2.0) construye la relación de confianza en una llamada directa de HTTP desde la aplicación a la identidad. La solicitud contiene el token de acceso (obtenido por la aplicación durante el flujo del protocolo) y la respuesta contiene la información sobre el usuario.
¿Cuál es la diferencia entre OpenID y SAML?
@Prabath: OpenID admite el inicio de sesión único.
Según la pregunta: OpenID permite la autenticación del usuario a través de proveedores de identidad centralizados (IdP) en múltiples sitios web confiables o partes confiables (RP). Cuando un usuario es autenticado, puede moverse libremente entre múltiples sitios web habilitados para OpenID sin tener que volver a ingresar sus credenciales.
SAML es un estándar abierto de la industria basado en XML para autenticación de usuario de intercambio e información de autorización (aserciones de seguridad) entre proveedores de servicios y consumidores.
OpenID y SAML2 se basan en el mismo concepto de identidad federada. A continuación se encuentran algunas de las diferencias entre ellos ..
- SAML2 admite el cierre de sesión único, pero OpenID no
- Los proveedores de servicios de SAML2 están conectados con los proveedores de identidad SAML2, pero las partes confiables de OpenID no están conectadas con los proveedores de OpenID. OpenID tiene un protocolo de descubrimiento que descubre dinámicamente el proveedor de OpenID correspondiente, una vez que se proporciona un OpenID. SAML tiene un protocolo de descubrimiento basado en el protocolo del servicio de descubrimiento del proveedor de identidad.
- Con SAML2, el usuario está conectado al IdP SAML2; su identificador SAML2 solo es válido para el IdP SAML2 que lo emitió. Pero con OpenID, usted posee su identificador y puede asignarlo a cualquier proveedor de OpenID que desee.
- SAML2 tiene enlaces diferentes mientras que el único enlace que OpenID tiene es HTTP
- SAML2 puede ser un proveedor de servicios (SP) iniciado o un proveedor de identidad (IdP) iniciado. Pero OpenID siempre inicia SP.
- SAML 2 está basado en XML mientras que OpenID no lo está.
Poniendo a un lado los detalles técnicos, llegando bastante tarde para la fiesta, lo que entiendo es que la mayor diferencia entre SAML y otros estándares de autenticación (incluido OpenID) es que
SAML requiere que el Proveedor de Identidad (IDP) y el Proveedor de Servicios (SP) se conozcan entre sí antes de la autenticación y autorización estáticas preconfiguradas y manuales. OpenId (+ Connect) no tiene ese requisito.
Esto es importante para los desplazados internos que desean un control total sobre quién accede a los datos. Parte del estándar es configurar lo que se proporciona a los SP específicos.
Por ejemplo, un banco podría no querer que sus usuarios accedan a ningún servicio, excepto algunos predefinidos (debido a regulaciones u otras reglas de seguridad estrictas).
Esto no significa que un IDP de OpenId no pueda hacer cumplir dicha restricción. Un implementador de OpenID puede controlar el acceso, pero ese no es el objetivo de OpenID.
Además de la diferencia de control de acceso predefinida, estricta y estática, conceptualmente (no técnicamente), OpenID Connect y SAML son similares.
En pocas palabras, si usted es un SP, debe respaldar lo que sus clientes requieren:
- Si su cliente es un usuario final individual (utilizando su ID de Google, por ejemplo), olvídese de SAML. Use OpenID Connect.
- Si su cliente es un banco que quiere que sus empleados usen su servicio y exporten solo la lista estática de datos que le proporcionará, su banco probablemente querrá que admita SAML. El banco podría tener una implementación de OpenID con restricción de cliente, que será su día de suerte :)