stringtranslate.com

Lenguaje de marcado de afirmación de seguridad

El lenguaje de marcado de aserción de seguridad ( SAML , pronunciado SAM-el , / ˈ s æ m əl / ) [1] es un estándar abierto para intercambiar datos de autenticación y autorización entre partes, en particular, entre un proveedor de identidad y un proveedor de servicios . SAML es un lenguaje de marcado basado en XML para afirmaciones de seguridad (declaraciones que utilizan los proveedores de servicios para tomar decisiones de control de acceso). SAML también es:

Un caso de uso importante que aborda SAML es el inicio de sesión único (SSO) en el navegador web . El inicio de sesión único es relativamente fácil de lograr dentro de un dominio de seguridad (usando cookies , por ejemplo), pero extender el SSO a través de dominios de seguridad es más difícil y resultó en la proliferación de tecnologías propietarias no interoperables. El perfil SSO del navegador web SAML se especificó y estandarizó para promover la interoperabilidad. [2]

Descripción general

La especificación SAML define tres roles: el principal (normalmente un usuario humano), el proveedor de identidad (IdP) y el proveedor de servicios (SP). En el caso de uso principal abordado por SAML, el principal solicita un servicio al proveedor de servicios. El proveedor de servicios solicita y obtiene una afirmación de autenticación del proveedor de identidad. Sobre la base de esta afirmación, el proveedor de servicios puede tomar una decisión de control de acceso , es decir, puede decidir si realiza el servicio para el principal conectado.

En el centro de la aserción SAML hay un sujeto (un principal dentro del contexto de un dominio de seguridad particular) sobre el cual se afirma algo. El sujeto suele ser (pero no necesariamente) un ser humano. Al igual que en la descripción técnica de SAML 2.0, [3] los términos sujeto y principal se utilizan indistintamente en este documento.

Antes de entregar la aserción basada en el sujeto del IdP al SP, el IdP puede solicitar cierta información al principal (como un nombre de usuario y contraseña) para autenticar al principal. SAML especifica el contenido de la aserción que se pasa del IdP al SP. En SAML, un proveedor de identidad puede proporcionar afirmaciones SAML a muchos proveedores de servicios. De manera similar, un SP puede confiar en las afirmaciones de muchos IdP independientes. [ cita necesaria ]

SAML no especifica el método de autenticación en el proveedor de identidad. El IdP puede utilizar un nombre de usuario y una contraseña, o alguna otra forma de autenticación, incluida la autenticación multifactor . Un servicio de directorio como RADIUS , LDAP o Active Directory que permite a los usuarios iniciar sesión con un nombre de usuario y contraseña es una fuente típica de tokens de autenticación en un proveedor de identidad. [4] Los populares servicios de redes sociales de Internet también proporcionan servicios de identidad que, en teoría, podrían utilizarse para respaldar los intercambios SAML.

Historia

Historia de SAML (2002-2005)

El Comité Técnico de Servicios de Seguridad (SSTC) de la Organización para el Avance de los Estándares de Información Estructurada (OASIS) , que se reunió por primera vez en enero de 2001, fue autorizado "para definir un marco XML para el intercambio de información de autenticación y autorización". [5] Con este fin, durante los dos primeros meses de ese año se aportó a la SSTC la siguiente propiedad intelectual:

Sobre la base de estas contribuciones iniciales, en noviembre de 2002 OASIS anunció la especificación Security Assertion Markup Language (SAML) 1.0 como estándar de OASIS. [6]

Mientras tanto, Liberty Alliance , un gran consorcio de empresas, organizaciones gubernamentales y sin fines de lucro, propuso una extensión del estándar SAML llamada Liberty Identity Federation Framework (ID-FF). [7] Al igual que su predecesor SAML, Liberty ID-FF propuso un marco de inicio de sesión único, estandarizado, multidominio, basado en web. Además, Liberty describió un círculo de confianza en el que se confía en que cada dominio participante documente con precisión los procesos utilizados para identificar a un usuario, el tipo de sistema de autenticación utilizado y cualquier política asociada con las credenciales de autenticación resultantes. Otros miembros del círculo de confianza podrían luego examinar estas políticas para determinar si deben confiar en dicha información. [8]

Mientras Liberty desarrollaba ID-FF, SSTC comenzó a trabajar en una actualización menor del estándar SAML. La especificación SAML 1.1 resultante fue ratificada por el SSTC en septiembre de 2003. Luego, en noviembre de ese mismo año, Liberty contribuyó con ID-FF 1.2 a OASIS, sembrando así las semillas para la próxima versión principal de SAML. En marzo de 2005, se anunció SAML 2.0 como estándar OASIS. SAML 2.0 representa la convergencia de Liberty ID-FF y las extensiones propietarias aportadas por el proyecto Shibboleth , así como las primeras versiones del propio SAML. La mayoría de las implementaciones de SAML admiten la versión 2.0, mientras que muchas aún admiten la versión 1.1 para lograr compatibilidad con versiones anteriores. En enero de 2008, las implementaciones de SAML 2.0 se volvieron comunes en el gobierno, la educación superior y las empresas comerciales de todo el mundo. [8]

Versiones

SAML ha pasado por una revisión menor y una revisión mayor desde la versión 1.0.

Liberty Alliance contribuyó con su Marco de Federación de Identidad (ID-FF) al OASIS SSTC en septiembre de 2003:

Las versiones 1.0 y 1.1 de SAML son similares aunque existen pequeñas diferencias. [9] Sin embargo, las diferencias entre SAML 2.0 y SAML 1.1 son sustanciales. Aunque los dos estándares abordan el mismo caso de uso, SAML 2.0 es incompatible con su predecesor.

Aunque ID-FF 1.2 se contribuyó a OASIS como base de SAML 2.0, existen algunas diferencias importantes entre SAML 2.0 e ID-FF 1.2. En particular, las dos especificaciones, a pesar de tener raíces comunes, son incompatibles. [8]

Diseño

SAML se basa en una serie de estándares existentes:

SAML define aserciones, protocolos, enlaces y perfiles basados ​​en XML. El término SAML Core se refiere a la sintaxis y semántica general de las aserciones SAML, así como al protocolo utilizado para solicitar y transmitir esas aserciones de una entidad del sistema a otra. El protocolo SAML se refiere a lo que se transmite, no a cómo (esto último está determinado por la elección del enlace). Por lo tanto, SAML Core define aserciones SAML "simples" junto con elementos de solicitud y respuesta SAML.

Un enlace SAML determina cómo las solicitudes y respuestas SAML se asignan a protocolos de comunicación o mensajería estándar. Un enlace importante (síncrono) es el enlace SAML SOAP.

Un perfil SAML es una manifestación concreta de un caso de uso definido que utiliza una combinación particular de aserciones, protocolos y enlaces.

Afirmaciones

Una aserción SAML contiene un paquete de información de seguridad:

<saml:Aseveración...> .. </saml:Aserción>

En términos generales, una parte que confía interpreta una afirmación de la siguiente manera:

La afirmación A fue emitida en el momento t por el emisor R con respecto al sujeto S, siempre que las condiciones C sean válidas.

Las afirmaciones SAML normalmente se transfieren de los proveedores de identidad a los proveedores de servicios. Las aserciones contienen declaraciones que los proveedores de servicios utilizan para tomar decisiones de control de acceso. SAML proporciona tres tipos de declaraciones:

  1. Declaraciones de autenticación
  2. Declaraciones de atributos
  3. Declaraciones de decisión de autorización

Las declaraciones de autenticación afirman al proveedor de servicios que el principal efectivamente se autenticó con el proveedor de identidad en un momento determinado utilizando un método de autenticación particular. Se puede revelar otra información sobre el principal autenticado (llamado contexto de autenticación ) en una declaración de autenticación.

Una declaración de atributo afirma que un principal está asociado con ciertos atributos. Un atributo es simplemente un par nombre-valor . Las partes dependientes utilizan atributos para tomar decisiones de control de acceso.

Una declaración de decisión de autorización afirma que a un principal se le permite realizar la acción A en el recurso R dada la evidencia E. La expresividad de las declaraciones de decisiones de autorización en SAML está intencionalmente limitada. Se recomienda que los casos de uso más avanzados utilicen XACML en su lugar.

Protocolos

Respuesta del protocolo SAML

Un protocolo SAML describe cómo ciertos elementos SAML (incluidas las aserciones) se empaquetan dentro de los elementos de solicitud y respuesta SAML, y brinda las reglas de procesamiento que las entidades SAML deben seguir al producir o consumir estos elementos. En su mayor parte, un protocolo SAML es un protocolo simple de solicitud-respuesta.

El tipo más importante de solicitud del protocolo SAML se denomina consulta . Un proveedor de servicios realiza una consulta directamente a un proveedor de identidad a través de un canal secundario seguro. Por tanto, los mensajes de consulta suelen estar vinculados a SOAP.

Correspondientes a los tres tipos de declaraciones, existen tres tipos de consultas SAML:

  1. Consulta de autenticación
  2. consulta de atributos
  3. Consulta de decisión de autorización

El resultado de una consulta de atributo es una respuesta SAML que contiene una aserción, que a su vez contiene una declaración de atributo. Consulte el tema SAML 2.0 para ver un ejemplo de consulta/respuesta de atributos .

Más allá de las consultas, SAML 1.1 no especifica otros protocolos.

SAML 2.0 amplía considerablemente la noción de protocolo . Los siguientes protocolos se describen en detalle en SAML 2.0 Core:

La mayoría de estos protocolos son nuevos en SAML 2.0 .

Fijaciones

SAML sobre SOAP sobre HTTP

Un enlace SAML es una asignación de un mensaje de protocolo SAML a formatos de mensajería y/o protocolos de comunicaciones estándar. Por ejemplo, el enlace SAML SOAP especifica cómo se encapsula un mensaje SAML en un sobre SOAP, que a su vez está vinculado a un mensaje HTTP.

SAML 1.1 especifica solo un enlace, el enlace SAML SOAP. Además de SOAP, en el SSO del navegador web SAML 1.1 están implícitos los precursores del enlace HTTP POST, el enlace de redireccionamiento HTTP y el enlace de artefactos HTTP. Sin embargo, estos no están definidos explícitamente y solo se utilizan junto con el SSO del navegador web SAML 1.1. La noción de vinculación no se desarrolla completamente hasta SAML 2.0.

SAML 2.0 separa completamente el concepto de enlace del perfil subyacente. De hecho, existe una nueva especificación de enlaces en SAML 2.0 que define los siguientes enlaces independientes:

Esta reorganización proporciona una enorme flexibilidad: tomando solo el SSO del navegador web como ejemplo, un proveedor de servicios puede elegir entre cuatro enlaces (HTTP Redirect, HTTP POST y dos tipos de HTTP Artifact), mientras que el proveedor de identidad tiene tres opciones de enlace (HTTP POST más dos formas de artefacto HTTP), para un total de doce posibles implementaciones del perfil SSO del navegador web SAML 2.0.

Perfiles

Un perfil SAML describe en detalle cómo se combinan las aserciones, los protocolos y los enlaces SAML para admitir un caso de uso definido. El perfil SAML más importante es el perfil SSO del navegador web.

SAML 1.1 especifica dos formas de SSO del navegador web, el perfil de navegador/artefacto y el perfil de navegador/POST. Este último pasa afirmaciones por valor , mientras que Navegador/Artefacto pasa afirmaciones por referencia . Como consecuencia, Browser/Artifact requiere un intercambio SAML de canal secundario a través de SOAP. En SAML 1.1, todos los flujos comienzan con una solicitud al proveedor de identidad para simplificar. Se han propuesto extensiones patentadas al flujo básico iniciado por IdP (por Shibboleth , por ejemplo).

El perfil SSO del navegador web se refactorizó completamente para SAML 2.0. Conceptualmente, Navegador/Artefacto SAML 1.1 y Navegador/POST son casos especiales de SSO del Navegador Web SAML 2.0. Este último es considerablemente más flexible que su homólogo SAML 1.1 debido al nuevo diseño de enlace "plug-and-play" de SAML 2.0. A diferencia de las versiones anteriores, los flujos del navegador SAML 2.0 comienzan con una solicitud al proveedor de servicios. Esto proporciona una mayor flexibilidad, pero los flujos iniciados por SP naturalmente dan lugar al llamado problema de descubrimiento de proveedores de identidad , el foco de muchas investigaciones en la actualidad. Además del SSO del navegador web, SAML 2.0 introduce numerosos perfiles nuevos:

Además del perfil SSO del navegador web SAML, algunos perfiles de terceros importantes de SAML incluyen:

Seguridad

Las especificaciones SAML recomiendan, y en algunos casos exigen, una variedad de mecanismos de seguridad:

Los requisitos a menudo se expresan en términos de autenticación (mutua), integridad y confidencialidad, dejando la elección del mecanismo de seguridad a los implementadores y a los implementadores.

Usar

El caso de uso principal de SAML se denomina Inicio de sesión único (SSO) del navegador web . Un usuario utiliza un agente de usuario (normalmente un navegador web) para solicitar un recurso web protegido por un proveedor de servicios SAML . El proveedor de servicios, que desea conocer la identidad del usuario solicitante, emite una solicitud de autenticación a un proveedor de identidad SAML a través del agente de usuario. El flujo de protocolo resultante se muestra en el siguiente diagrama.

Inicio de sesión único mediante SAML en un navegador web
1. Solicite el recurso de destino en el SP (solo SAML 2.0)
El principal (a través de un agente de usuario HTTPs) solicita un recurso de destino al proveedor de servicios:
https://sp.example.com/myresource
El proveedor de servicios realiza una verificación de seguridad en nombre del recurso de destino. Si ya existe un contexto de seguridad válido en el proveedor de servicios, omita los pasos 2 a 7.
2. Redirigir al servicio SSO en el IdP (solo SAML 2.0)
El proveedor de servicios determina el proveedor de identidad preferido del usuario (por medios no especificados) y redirige al agente de usuario al Servicio SSO en el proveedor de identidad:
https://idp.example.org/SAML2/SSO/Redirect?SAMLRequest=request
El valor del SAMLRequestparámetro (indicado por el marcador de posición requestarriba) es la codificación Base64 de un elemento desinflado <samlp:AuthnRequest> .
3. Solicite el servicio SSO en el IdP (solo SAML 2.0)
El agente de usuario emite una solicitud GET al servicio SSO en la URL del paso 2. El servicio SSO procesa AuthnRequest(enviada a través del SAMLRequestparámetro de consulta URL) y realiza una verificación de seguridad. Si el usuario no tiene un contexto de seguridad válido, el proveedor de identidad identifica al usuario (se omiten detalles).
4. Responda con un formulario XHTML
El servicio SSO valida la solicitud y responde con un documento que contiene un formulario XHTML:
 < método de formulario  = "publicar" acción = "https://sp.example.com/SAML2/SSO/POST" ... > < tipo de entrada = "oculto" nombre = "SAMLResponse" valor = "respuesta" />        ... < tipo de entrada  = "enviar" valor = "Enviar" /> </ formulario >   
El valor del SAMLResponseelemento (indicado por el marcador de posición responsearriba) es la codificación base64 de un <samlp:Response>elemento.
5. Solicitar el Servicio de Consumidor de Aseveraciones en el SP
El agente de usuario emite una solicitud POST al servicio de consumidor de aserciones en el proveedor de servicios. El valor del SAMLResponseparámetro se toma del formulario XHTML en el paso 4.
6. Redirigir al recurso de destino
El servicio de consumidor de aserciones procesa la respuesta, crea un contexto de seguridad en el proveedor de servicios y redirige al agente de usuario al recurso de destino.
7. Solicite nuevamente el recurso de destino en el SP.
El agente de usuario solicita el recurso de destino al proveedor de servicios (nuevamente):
https://sp.example.com/myresource
8. Responder con el recurso solicitado
Dado que existe un contexto de seguridad, el proveedor de servicios devuelve el recurso al agente de usuario.

En SAML 1.1, el flujo comienza con una solicitud al servicio de transferencia entre sitios del proveedor de identidad en el paso 3.

En el flujo de ejemplo anterior, todos los intercambios representados son intercambios de canal frontal , es decir, un agente de usuario HTTP (navegador) se comunica con una entidad SAML en cada paso. En particular, no existen intercambios de canales secundarios ni comunicaciones directas entre el proveedor de servicios y el proveedor de identidad. Los intercambios de canal frontal conducen a flujos de protocolo simples donde todos los mensajes se pasan por valor mediante un enlace HTTP simple (GET o POST). De hecho, el flujo descrito en la sección anterior a veces se denomina perfil SSO del navegador web ligero .

Alternativamente, para mayor seguridad o privacidad, los mensajes pueden pasarse por referencia . Por ejemplo, un proveedor de identidad puede proporcionar una referencia a una aserción SAML (llamada artefacto ) en lugar de transmitir la aserción directamente a través del agente de usuario. Posteriormente, el proveedor de servicios solicita la afirmación real a través de un canal secundario. Dicho intercambio de canal secundario se especifica como un intercambio de mensajes SOAP (SAML sobre SOAP sobre HTTP). En general, cualquier intercambio SAML a través de un canal secundario seguro se realiza como un intercambio de mensajes SOAP.

En el canal posterior, SAML especifica el uso de SOAP 1.1. Sin embargo, el uso de SOAP como mecanismo de vinculación es opcional. Cualquier implementación SAML determinada elegirá los enlaces que sean apropiados.

Ver también

Referencias

  1. ^ "¿Qué es SAML? - Una definición de palabra del diccionario informático de Webopedia". Webopedia.com. 25 de junio de 2002 . Consultado el 21 de septiembre de 2013 .
  2. ^ J. Hughes y otros. Perfiles para el lenguaje de marcado de afirmación de seguridad (SAML) 2.0 de OASIS. Estándar OASIS, marzo de 2005. Identificador del documento: saml-profiles-2.0-os http://docs.oasis-open.org/security/saml/v2.0/saml-profiles-2.0-os.pdf (para obtener la última versión borrador de esta especificación con erratas, ver: https://www.oasis-open.org/committees/download.php/56782/sstc-saml-profiles-errata-2.0-wd-07.pdf)
  3. ^ N. Ragouzis y col. Descripción técnica del lenguaje de marcado de afirmación de seguridad (SAML) 2.0. Borrador 02 del Comité OASIS, marzo de 2008. Identificador del documento: sstc-saml-tech-overview-2.0-cd-02 https://wiki.oasis-open.org/security/Saml2TechOverview
  4. ^ "SAML: el secreto de la gestión de identidades centralizada". Semana de la información.com. 2004-11-23 . Consultado el 23 de mayo de 2014 .
  5. ^ Maler, Eve (9 de enero de 2001). «Acta de 9 de enero de 2001 Servicios de Seguridad TC telecon». servicios-de-seguridad en oasis-open (Lista de correo) . Consultado el 7 de abril de 2011 .
  6. ^ "Historia de SAML". SAMLXML.org. 2007-12-05 . Consultado el 22 de mayo de 2014 .
  7. ^ Conor P. Cahill. "Descripción general de la tecnología Liberty" (PDF) . Alianza por la Libertad . Consultado el 25 de agosto de 2017 .
  8. ^ abc "Google, NTT y la GSA de EE. UU. implementan SAML 2.0 para la gestión de identidad digital". Diario de Oracle. 2008-01-29 . Consultado el 22 de mayo de 2014 .
  9. ^ P. Mishra; et al. (Mayo de 2003), Diferencias entre OASIS Security Assertion Markup Language (SAML) V1.1 y V1.0 (PDF) , OASIS, sstc-saml-diff-1.1-draft-01 , consultado el 7 de abril de 2011
  10. ^ "Cómo romper el cifrado XML" (PDF) . Asociación de Maquinaria de Computación . 19 de octubre de 2011 . Consultado el 31 de octubre de 2014 .
  11. ^ "Los investigadores del RUB rompen el estándar W3C". Universidad del Ruhr en Bochum . 19 de octubre de 2011. Archivado desde el original el 24 de noviembre de 2011 . Consultado el 29 de junio de 2012 .
  12. ^ JABÓN 1.1

Enlaces externos