09 seguridad basada en claims y wif (windows identity foundation)
Post on 03-Jan-2016
94 Views
Preview:
TRANSCRIPT
| Architecture
Unai Zorrilla Castro
Plain Concepts
Blog: http://geeks.ms/blogs/unai
Mail: unai@plainconcepts.com
Claims Based Identity
• Introducción a ‘Claim-Based Identity’
– Motivaciones
– Conceptos fundamentales • Claim
• Security Tokens
• Identity Metasystem
• Security Token Service
• El papel de ‘Geneva’ – Geneva Framework
– Geneva Server
– Geneva CardSpace
• Geneva Framework en la práctica
Presentación
Componentes
Servidor de
Aplicación
Capa de Infraestructura de Persistencia de Datos
Repositorios (Implementación)
Servicios del Dominio
Capa de Dominio
Capa Servicios Distribuidos (Servicios-Web)
‘Cliente Rico’ / RIA Cliente Web ‘ASP.NET’
Vistas IU
Controladores Agentes
Servicio
Vistas IU
Controladores
Segurid
ad
Opera
cio
nes (L
oggin
g, M
onito
rizació
n, e
tc.)
Gestió
n d
e E
xcepcio
nes
Fuentes
Datos
PC
Cliente Servidor Web
Servicios
Externos
Agentes Servicio
Bases (SuperTypes)
Modelo de Datos Persistencia
(ORMs: EF, NHibernate)
Entidades
del
Dominio
Capa de Aplicación
Contratos de Repositorios
Tareas Servicios de App. Drivers Casos Uso
Capas Infraestructura
Transversal
Bases (SuperTypes)
Workflows
Especificaciones de Consultas
Introducción a ‘Claim-Based
Identity’ • Motivaciones
– Para los desarrolladores el manejo de la identidad es ‘hoy un problema real’.
– Necesitamos un sistema interoperable capaz de dar respuesta a muchos escenarios reales hoy mismo.
– Claim-Based Identity es una respuesta a nuestras necesidades.
Introducción a ‘Claim-Based
Identity’ • La identidad en aplicaciones
– En algunos escenarios trabajar con la identidad es simple.
– AD
– Membership
– Estos escenarios pueden rápidamente fallar apenas introduciendo unos pequeños condicionamientos. • Más información acerca de las identidades
• Internet - Intranet - Federación
Introducción a ‘Claim-Based
Identity’ • La identidad en aplicaciones
– Claim-Based Identity es una nueva idea fundamentada en un pequeño número de conceptos.
– Claim
– Security Tokens
– Identity Metasystem
– Security Token Service
Introducción a ‘Claim-Based
Identity’
• La identidad en aplicaciones – Claim:
• Una afirmación que representa una porción de información acerca del usuario/sistema al que identifica.
• Por regla general expresados mediante SAML ( Security Assertion MarkUp Language )
Claim Nombre
TYPE:xx VALUE:xx
Claim Edad
TYPE:xx VALUE:xx
Claim Role
TYPE: xx VALUE:xx
Introducción a ‘Claim-Based
Identity’
• La identidad en aplicaciones – Security Token:
• Un documento firmado que contiene una colección de Claim y que se transmite por la red.
• Estos tokens de seguridad son emitidos por una pieza conocida como Security Token Service ( STS )
Claim Nombre
Claim Edad
Claim Role
FIRMA –X509
Introducción a ‘Claim-Based
Identity’ • La identidad en aplicaciones
– Identity Metasystem: • El conjunto de protocolos y arquitecturas para
definir el intercambio de credenciales. – WS-TRUST
» WSTRUST 1.1
» WSTRUST 1.3
– WS-FEDERATION
– WS-SECURITY POLICY
Introducción a ‘Claim-Based
Identity’
• La identidad en aplicaciones – Security Token Service:
• Utilizando un protocol Standard ( WSTRUST) – Issue
– Renew
– Validate – Cancel
• OASIS Standard ( Microsoft-IBM-Otros)
Security Token Service
Introducción a ‘Claim-Based
Identity’
Security Token Service
End User
Obtener Security Token
Claims Framework
Aplicación
Enviar Token
TRUST
El papel de Windows Identity
Foundation • WIF
– WIF Framework • Modelo de programación con Claims.
• Framework para STS propios.
• Claims-To-NT Token Service.
– ADFS( ** En este Workshop ** ) • Protocol SAML 2.0
• WS-Trust y WS-Federation
– Card Space • Selector de identidad
Introducción a ‘Claim-Based
Identity’
ADFS
End User
Obtener Security Token
WIF Framework
Aplicación
Enviar Token
TRUST
Card Space
Geneva Framework
• WIF Framework – Creación de STS
• Activos
• Pasisvos
– Servicios Claim-Aware • Trabajo con Claims
• Transformación de Claims
• Requerimientos de Claims
– Windows Token Access Service
Geneva Framework
• Creación de un Security Token Service – Un STS es una implementación de WS-Trust
– Peticiones con RST • AppliesTo
• Requerimientos
• Certificado del RP
– Respuestas con RSTR • SAML Token
– Claims
• Lifetime
• Proof key
• Tokens emitidos en SAML 1.1 o 2.0
WIF Framework
WIFFramework
• Creación de un Security Token Service Activo
class CustomClaimsAuthorizationManager : ClaimsAuthorizationManager { public CustomClaimsAuthorizationManager()
{ } public override bool CheckAccess(AuthorizationContext context) { if (context.Resource
.Where(x => x.ClaimType == System.IdentityModel.Claims.ClaimTypes.Name && x.Value == "http://localhost:8000/TodoListService") .Count() > 0)
{ if (context.Action.Where(x => x.ClaimType ==
System.IdentityModel.Claims.ClaimTypes.Name && x.Value == Constants.Actions.GetItems).Count() > 0)
{
return context.Principal.IsInRole(Constants.Permissions.Read); } } } }
<< DEMO: Un STS Activo
Geneva Framework • IClaimsPrincipal
– Nuevo elemento dentro de la jerarquía de IPrincipal. • Permite la comprobación IsInRole tal cual
conocemos • Implementado por:
– ClaimsPrincipal – WindowsClaimsPrincipal
• IClaimsIdentity – Nuevo elemento dentro de la jerarquía de
IIdentity • Expone la colección de CLAIMS • Implementado por:
– ClaimsIdentity – WindowsClaimsIdentity
<< DEMO:IsInRole
Geneva Framework • Claims Transformation
– Agrega la capacidad de transformar el conjunto de Claims disponibles.
– Ideal para RP que desean utilizar un mecanismo de autorización en negocio ‘independientemente’ del conjunto de Claims otorgadas en el Security Token.
– En Federación para transformación de claims en un RP (STS )
<< DEMO:Claims Transformation
Geneva Framework • Claims Requirements
– Especificación de requerimientos de Claims a utilizar dentro de nuestras RP
– El Security Token Service puede verificar los requerimientos de Claims para emitirlos dentro del Token de seguridad.
– El Cliente y RP especifican los requirimientos de Claims en configuración
– El STS tiene acceso a los requerimientos en request.Claims
<< DEMO:Claims Requirements
Geneva Framework • Windows Access Token Service ( GTS )
– Servicio incluído en Geneva Framework • Microsoft ‘Geneva’ Claims To NT Token Service
– Impersonalización de usuarios por medio de un Claim • UpnClaim ( User Principal Name Claim )
• Solamente si el servicio corre como LocalSystem
– Utiliza un servicio de Kerberos Service 4 User • Solamente a partir de W2003
• S4UClient UpnLogon para ‘logear’ un usuario sin necesidad de contraseña – S4UClient.UpnLogon(unai@dominio)
Geneva Framework • STS Pasivos
– Emisión de Tokens basándose en WS-Federation Passive Protocol
– Por regla general ASP.NET dentro de IIS – Muchos elementos comunes con respecto a un STS
Activo – Nuevos controles ASP.NET
• FederatedPassiveTokenService • FederatedPassiveSignIn • SignInStatus • InformationCard
– Modulos HTTP para facilitarnos el trabajo • WSFederationAuthenticationModule • WSSessionAuthenticationModule
Geneva Framework • STS Pasivos
– Integración con los objetos principal al igual que con los STS Activos • HttpContext.Current.User • Thread.CurrentPrincipal
<microsoft.identityModel> <issuerNameRegistry type="TrustIssuerNameRegistry" /> <federatedAuthentication enabled="true"> <wsFederation issuer="https://localhost/PassiveSTS/Default.aspx" realm="https://localhost/PassiveRP" passiveRedirectEnabled="true"/> </federatedAuthentication> <audienceUris> <add value="https://localhost/PassiveRP" /> </audienceUris> <serviceCertificate> *** </microsoft.identityModel>
Geneva Framework
<< DEMO:Creando un STS Pasivo Controles ASP.NET
<< DEMO:Creando un STS Pasivo Sin Controles ASP.NET
Geneva Framework • ‘Geneva’ CardSpace
– La segunda versión de Microsoft CardSpace – CardSpace representa cada una de las identidades
disponibles como una tarjeta. – Cuando un usuario selecciona una tarjeta pide al
STS asociado a la tarjeta su token correspondiente.
– La tarjeta no mantiene claims, solamente información del STS y del proveedor de identidad a utilizar.
– Posibilidad de exportar las tarjetas ( previamente encriptadas) y almacenarlas en otros sistemas, ‘USB’
<< DEMO:Geneva Card Space
Recursos
• Identity Management – http://msdn.microsoft.com/en-
us/security/aa570351.aspx
• ‘Geneva’ Team Blog – http://blogs.msdn.com/card/archive/2008/
11/04/microsoft-geneva-framework.aspx
• Connect Microsoft – https://connect.microsoft.com/site/siteho
me.aspx?SiteID=642
Unai Zorrilla Castro Microsoft MVP Developer Team Leader " Blog: http://geeks.ms/blogs/unai
* Email:unai@plainconcepts.com
Contacto
top related