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

Post on 03-Jan-2016

94 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

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

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

* Email:unai@plainconcepts.com

Contacto

top related