Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Federación de Identidades
Tabla de contenido
I. Problemática.......................................................................................................................... 3
1. SAML................................................................................................................................ 4
Arquitectura........................................................................................................................... 5
2. Liberty ............................................................................................................................... 8
Arquitectura........................................................................................................................... 8
1. SAML.............................................................................................................................. 13
Escenario ............................................................................................................................. 13
2. ID-WSF ........................................................................................................................... 20
Escenario ............................................................................................................................. 20
V. Referencias.......................................................................................................................... 22
I. Problemática
La identidad es un concepto que es muy utilizado actualmente en internet. Cada vez más
son los servicios que requieren que una persona se identifique para permitirle el ingreso
a la información. Para el usuario el hecho de estar constantemente teniéndose que
loguear a una página puede ser muy tedioso. Por otro lado en el caso de una
organización que posee varias aplicaciones web, puede llegar a ser muy costoso
mantener las identidades de los usuarios de forma independiente en todas las
aplicaciones.
Lo dicho hasta el momento es a nivel de aplicaciones web, pero las aplicaciones en las
cuales vamos a enfocar nuestro estudio poseen una arquitectura de SOA, por lo que
pueden consumir servicios que en su mayoría requieren de la autenticación por parte de
la aplicación para acceder a la información de cierto usuario. Por lo que sería deseable
que se manejara una identidad única tanto a nivel web como a nivel de servicios.
Por lo tanto, lo que intentaremos debelar en los siguientes capítulos es la forma en que
se puede lograr dicha identidad única utilizando estándares como SAML e ID-WSF.
Primero se dará una visión general de los estándares mencionados anteriormente y
luego se verán dos casos de estudio de la aplicación de los mismos en la realidad.
II. Estándares
1. SAML
La implementación de protocolos para la administración distribuida de la seguridad
(autenticación, autorización, etc.) requiere de un estándar que especifique los elementos
de seguridad requeridos y la forma en que estos son transmitidos en forma segura entre
los distintos componentes. Esta es la tarea que cumple el estándar SAML que se
encuentra actualmente en la versión 2.
SAML fue desarrollado tomando como base el problema del Single Sign-On entre
aplicaciones web. La solución que especifica SAML define la existencia de dos
componentes lógicos: un generador de información de seguridad y un consumidor,
también son llamados IDP (identity provider) y SP (service provider)
respectivamente.
Para comprender un poco más la problemática vamos a describir a continuación los dos
casos de uso principales que fueron la base para el desarrollo de SAML: Single Sign-On
Web y Federación de Identidad.
Sitio Web
de
GREATAIR
1
greatair.com
2
Sitio Web
de
BESTCARS
bestcars.com
Círculo de Confianza
En este caso el usuario ingresa al sitio web del la empresa GREATAIR y se loguea.
Luego en forma transparente o no, el usuario es dirigido hacia el sitio web de
BESTCARS. En este caso se asume que ya existe una federación de identidades para el
usuario (es decir existe una asociación entre la identidades locales de forma que los
sistemas puedan referirse al usuario de forma unívoca). El IDP (greatair.com) envía junto
con la solicitud, información adicional (por ejemplo información sobre la identidad del
usuario) de forma que el SP (bestcars.com) pueda autorizar al usuario a acceder al
recurso solicitado sin que se requiera volver a autenticarlo.
Federación de Identidad
Veamos ahora utilizando como base el ejemplo anterior como se logra la federación de
identidad.
Una vez completada la interacción se tiene una forma segura de relacionar los usuarios
entre los sistemas.
Arquitectura
Assertions: los Assertions definen las afirmaciones de seguridad de una entidad dentro
de un sistema. Estas afirmaciones pueden ser de tres tipos. Los Authentication
statements indican simplemente que el usuario ha sido autenticado por alguna
aplicación. Los Attribute statements son más específicos e incluyen información sobre
los atributos del usuario (por ejemplo que un usuario pertenece a un determinado grupo
con más privilegios). Authorization decision statements son aun más específicos e
incluyen directamente los privilegios que posee el usuario (por ejemplo que un usuario
tenga permisos para comprar cierto producto).
Los Assertions y otros componentes del estándar se basan en XML lo que permite que
puedan ser utilizados en otros contextos. Por ejemplo WS-Security define un Security
Token que permite utilizar Assertions SAML para proteger los mensajes SOAP.
Protocols: para que SAML sea útil se requiere que además de definir un formato
estándar para los Assertions, se defina un mecanismo para el intercambio automático de
Assertions. Para esto el estándar define un conjunto de protocolos de pedido/respuesta
que permite la obtención de Assertions de un usuario.
Bindings: los dos conceptos anteriores están definidos como un esquema XML. Para
ser utilizados en la práctica se requiere de un mapeo a los distintos protocolos de
transporte utilizados (HTTP-GET, HTTP-POST, SOAP).
Más adelante se describirá con más detalle la segunda variante en el contexto del
ejemplo que se llevó a la práctica.
2. Liberty
Arquitectura
A continuación veremos un esquema con los tres grandes módulos que forman la
arquitectura de Liberty. Los módulos de ID-FF y ID-WSF serán desarrollados en
secciones posteriores. En el punto 2 se muestran los estándares que Liberty adopta o
extiende, como es el caso de SAML que lo extiende con ID-FF.
a. ID-FF
EL estándar Liberty ID-FF permite la administración y federación de identidades, fue
construido a partir de la versión 1.0 de SAML. Este puede ser usado por si solo o en
conjunto con otras herramientas de administración. Este framework está diseñado para
trabajar con plataformas heterogéneas y con todo tipo de dispositivos de red, incluyendo
computadoras personales, teléfonos celulares, PDAs y otros dispositivos emergentes.
Simplified Sign-On
Affiliations
Le permite a un usuario elegir si federarse a un grupo de sitios afiliados.
Anonymity
Le permite a un servicio solicitar ciertos atributos sin necesidad de saber la
identidad del usuario.
ARQUITECTURA
Terminologia y Conceptos
Actores/roles
Usuario – Una entidad del sistema cuya identidad fue autenticada. Normalmente es
sinónimo de “persona física”, pero también puede ser un grupo de personas o una
entidad organizacional como una corporación.
Identity Provider (IdP) – Es una entidad del sistema que se encarga del manejo de
la información de identidad y provee assertions para la autenticación de usuarios de
otros providers.
Service Provider (SP) – Es un sitio web o aplicación web que provee servicios a
usuarios que desean realizar operaciones de autenticación o almacenar atributos de
identidad.
Web Service Consumer (WSC) – Es una entidad del sistema que solicita cierta
información o acción de un web service. Service providers pueden llegar a actuar
como un WSC cuando requieren información que provee un servicio externo.
Web Service Provider (WSP) – Es una entidad del sistema que provee un web
service. Un SP actúa como un WSP cuando otras entidades desean obtener cierta
información de él.
Servicios
Discovery Service (DS) – Es un tipo especial de web service que permite a los
WSCs encontrar un WSP asociado a una identidad de usuario determinada. Como
primer paso se debe de registrar el web service en el DS. No solo le permite a un
WSC descubrir donde se encuentra localizado los diferentes atributos de identidad
del usuario, sino que le permite al WSC enviar un request a un WSP endpoint
incluyendo en el request un identity token determinado.
Single Sign On Service (SSOS) – Es un web service que le permite a los clientes
basados en liberty realizar SSO con un SP de la misma manera que lo haría en un
browser(por medio de cookies).
Para que un service provider pueda ofrecer el servicio de identidad al usuario, éste
debe de tener acceso a todas las porciones de información de identidad que se
encuentran distribuidas por múltiples providers. El service provider puede usar el
discovery service para localizar un servicio de identidad específico para un usuario.
Este último le permite a las entidades obtener de forma dinámica y segura la
descripción de un servicio de identidad de un determinado usuario.
Interaction Service
Un Identity Service puede llegar a necesitar el permiso del usuario para permitirle
compartir su información con los servicios que lo requieren. Éste define una serie de
protocolos y perfiles para interacciones que le permitan a los servicios llevar a cabo
dichas acciones.
Security Profiles
Esta especificación describe una serie de perfiles y requerimientos para asegurar que
el descubrimiento y uso de los Identity Services se realice de forma confiable y
segura. Esto incluye requerimientos de seguridad para proteger la privacidad, y
asegurar la integridad y confiabilidad de los mensajes que se intercambian entre los
service providers.
El ID-WSF SOAP Binding provee a los identity services un framework para las
invocaciones basado en SOAP. Define un grupo de bloques de encabezados SOAP y
reglas de procesamiento que permite la invocación de identity services por medio de
SOAP requests y responses.
Esto permite el alojamiento web de identity services basados en Liberty sin requerir el
uso de un servidor http o poder ser direccionado vía IP desde Internet. Esto es
realmente útil ya que muchos dispositivos en la actualidad poseen un cliente http
pero no poseen la capacidad para tener un servidor http o una dirección IP propia.
1. SAML
A continuación veremos una descripción del escenario en el cual se detalla la interacción
del usuario.
Escenario
Una vez creada la federación los pasos para realizar single sing-on son:
Es importante destacar que hay que realizar la misma configuración del lado del SP.
También se puede configurar directamente desde la consola del OpenSSO utilizando el
concepto de Metadata definido en el estándar SAML.
Una vez realizada esta configuración se puede observar en la consola del OpenSSO
como se creó el círculo de confianza entre el IDP y el SP, esto se muestra en la siguiente
imagen:
A continuación se describe a partir del ejemplo como se lleva a cabo la interacción entre
el IDP y el SP para lograr el SSO Web. Se utilizara para ello el profile SSO iniciado por
el SP con el binding POST/Artifact, es decir el usuario ingresa inicialmente en el sitio
web del SP. La comunicación se realiza por HTTP-POST y los Assertions se obtienen
por comunicación directa entre el IDP y SP por medio de SOAP sobre HTTP.
<soap-env:Envelope>
<soap-env:Body>
<samlp:ArtifactResolve ID="s26...7af" IssueInstant="2008-07-22T01:03:03Z"
Destination="http://server1.tsi.com:8080/opensso/ArtifactResolver/metaAlias/idp">
<saml:Issuer>http://server2.tsi2.com:8080/opensso</saml:Issuer>
<samlp:Artifact>
AAQAAGHDmQF7wiDIE8NAeGCFnuj9TN/mN/0BCVzVZyAiOAKdk9CJXhn8MDE=
</samlp:Artifact>
</samlp:ArtifactResolve>
</soap-env:Body>
</soap-env:Envelope>
<soap-env:Envelope>
<soap-env:Body>
<samlp:ArtifactResponse ID="s2f...3d5" InResponseTo="s26...7af"
Destination="http://server2.tsi2.com:8080/opensso/Consumer/metaAlias/sp">
<saml:Issuer>http://server1.tsi.com:8080/opensso</saml:Issuer>
<samlp:Status>
<samlp:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success">
</samlp:StatusCode>
</samlp:Status>
<samlp:Response ID="s23...f9f" InResponseTo="s23...946"
Destination="http://server2.tsi2.com:8080/opensso/Consumer/metaAlias/sp">
<saml:Issuer>http://server1.tsi.com:8080/opensso</saml:Issuer>
<samlp:Status>
<samlp:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success">
</samlp:StatusCode>
</samlp:Status>
<saml:Assertion ID="s24...048" IssueInstant="2008-07-22T01:03:03Z">
<saml:Issuer>http://server1.tsi.com:8080/opensso</saml:Issuer>
<saml:Subject>
<saml:NameID
1 NameQualifier="http://server1.tsi.com:8080/opensso"
SPNameQualifier="http://server2.tsi2.com:8080/opensso"
Format="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent">
F/OojycdHmFr3TYw3tXObNrVscDp
</saml:NameID>
<saml:SubjectConfirmation
Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">
<saml:SubjectConfirmationData
NotOnOrAfter="2008-07-22T01:13:03Z"
InResponseTo="s23090118c26cf8ed6cb8b79dd347ca738488a0946"
Recipient="http://server2.tsi2.com:8080/opensso/Consumer/metaAlias/sp" />
</saml:SubjectConfirmation>
</saml:Subject>
<saml:Conditions
NotBefore="2008-07-22T01:03:03Z"
NotOnOrAfter="2008-07-22T01:13:03Z">
<saml:AudienceRestriction>
<saml:Audience>
http://server2.tsi2.com:8080/opensso
</saml:Audience>
</saml:AudienceRestriction>
</saml:Conditions>
<saml:AuthnStatement AuthnInstant="2008-07-22T01:03:03Z"
2 SessionIndex="s2afece97f8bb7440609e82a18601d1bc593b52c01">
<saml:AuthnContext>
<saml:AuthnContextClassRef>
urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport
</saml:AuthnContextClassRef>
</saml:AuthnContext>
</saml:AuthnStatement>
</saml:Assertion>
</samlp:Response>
</samlp:ArtifactResponse>
</soap-env:Body>
</soap-env:Envelope>
2. ID-WSF
A continuación veremos una descripción del escenario en el cual se detalla la interacción
del usuario.
Escenario
Diagrama de Interacción
IV. Conclusiones
Con lo visto hasta el momento podemos afirmar que SAML resulta ser una
especificación satisfactoria para lograr Single Sing-on web entre diversas aplicaciones. A
esto le podemos agregar que ya se encuentran disponibles herramientas como Opensso
que nos facilitan la utilización de dicho estándar.
Por otro lado está el caso de la federación de identidades a nivel de servicio, para esta
problemática pudimos constatar que el estándar ID-WSF resuelve el problema pero no se
pudo llevar a la practica con la versión actual de Opensso. Quedaría como trabajo a futuro
lograr implementar una aplicación que utilice el estándar, en particular podría ser el caso
de estudio presentado.
Por último como trabajos a futuro quedaría ver la posibilidad de utilizar estándares como
WS Trust y WS Federation para solucionar la problemática de la federación de
identidades, en particular a nivel de servicios; los mismos fueron manejados como
alternativas durante el desarrollo del proyecto pero decidimos profundizar en los
estándares presentados en este documento y no en éstos.
V. Referencias
[SAMLAuthnCxt] J. Kemp et al. Authentication Context for the OASIS Security
Assertion Markup Language (SAML) V2.0. OASIS SSTC, Marzo 2005. http://docs.oasis-
open.org/security/saml/v2.0/saml-authncontext-2.0-os.pdf.
[SAMLBind] S. Cantor et al. Bindings for the OASIS Security Assertion Markup
Language (SAML) V2.0. OASIS SSTC, Marzo 2005.
http://docs.oasis-open.org/security/saml/v2.0/saml-bindings-2.0-os.pdf.
[SAMLCore] S. Cantor et al. Assertions and Protocols for the OASIS Security Assertion
Markup Language (SAML) V2.0. OASIS SSTC, Marzo 2005.
http://docs.oasis-open.org/security/saml/v2.0/saml-core-2.0-os.pdf.
[SAMLExecOvr] P. Madsen, et al. SAML V2.0 Executive Overview. OASIS SSTC, Abril,
2005.
http://www.oasisopen.org/committees/security/.
[SAMLGloss] J. Hodges et al. Glossary for the OASIS Security Assertion Markup
Language (SAML) V2.0. OASIS SSTC, Marzo 2005.
http://docs.oasis-open.org/security/saml/v2.0/saml-glossary-2.0-os.pdf.
[SAMLMeta] S. Cantor et al. Metadata for the OASIS Security Assertion Markup
Language (SAML) V2.0. OASIS SSTC, Marzo 2005.
http://docs.oasis-open.org/security/saml/v2.0/saml-metadata-2.0-os.pdf.
[SAMLProf] S. Cantor et al. Profiles for the OASIS Security Assertion Markup Language
(SAML) V2.0. OASIS SSTC, Marzo 2005.
http://docs.oasis-open.org/security/saml/v2.0/saml-profiles-2.0-os.pdf.
[WSS] A. Nadalin et al. Web Services Security: SOAP Message Security 1.1 (WS-
Security
2004). OASIS WSS-TC, Febrero 2006.
http://www.oasis-open.org/committees/wss/.
[WSSSAML] R. Monzillo et al. Web Services Security: SAML Token Profile 1.1. OASIS
WSS-TC, Febrero 2006.
http://www.oasis-open.org/committees/wss/.
[XMLEnc] D. Eastlake et al. XML Encryption Syntax and Processing. World Wide Web
Consortium.
http://www.w3.org/TR/2002/REC-xmlenc-core-20021210/.
[XMLSig] D. Eastlake et al. XML-Signature Syntax and Processing. World Wide Web
Consortium.
http://www.w3.org/TR/xmldsig-core/.
[Opensso]
https://opensso.dev.java.net/
http://download.java.net/general/opensso/stable/openssov1-build4/B4-
ReleaseNotes.html [1]
[Liberty]
http://www.projectliberty.org/
[Ros04] Jothy Rosenberg, David L. Remy, Securing Web Services with WS-Security.