Professional Documents
Culture Documents
Proyecto de Grado
Edición 2008
Federación de Servicios en
Ambiente Heterogéneo
Historia de revisiones
Contenido
RESUMEN DEL TRABAJO.....................................................................5
PALABRAS CLAVE............................................................................6
1 INTRODUCCIÓN.............................................................................7
2 MECANISMOS DE SEGURIDAD.............................................................8
2.1 Autenticación Web.....................................................................................8
2.1.1 HTTP Basic authentication...............................................................................8
2.1.2 HTTPS Client authentication (Certificados).......................................................9
2.1.3 HTTP FORM-based authentication....................................................................9
2.1.4 Mutual Authentication....................................................................................10
2.1.5 HTTP Digest authentication............................................................................11
2.1.6 Autenticación con SSL....................................................................................12
2.2 Java (J2EE)................................................................................................13
2.2.1 Realms, usuarios, grupos y roles....................................................................13
2.2.2 Autenticación Web.........................................................................................14
2.2.3 Java Authentication and Authorization Service (JAAS)....................................14
2.2.3.1 Autenticación con JAAS ...........................................................................15
2.2.3.2 Autorización con JAAS..............................................................................15
2.2.3.3 Transporte con JSSE.................................................................................16
2.2.3.4 Seguridad en Web Services.....................................................................16
2.3 Microsoft (.NET)........................................................................................17
2.3.1 Active Directory (Sistema Operativo).............................................................17
2.3.1.1 Usuarios...................................................................................................17
2.3.1.2 Security Principals....................................................................................17
2.3.1.3 Grupos.....................................................................................................18
2.3.2 Kerberos........................................................................................................18
2.3.3 Estructura de seguridad .NET.........................................................................19
2.3.4 Autenticación de IIS.......................................................................................19
2.3.4.1 Anónimo...................................................................................................20
2.3.4.2 Basic........................................................................................................20
2.3.4.3 Digest......................................................................................................20
2.3.4.4 Autenticación de Windows.......................................................................21
2.3.4.5 Certificado del cliente .............................................................................21
2.3.5 Autenticación de ASP.NET..............................................................................21
2.3.5.1 Windows (autenticación por defecto).......................................................22
2.3.5.2 Forms.......................................................................................................22
2.3.5.3 Live ID......................................................................................................23
2.3.5.4 Predeterminada.......................................................................................23
2.3.6 Autorización de ASP.NET................................................................................24
2.4 Conclusión................................................................................................26
3 HERRAMIENTAS ACTUALES...............................................................28
3.1 Java..........................................................................................................28
3.1.1 JOSSO.............................................................................................................28
3.1.2 OPENSSO.......................................................................................................30
3.1.3 CAS................................................................................................................30
3.2 Microsoft..................................................................................................32
3.2.1 Active Directory.............................................................................................32
3.2.2 ASP.NET.........................................................................................................32
3.2.3 .NET Framework.............................................................................................33
3.2.4 IIS...................................................................................................................34
4 GLOSARIO...............................................................................36
5 REFERENCIAS............................................................................36
5.1 Herramientas...........................................................................................37
5.2 Imagenes.................................................................................................38
Las plataformas en las cuales se basa este estudio son Microsoft y Java.
Java expone la seguridad en la plataforma J2EE por medio de conceptos
tales como realms, usuario, grupos y roles.
Para las aplicaciones Web se pueden encontrar otros medios de
autenticación a nivel del protocolo HTTP que van desde el HTTP Basic
authentication el cual no ofrece garantías en cuanto a confidencialidad
de los datos ingresados hasta ejemplos tales como HTTP Digest
authentication con su cifrado de datos y el SSL para agregar seguridad
al canal por el cual se enviarán los datos.
Para finalizar, este trabajo cuenta con una breve conclusión acerca de
las ideas que se desprenden del estudio de ambas plataformas.
Palabras clave
Autorización, Autenticación, .NET, JAAS, J2EE, IIS, SSO
1 Introducción
El objetivo principal de este documento es analizar los mecanismos de
autenticación y autorización utilizados por las plataformas Java y .NET
Para ello se analizarán las soluciones existentes y los mecanismos de
seguridad de ambas plataformas.
2 Mecanismos de Seguridad
Hoy en día es importante para las empresas que se cumplan las metas
de la seguridad para el desarrollo y despliegue de código. Para las
plataformas y ambientes en tiempo de ejecución se deben proporcionar
mecanismos para el correcto manejo (autenticación, autorización,
integridad, confidencialidad, etc.) de los datos.
La responsabilidad de estas tareas se propaga a través de múltiples
elementos en una plataforma de n niveles típicos en la arquitectura de
las aplicaciones. En esta sección se tratarán los mecanismos de
seguridad adoptados por Microsoft (.Net) y Java (J2EE) centrándose
principalmente en un ambiente Web.
Los pasos que son dados por el servidor y el cliente son los siguientes:
1. Un cliente solicita el acceso a un recurso protegido.
2. El servidor Web presenta su certificado al cliente.
3. El cliente comprueba el certificado del servidor.
4. Si tiene éxito, el cliente envía su certificado al servidor.
5. El servidor comprueba las credenciales del cliente.
6. Si tiene éxito, el servidor permite el acceso a los recursos
solicitados por el cliente.
• Autenticación
• Confidencialidad
• Integridad
La seguridad puede ser aplicada a los Web Services, tanto en el nivel del
transporte como en el nivel de los mensajes.
2.3.1.1 Usuarios
2.3.1.3 Grupos
Los grupos de Active Directory son objetos que pueden contener
usuarios, contactos, computadoras y otros grupos. En Windows, los
grupos se crean en dominios, utilizando los usuarios y herramientas del
Active Directory. Se pueden crear grupos en el dominio raíz, en
cualquier otro dominio, en cualquier unidad de la organización, o en
cualquier clase de objetos contenedores. Como los usuarios y las
cuentas, los grupos de Windows son los security principals, que son
objetos de directorio para los que se asignan SID's en el momento de su
creación.
2.3.2 Kerberos
Seguridad
Trusted third-party
Figura 5
2.3.4.1 Anónimo
Esta autenticación ofrece a los usuarios el acceso a las áreas públicas de
su sitio Web sin petición de un nombre de usuario o contraseña. Aunque
está dentro de los esquemas de autenticación, no realiza ninguna
autenticación de clientes, ya que el cliente no está obligado a
suministrar ninguna credencial. En lugar de ello, IIS proporciona
credenciales almacenadas en Windows utilizando una cuenta de usuario
especial, IUSR_machinename. Por defecto, IIS controla la contraseña
para esta cuenta. Quiera o no el control de contraseña de IIS afecta a los
permisos de la cuenta de usuario anónimo. Cuando IIS controla la
contraseña, una DLL (iissuba.dll) autentica al usuario mediante un
código de acceso de red. La función de esta DLL es la validación de la
contraseña proporcionada por IIS y para informar a Windows que la
contraseña es válida, con lo que se autentica al cliente. Sin embargo, en
realidad no proporciona una contraseña para Windows. Cuando IIS no
controla la contraseña, IIS llama a la API LogonUser () en Windows y
proporciona el nombre de cuenta, contraseña y nombre de dominio para
iniciar sesión en el usuario utilizando un código de acceso local. Después
de que el código de acceso, IIS guarda en el cache los token de
seguridad y impersonaliza la cuenta. Un código de acceso local hace
posible que el usuario anónimo pueda acceder a los recursos de la red,
mientras que un código de acceso de red no.
2.3.4.2 Basic
Este esquema de autenticación tiene el mismo comportamiento que el
ya descripto en la sección “Autenticación Web”.
2.3.4.3 Digest
Este esquema de autenticación tiene el mismo comportamiento que el
ya descripto en la sección “Autenticación Web”.
Windows
Forms
Live ID (antes Live ID)
Predeterminada
Pros
Autentificadores utilizan cuentas de Windows, de modo que no necesitan
escribir ningún código de autenticación personalizado.
Contras
Puede requerir el uso y manejo de las diferentes cuentas de usuario de
Windows.
2.3.5.2 Forms
Pros
Hace posible que los sistemas de autenticación sean personalizados
utilizando criterios arbitrarios.
Puede ser utilizado para la autenticación o personalización.
No requiere cuentas de Windows que se correspondan con el usuario
a autenticar.
Contras
Está sujeto a ataques de repetición durante toda la vida de la cookie,
a menos que utilicen SSL / TLS.
Es sólo aplicable a los recursos que sean mapeados a
Aspnet_isapi.dll.
2.3.5.3 Live ID
Pros
• Compatible con inicio de sesión único a través de varios
dominios.
• Compatible con todos los navegadores.
Contras
• Se producen dependencias externas para el proceso de
autenticación.
2.3.5.4 Predeterminada
Pros
• Ofrece control total del proceso de autenticación
proporcionando una máxima flexibilidad.
• Proporciona el más alto rendimiento si no se implementa un
método de autenticación.
Contras
• Implementaciones personalizadas de esquemas de
autenticación son raramente tan seguros como los
proporcionados por el sistema operativo.
• Requiere trabajo extra implementar un régimen de
autenticación personalizada.
Autorización de URL
• Objeto WindowsPrincipal
El espacio de nombres del System.Security.Principal proporciona una
clase WindowsPrincipal para representar el contexto de seguridad
bajo el cual el código está en ejecución. Este objeto se crea
automáticamente cuando se utiliza autenticación de Windows en IIS.
Permite comprobar la pertenencia al grupo de Windows de una
cuenta de usuario de Windows y restringir el acceso en consecuencia.
• Objeto GenericPrincipal
Se puede crear un objeto de la clase GenericPrincipal basado en un
rol. Esto debe ser utilizado si se tiene un usuario/rol para la base de
datos. Es posible rellenar el objeto principal en el caso
OnAuthenticate. También se puede tener una tabla personalizada
asignada a las cuentas de Windows en la que se accede a este
evento. Utilizando esa información, se puede crear un objeto principal
personalizado para el usuario autenticado. Para retornar usuarios
autenticados, se puede usar una cookie para recrear el objeto
principal.
2.4 Conclusión
3 Herramientas actuales
Es esta sección describiremos algunas de las herramientas con las que
se cuenta en la actualidad para la implementación de sistemas de
autenticación y autorización de usuarios.
3.1 Java
3.1.1 JOSSO
JOSSO, o Java Open Single Sign-On, es un J2EE open source basado en la
infraestructura SSO (Single Sign On) destinada a proporcionar una
solución para la centralización, plataformas neutrales, autenticación y
autorización del usuario.
3.1.2 OPENSSO
3.1.3 CAS
3.2 Microsoft
• Active directory
• ASP.NET
• .NET Framework
• IIS
3.2.2 ASP.NET
ASP.NET es un modelo de desarrollo Web unificado que incluye los
servicios necesarios para construir aplicaciones empresariales Web con
un mínimo de codificación. ASP.NET es parte de la. NET Framework, y
cuando se codifican aplicaciones en ASP.NET se tiene acceso a clases en
el. NET Framework. Se puede codificar aplicaciones en cualquier
lenguaje compatible con el lenguaje común en tiempo de ejecución
(CLR), incluidos Microsoft Visual Basic, C #, JScript. NET, J # y. Estos
idiomas le permiten desarrollar aplicaciones ASP.NET que se benefician
del CLR , tipo de seguridad, la herencia, etc.
3.2.4 IIS
Este servicio convierte a un ordenador en un servidor de Internet o
Intranet es decir que en las computadoras que tienen este servicio
4 Glosario
Ver Glosario_vX.X.doc
5 Referencias
1. J2EE and .NET security
www.cgisecurity.com/lib/J2EEandDotNetsecurityByGerMulcahy.pdf
4. Understanding SSL
http://www.tech-faq.com/lang/es/understanding-ssl.shtml
6. Introducción a JAAS
http://www.jaasbook.com/ (01 - Introducing JAAS)
http://java.sun.com/products/jndi/tutorial/ldap/security/digest.html
13. Compare and Contrast the authentication types (BASIC, DIGEST, FORM, and
CLIENT-CERT): describe
http://java.boot.by/wcd-guide/ch05s03.html
19. Kerberos
• Libro: Kerberos: The Definitive Guide
Año publicación: 2003
ISBN:0596004036
• http://www.kerberos.org/
5.1 Herramientas
21. JOSSO
http://www.josso.org
22. OPENSSO
https://opensso.dev.java.net/
23. CAS
http://www.ja-sig.org/products/cas/
24. ASP.NET
http://www.asp.net/
26. IIS
http://www.iis.net/default.aspx?tabid=1
5.2 Imagenes
27. Figuras 1 a 4
http://java.sun.com/j2ee/1.4/docs/tutorial/doc/Security5.html
28. Figura 6
http://www.josso.org
29. Figura 7
http://www.ja-sig.org/products/cas/
30. Figura 8
http://msdn2.microsoft.com/en-us/library/zw4w595w.aspx