09 seguridad basada en claims y wif (windows identity foundation)

35
| Architecture Unai Zorrilla Castro Plain Concepts Blog: http://geeks.ms/blogs/unai Mail: [email protected] Claims Based Identity

Upload: oscar-matias-villafane

Post on 03-Jan-2016

94 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: 09 Seguridad Basada en Claims y WIF (Windows Identity Foundation)

| Architecture

Unai Zorrilla Castro

Plain Concepts

Blog: http://geeks.ms/blogs/unai

Mail: [email protected]

Claims Based Identity

Page 2: 09 Seguridad Basada en Claims y WIF (Windows Identity Foundation)

• 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

Page 3: 09 Seguridad Basada en Claims y WIF (Windows Identity Foundation)

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

Page 4: 09 Seguridad Basada en Claims y WIF (Windows Identity Foundation)

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.

Page 5: 09 Seguridad Basada en Claims y WIF (Windows Identity Foundation)

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

Page 6: 09 Seguridad Basada en Claims y WIF (Windows Identity Foundation)

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

Page 7: 09 Seguridad Basada en Claims y WIF (Windows Identity Foundation)

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

Page 8: 09 Seguridad Basada en Claims y WIF (Windows Identity Foundation)

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

Page 9: 09 Seguridad Basada en Claims y WIF (Windows Identity Foundation)

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

Page 10: 09 Seguridad Basada en Claims y WIF (Windows Identity Foundation)

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

Page 11: 09 Seguridad Basada en Claims y WIF (Windows Identity Foundation)

Introducción a ‘Claim-Based

Identity’

Security Token Service

End User

Obtener Security Token

Claims Framework

Aplicación

Enviar Token

TRUST

Page 12: 09 Seguridad Basada en Claims y WIF (Windows Identity Foundation)

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

Page 13: 09 Seguridad Basada en Claims y WIF (Windows Identity Foundation)

Introducción a ‘Claim-Based

Identity’

ADFS

End User

Obtener Security Token

WIF Framework

Aplicación

Enviar Token

TRUST

Card Space

Page 14: 09 Seguridad Basada en Claims y WIF (Windows Identity Foundation)

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

Page 15: 09 Seguridad Basada en Claims y WIF (Windows Identity Foundation)

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

Page 16: 09 Seguridad Basada en Claims y WIF (Windows Identity Foundation)

WIF Framework

Page 17: 09 Seguridad Basada en Claims y WIF (Windows Identity Foundation)

WIFFramework

• Creación de un Security Token Service Activo

Page 18: 09 Seguridad Basada en Claims y WIF (Windows Identity Foundation)

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); } } } }

Page 19: 09 Seguridad Basada en Claims y WIF (Windows Identity Foundation)

<< DEMO: Un STS Activo

Page 20: 09 Seguridad Basada en Claims y WIF (Windows Identity Foundation)

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

Page 21: 09 Seguridad Basada en Claims y WIF (Windows Identity Foundation)

<< DEMO:IsInRole

Page 22: 09 Seguridad Basada en Claims y WIF (Windows Identity Foundation)

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 )

Page 23: 09 Seguridad Basada en Claims y WIF (Windows Identity Foundation)

<< DEMO:Claims Transformation

Page 24: 09 Seguridad Basada en Claims y WIF (Windows Identity Foundation)

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

Page 25: 09 Seguridad Basada en Claims y WIF (Windows Identity Foundation)

<< DEMO:Claims Requirements

Page 26: 09 Seguridad Basada en Claims y WIF (Windows Identity Foundation)

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)

Page 27: 09 Seguridad Basada en Claims y WIF (Windows Identity Foundation)

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

Page 28: 09 Seguridad Basada en Claims y WIF (Windows Identity Foundation)

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>

Page 29: 09 Seguridad Basada en Claims y WIF (Windows Identity Foundation)

Geneva Framework

Page 30: 09 Seguridad Basada en Claims y WIF (Windows Identity Foundation)

<< DEMO:Creando un STS Pasivo Controles ASP.NET

Page 31: 09 Seguridad Basada en Claims y WIF (Windows Identity Foundation)

<< DEMO:Creando un STS Pasivo Sin Controles ASP.NET

Page 32: 09 Seguridad Basada en Claims y WIF (Windows Identity Foundation)

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’

Page 33: 09 Seguridad Basada en Claims y WIF (Windows Identity Foundation)

<< DEMO:Geneva Card Space

Page 35: 09 Seguridad Basada en Claims y WIF (Windows Identity Foundation)

Unai Zorrilla Castro Microsoft MVP Developer Team Leader " Blog: http://geeks.ms/blogs/unai

* Email:[email protected]

Contacto