¿Qué es SAML?

SAML es Lenguaje de marcado de afirmación de seguridad y su nombre completo en inglés es Lenguaje de marcado de afirmación de seguridad. Es un estándar basado en XML para intercambiar datos de autenticación y autorización entre diferentes dominios de seguridad. Los proveedores de identidad y los proveedores de servicios están definidos en el estándar SAML, los cuales constituyen los diferentes dominios de seguridad mencionados anteriormente. SAML es un producto del Comité Técnico de Servicios de Seguridad de OASIS.

Saml (Security Assertion Markup Language) es un marco XML, que es un conjunto de protocolos que se pueden utilizar para transmitir afirmaciones de seguridad. Por ejemplo, si dos máquinas remotas quieren comunicarse, para garantizar la seguridad, podemos tomar medidas como el cifrado o podemos usar SAML para transmitir datos. Los datos transmitidos están en forma de XML y cumplen con la especificación SAML, por lo que no necesitamos qué tipo de sistema utilizan las dos máquinas. Solo necesitamos comprender la especificación SAML. Esto obviamente es mejor que el método tradicional. La especificación SAML es un conjunto de definiciones de esquema.

Se puede decir que en el campo de los servicios Web, el esquema es la especificación, y en el campo de Java, la API es la especificación.

La necesidad más importante que aborda SAML es el inicio de sesión único (SSO) del navegador web. El inicio de sesión único es común a nivel de intranet (por ejemplo, mediante el uso de cookies), pero ampliarlo fuera de la intranet ha sido problemático y ha llevado a una proliferación de tecnologías patentadas que no son interoperables. (Otra solución más reciente al problema del inicio de sesión único del navegador es el protocolo de conexión OpenID).

SAML incluye principalmente tres aspectos:

1. Indica si el usuario ha sido autenticado, normalmente se utiliza para el inicio de sesión único.

2. Declaración de atributos. Representa las propiedades del tema.

3. Declaración de autorización. Indica los permisos del recurso.

SAML significa que el cliente envía una solicitud SAML al servidor y luego el servidor devuelve una respuesta SAML. La transmisión de datos se expresa en formato XML que cumple con la especificación SAML.

SAML se puede transmitir mediante SOAP u otros protocolos.

Porque la especificación SAML consta de varias partes: aserción SAML, protocolo SAML, enlace SAML, etc.

Debido a que SAML establece una relación de confianza entre dos sitios con * * * usuarios, la seguridad es una consideración muy importante. Las fallas de seguridad en SAML podrían comprometer la información personal de los usuarios del sitio objetivo. SAML se basa en una serie de estándares de seguridad maduros, incluidos SSL y X.509, para proteger las comunicaciones entre los sitios de origen y destino de SAML. Todas las comunicaciones entre los sitios de origen y de destino están cifradas. Para garantizar que dos sitios que participan en una interacción SAML puedan verificar las identidades de cada uno, también se utilizan certificados.

En el protocolo SAML, el diseño de seguridad del protocolo es muy completo, incluido el proceso de interacción del cliente, SP e IDP definidos en el protocolo. Los datos de interacción clave en SAML se han firmado y cifrado con contraseña. .

1. Firmar datos SAML

Para garantizar de manera efectiva que los datos durante la interacción SAML no sean falsificados ni manipulados, admite la firma de cualquier dato SAML. Afirmaciones de autenticación SAML especialmente importantes.

En concreto, este proyecto utiliza para la firma un certificado digital en formato X.509, utilizando el algoritmo criptográfico de clave pública RSA y el algoritmo hash SHA-256, con una longitud de clave de 1024 bits.

Diseño de seguridad de 2.2. Aserciones de autenticación SAML: cifrado y validez de aserción.

Las aserciones de autenticación SAML contienen una gran cantidad de información de la cuenta del usuario, por lo que es necesario cifrarlas.

El cifrado de las afirmaciones de autenticación SAML también admite múltiples algoritmos de cifrado simétrico, incluidos algoritmos de secreto de estado y algoritmos AES. Este proyecto utiliza el algoritmo AES con una longitud de clave de 1024 bits, que puede garantizar eficazmente la confidencialidad de las afirmaciones de autenticación SAML.

Además, para evitar ataques de repetición, el período de validez de las aserciones de autenticación también está limitado en el diseño. El período de validez de las aserciones de autenticación es configurable, por lo que se recomienda utilizar un período de validez más corto.

En primer lugar, necesita conocer algunos proveedores de servicios básicos:

IDP: proveedor de servicios de autenticación de cuentas, como SAIF IDaaS como IDP, completa principalmente la autenticación.

SP: Software (entidad) que proporciona servicios comerciales a los usuarios, como Zen.

Navegador: el navegador del usuario puede acceder a los recursos y realizar saltos relacionados a través del navegador para completar la autenticación de identidad.

"Dirección de inicio de sesión del usuario", la ruta de inicio de sesión del protocolo SAML aplicado.

"relayState Address", la dirección de salto después de la autenticación exitosa de la aplicación.

"AssertionConsumerServiceUrl" donde la aplicación recibe autenticación unificada.

La siguiente es una breve introducción al proceso de inicio de sesión en WebApp1 mediante SSO basado en SAML.

Esta imagen ilustra los siguientes pasos.

El usuario intentó acceder a WebApp1.

Artículos relacionados: ¿Qué es SSO?