11 pour les développeurs Code Session : SEC317 Philippe BERAUD Consultant Architecte Direction...

54
1 pour les développeurs Code Session : SEC317 Philippe BERAUD Consultant Architecte Direction Technique Microsoft France philippe.beraud@microsof t.com Pierre COUZY Architecte en système d'informations Division Plateforme et Ecosystème Microsoft France [email protected]

Transcript of 11 pour les développeurs Code Session : SEC317 Philippe BERAUD Consultant Architecte Direction...

Page 1: 11 pour les développeurs Code Session : SEC317 Philippe BERAUD Consultant Architecte Direction Technique Microsoft France philippe.beraud@microsoft.com.

11

pour les développeurs

Code Session : SEC317

Philippe BERAUDConsultant ArchitecteDirection TechniqueMicrosoft [email protected]

Pierre COUZYArchitecte en système d'informationsDivision Plateforme et EcosystèmeMicrosoft [email protected]

Page 2: 11 pour les développeurs Code Session : SEC317 Philippe BERAUD Consultant Architecte Direction Technique Microsoft France philippe.beraud@microsoft.com.

33

“Stop hard-coding security into applications and stop creating operating system (OS)-level accounts on servers. Consume these as services external to the application.”

Neil MacDonald 13 April 2006Gartner Group: Achieving agility: building blocks for a policy-driven, agile security services infrastructure

Page 3: 11 pour les développeurs Code Session : SEC317 Philippe BERAUD Consultant Architecte Direction Technique Microsoft France philippe.beraud@microsoft.com.

44

Le parcours virtuel Logiciels + Services Identité dans le cadre des Microsoft TechDays 2010

4 sessions pour faire un point ensembleSession SEC317 "Windows Identity Foundation pour les développeurs"

Cette session !!Session SEC207 "Les nouveautés d'AD FS 2.0"

Aujourd'hui de 14h30 à 15h30, à revivre prochainement en Session Web

Session SEC315 "The 'M'-Based System.Identity Model for Accessing Directory Services"

Lundi 8 février, de 11h00 à 12h00, à revivre prochainement en Session Web

Session ARC307 "Software + Services Identity Roadmap"Lundi 8 février, de 14h30 à 15h30, à revivre prochainement en

Session Web

Page 4: 11 pour les développeurs Code Session : SEC317 Philippe BERAUD Consultant Architecte Direction Technique Microsoft France philippe.beraud@microsoft.com.

55

Objectifs de la session

Compléter la session IND213 "La gestion d'identité dans l'entreprise étendue (b2b/b2c) : Geneva" animée lors des TechDays 2009

http://www.microsoft.com/france/vision/mstechdays09/Webcast.aspx?EID=388ec88d-4ce4-4c57-a055-481a25f6d6e5

Faire le point sur la version finale de Windows Identity Foundation (WIF, nom de code Zermatt Framework puis Geneva Framework)Illustrer quelques capacités clés de WIF

Page 5: 11 pour les développeurs Code Session : SEC317 Philippe BERAUD Consultant Architecte Direction Technique Microsoft France philippe.beraud@microsoft.com.

66

Sommaire

Vers un nouveau modèleUne rapide introduction de Windows Identity Foundation (WIF)Une illustration des capacités de WIF

Page 6: 11 pour les développeurs Code Session : SEC317 Philippe BERAUD Consultant Architecte Direction Technique Microsoft France philippe.beraud@microsoft.com.

77

Les deux premières lignes de toute application connectée

1. Qui êtes-vous ?

2. Qu’êtes-vous autorisés à faire ?

Page 7: 11 pour les développeurs Code Session : SEC317 Philippe BERAUD Consultant Architecte Direction Technique Microsoft France philippe.beraud@microsoft.com.

88

Qu’est-ce qu’une identité ?

Une identité est un ensemble d’informations à propos d’une entité, telle qu’un utilisateur

La plupart des applications travaillent avec des identitésLes informations d’identité influencent des aspects importants du comportement d’une application tels que

Déterminer ce qu’un utilisateur est autorisé à faireContrôler la façon dont l’application interagit avec l’utilisateur

Page 8: 11 pour les développeurs Code Session : SEC317 Philippe BERAUD Consultant Architecte Direction Technique Microsoft France philippe.beraud@microsoft.com.

99

Le problème…Travailler avec les identités est devenu trop difficile

La notion d'identité (numérique) est essentielle, mais pas simple ;-)Les applications doivent utiliser différentes technologies

d’identité dans différentes situationsKerberos au sein d’un domaine Active DirectoryUtilisateur/Mot de passe, certificat ou OTP sur l’InternetWS-Federation et SAML entre les organisationsEtc.

Il est difficile de concevoir quelque chose qui puisse fonctionner dans tous les contextes demandés par vos clients

Vous n’en avez jamais fini…Arbre de décision complexe, technologie vers scénario

Une solution tactique aujourd’hui peut bloquer une interopérabilité future

Page 9: 11 pour les développeurs Code Session : SEC317 Philippe BERAUD Consultant Architecte Direction Technique Microsoft France philippe.beraud@microsoft.com.

1010

Vers un nouveau modèleExternalisation de l’authentification

L’incorporation de code de gestion d'identité dans le code de base applicatif est une mauvaise idée

En termes de compétences, besoin généralement de conseils ; peu d'entre nous sont des experts de l'identitéEn termes de maintenance, les applications développées ont un couplage fort avec une technologie XEn termes de robustesse/flexibilité/interopérabilité

De nombreuses technologies d'identitéMots de passe, Kerberos, X.509, SAML, LDAP, etc.

Aucune technologie ne s’applique à l’ensemble des scénariiIntranet versus InternetCollaborateurs, partenaires, clientsApplications Web, Smart Client, Services Web (avancés)

Les détails techniques de l'authentification doivent être abstraits de la perspective du développeur d'applications

Page 10: 11 pour les développeurs Code Session : SEC317 Philippe BERAUD Consultant Architecte Direction Technique Microsoft France philippe.beraud@microsoft.com.

1111

Vers un autre modèle…

Au travers de l'externalisation de l’authentification, pourquoi ne pas enfin définir une approche qui puisse être utilisée dans tous ces cas ?

La notion d’identité fondée sur des revendications permet d’atteindre un tel objectifCela peut rendre la vie des développeurs d’applications et des RSSI considérablement plus simple

Page 11: 11 pour les développeurs Code Session : SEC317 Philippe BERAUD Consultant Architecte Direction Technique Microsoft France philippe.beraud@microsoft.com.

1212

Vers un nouveau modèleQu’allons-nous appeler une identité ?

L’identité est un ensemble de revendications (claims) faites par un fournisseur d’identité (l’état, la banque, l’entreprise) qui caractérise une personne ou une "chose" (entité numérique) dans le monde numérique

Peut être un identificateur, une caractéristique ou autre choseMè[email protected], Age > 21, Employeur =

Microsoft, Rôle=Architecte, etc.

Ces revendications sont physiquement transportées dans des documents (des jetons de sécurité)Ces jetons sont délivrés par des services de distribution de jetons

(STS, ou Security Token Service)Les jetons sont utilisés par des applications, sites Web ou services

Web, qui font confiance au STS (on les appelle des Relying Parties)

Page 12: 11 pour les développeurs Code Session : SEC317 Philippe BERAUD Consultant Architecte Direction Technique Microsoft France philippe.beraud@microsoft.com.

1313

Vers un nouveau modèleExternalisation de l’authentification et revendications

confiance

Fournisseur d’identité

Consommateur d’identité

Utilisateur

Service de jetons de sécurité

Librairie d'identité

Application

5. Recherche des revendications, transformation

pour l'application

Client de fédération

(optionnel) 6. Envoi des revendications

1. Lecture de la politique

2. Le

cture

de la p

olitique

4. Obt

ention des

reve

ndications

3. Auth

entifica

tion

Établissement d’une relation

Page 13: 11 pour les développeurs Code Session : SEC317 Philippe BERAUD Consultant Architecte Direction Technique Microsoft France philippe.beraud@microsoft.com.

1414

Vers un nouveau modèleExternalisation de l’authentification et revendications

Établissement d’une relation fondée sur les métadonnées de

fédération

confiance

Fournisseur d’identité

Consommateur d’identité

Utilisateur

Windows Identity

Foundation

Application

AD FS 2.0

WindowsCardSpace

2.0

Magasin d'attributs

SQL

Active Directory

6. Envoi des revendications

1. Lecture de la politique

2. Le

cture

de la p

olitique

4. Obt

ention des

reve

ndications

3. Auth

entifica

tion

Page 14: 11 pour les développeurs Code Session : SEC317 Philippe BERAUD Consultant Architecte Direction Technique Microsoft France philippe.beraud@microsoft.com.

1515

Vers un nouveau modèleIntroduction de la plateforme “Geneva”

Objectif : découpler du code applicatif l'authentification utilisateur et la recherche des revendicationsComposants

Active Directory Federation Services (AD FS) 2.0 (ou un autre STS)Authentifie l’utilisateurS’appuie sur les sources/référentiels faisant autorité pour les

valeurs des revendications utilisateurÉmet les valeurs, formats et types spécifiques de revendications

requises par l’application ou le serviceWindows Identity Foundation (WIF)

Valide le jeton de sécurité émis par le STSExtrait les revendications et les met à disposition de l’application ou

du service

http://www.microsoft.com/geneva

Page 15: 11 pour les développeurs Code Session : SEC317 Philippe BERAUD Consultant Architecte Direction Technique Microsoft France philippe.beraud@microsoft.com.

1616

DémoL'identité fondée sur les revendications : c'est FACILE !

Page 16: 11 pour les développeurs Code Session : SEC317 Philippe BERAUD Consultant Architecte Direction Technique Microsoft France philippe.beraud@microsoft.com.

1717

Sommaire

Vers un nouveau modèleUne rapide introduction de Windows Identity Foundation (WIF)Une illustration des capacités de WIF

Page 17: 11 pour les développeurs Code Session : SEC317 Philippe BERAUD Consultant Architecte Direction Technique Microsoft France philippe.beraud@microsoft.com.

1818

Windows Identity Foundation (WIF) 1.0

Framework pour .NET 3.5 au même titre que WCF, WF, et WPFUn modèle de développement pour les revendications

Modèle objet des revendications intégré avec les APIs Identité .NETModèle de programmation unifié et cohérent pour ASP.NET et WCFModèle piloté par configuration

Framework pour le développement de services de jetons de sécurité (STS) personnalisés avec un minimum d'effortsOutils pour la configuration automatique des applications et

services pilotée par les métadonnéesFondés sur les standards OASIS WS-Federation et WS-Trust

Et bien plus encore…

Page 18: 11 pour les développeurs Code Session : SEC317 Philippe BERAUD Consultant Architecte Direction Technique Microsoft France philippe.beraud@microsoft.com.

1919

Windows Identity Foundation (WIF) 1.0Composantes du Framework

Modèle objet unifié (ASP.NET vs. WCF) pour les revendicationsUtilitaire FedUtilEnsemble de modules HTTP .NET pour le traitement des jetons

de sécurité, la gestion des sessions, etc.Service c2WTS (Claims to Windows Token Service)Contrôles ASP.NETAPIs pour l'émission de jetons et de cartes d'informationSupport de la plateforme Windows AzureIntégration à Visual Studio

Page 19: 11 pour les développeurs Code Session : SEC317 Philippe BERAUD Consultant Architecte Direction Technique Microsoft France philippe.beraud@microsoft.com.

2020

Windows Identity Foundation (WIF) 1.0Intégration Visual Studio

Outils pour établir et maintenir des relations de confianceModèles Visual Studio pour le développement de sites et de

services Web fondés sur les revendicationsContrôles ASP.NET prêts à l'emploi

Page 20: 11 pour les développeurs Code Session : SEC317 Philippe BERAUD Consultant Architecte Direction Technique Microsoft France philippe.beraud@microsoft.com.

2121

Windows Identity Foundation (WIF) 1.0Modèles Visual Studio

Disponibles en C#File New Web Site…

ASP.NET Security Token Service Web SiteClaims-aware ASP.NET Web SiteClaims-aware WCF ServicesWCF Service Token Service

Projets thinktecture STS Starter Kit 1.0 Beta 1 et RP Starter Kit 0.92

http://startersts.codeplex.com/Construits sur WIF 1.0Support des fournisseurs ASP.NET , des clients Silverlight, pont avec OpenID, etc.

Page 21: 11 pour les développeurs Code Session : SEC317 Philippe BERAUD Consultant Architecte Direction Technique Microsoft France philippe.beraud@microsoft.com.

2222

Windows Identity Foundation (WIF) 1.0Contrôles ASP.NET

2 contrôles standards complètement intégrés avec le pipeline WIF et FedUtil

FederatedPassiveSignInSignInStatus

2 contrôles DPE additionnelsSecurityTokenVisualizerControl (STVC)

http://code.msdn.microsoft.com/TokenVisualizerCtrl ClaimsDrivenModifierControl (CDMC)

http://code.msdn.microsoft.com/ClaimsDrivenControl

Page 22: 11 pour les développeurs Code Session : SEC317 Philippe BERAUD Consultant Architecte Direction Technique Microsoft France philippe.beraud@microsoft.com.

2323

Sommaire

Vers un nouveau modèleUne rapide introduction de Windows Identity

Foundation (WIF)Une illustration des capacités de WIF

Page 23: 11 pour les développeurs Code Session : SEC317 Philippe BERAUD Consultant Architecte Direction Technique Microsoft France philippe.beraud@microsoft.com.

2424

Comment découvrir WIF 1.0 ?

Microsoft propose une application d’exemple couvrant notamment les thématiques suivantes

Externalisation de l'authentification et obtention des revendications Consommation des revendicationsAutorisationsInvocation de services WCFMise en œuvre d'une STS PersonnaliséDélégation d’identité

http://code.msdn.microsoft.com/FabrikamShippingNous allons parcourir ensemble une partie de cette application

Page 24: 11 pour les développeurs Code Session : SEC317 Philippe BERAUD Consultant Architecte Direction Technique Microsoft France philippe.beraud@microsoft.com.

2525

Obtention des revendicationsChallenge

L'authentification fournit un identifiant, peut-être des groupes… les applications nécessitent plus d’informations sur l’utilisateur Aujourd'hui, les applications doivent faire des requêtes DS ou

DB pour obtenir les revendications utilisateur additionnellesLes applications doivent disposer de code vis-à-vis des différentes interfaces DS et DB, reflet de l’hétérogénéité des référentielsLes applications ne sont généralement pas autorisées pour requêter dans une autre organisation ! ;-)Les applications hébergées (c.à.d. " dans le nuage") ne sont pas forcément connectées au(x) référentiel(s) d'entreprise "sur site"

Page 25: 11 pour les développeurs Code Session : SEC317 Philippe BERAUD Consultant Architecte Direction Technique Microsoft France philippe.beraud@microsoft.com.

2626

Obtention des revendications Mise en œuvre

EtapesUtiliser FedUtil pour se fédérer avec le STS Adatum Corporation

BénéficesAucune requête DS ou DB n’est nécessaire dans l'application Fabrikam ShippingAuthentification unique entre les applications, et à travers les pare-feuMise en oeuvre facilitée d'une fédération entre Adatum Corporation et Fabrikam pour l'accès au service Fabrikam Shipping

Page 26: 11 pour les développeurs Code Session : SEC317 Philippe BERAUD Consultant Architecte Direction Technique Microsoft France philippe.beraud@microsoft.com.

2727

Obtention des revendicationsModules HTTP de WIF

HTTP Module(s) dans le pipeline ASP.NET de l'applicationIls prennent le soin d'exposer la politique, de gérer les

redirections de protocole, d'établir des sessions, etc.WSFederationAuthenticationModule (FAM)

Implémente le protocole WS-Federation et ses redirections

SessionAuthenticationModulePrend en charge la gestion des sessions indépendamment du protocole de "sign-in"

ClaimsPrincipalHttpModuleFournit un "hook" pour injecter des revendications dans le principal courant

Page 27: 11 pour les développeurs Code Session : SEC317 Philippe BERAUD Consultant Architecte Direction Technique Microsoft France philippe.beraud@microsoft.com.

2828

Obtention des revendications Fedutil

Mise à jour du fichier web.configDéclaration du module WSFederationAuthenticationModule (FAM)

Prise en charge de WS-Fed Passive et constitution d'un ClaimsPrincipal

Déclaration du module SessionAuthenticationModuleGestion (agnostique vis-à-vis des protocoles) des sessions

Consommation des métadonnées du STS pour les revendicationsDéfinition des informations de nom et de rôle pour les interfaces bien

connues IPrincipal et IIdentity

Création des métadonnées de fédération pour l'applicationMise à disposition sous FederationMetadata\2007-06 pour consommation par le STS…

https://<host>/FederationMetadata/2007-06/FederationMetadata.xml

Page 28: 11 pour les développeurs Code Session : SEC317 Philippe BERAUD Consultant Architecte Direction Technique Microsoft France philippe.beraud@microsoft.com.

2929

Obtention des revendications Architecture de WIF

Pipeline de traitement ASP.NET en première approche

ASP.NETHosting

Layer

ASP.NET Application Code

ClaimsPrincipal

Claims Authentication Manager

Session Authentication Module

Claims Authorization Manager

Security Token Handler

WS-Federation Authentication Module

Request

Page 29: 11 pour les développeurs Code Session : SEC317 Philippe BERAUD Consultant Architecte Direction Technique Microsoft France philippe.beraud@microsoft.com.

3333

Obtention des revendications Modèle de revendications dans WIF

Et mes (Generic/Windows)Principal/((Generic/Windows)Identity dans tous cela ?

IClaimsIdentity étend IIdentity, en y ajoutant le support des revendicationsCollection de revendicationsRevendications Name et Role pour la compatibilité arrièrePeut inclure la chaîne de délégué (Actor) pour les scénarios de ActAs

IClaimPrincipal étend IPrincipal, en y ajoutant une collection de ClaimsIdentity

public interface IClaimsIdentity : IIdentity { ClaimCollection Claims { get; } string NameClaimType { get; set; } ICollection<string> RoleClaimTypes { get; } string Label { get; set; } IClaimsIdentity Actor { get; set; } SecurityToken BootstrapToken { get; set; }}

public interface IClaimsPrincipal : IPrincipal { ClaimsIdentityCollection Identities { get; }}

Page 30: 11 pour les développeurs Code Session : SEC317 Philippe BERAUD Consultant Architecte Direction Technique Microsoft France philippe.beraud@microsoft.com.

3434

Obtention des revendications Modèle de revendications dans WIF

Propriétés clé de la classe ClaimClaimType, Value, ValueType, IssuerLes chaînes permettent d'éviter les complexités de la désérialisation

public class Claim { // some members omitted for brevity public virtual string ClaimType { get; } public virtual string Value { get; } public virtual string ValueType { get; } public virtual IDictionnary<string, string> Properties; public virtual string Issuer { get; } public virtual string OriginalIssuer { get; } public virtual string IClaimIdentity Subject { get; }}

IClaimsPrincipal

IClaimsIdentityIClaimsIdentity

ClaimClaimType = “Name”

Value = “Bob”Issuer = “WLID”

Subject

ClaimClaimType = “Name”

Value = “Bob”Issuer = “WLID”

Subject

ClaimClaimType = “Name”

Value = “Bob”Issuer = “WLID”

Subject

Page 31: 11 pour les développeurs Code Session : SEC317 Philippe BERAUD Consultant Architecte Direction Technique Microsoft France philippe.beraud@microsoft.com.

3535

Obtention des revendications Consommation des revendications dans le code

IClaimsIdentity id =((IClaimsPrincipal)Thread.CurrentPrincipal).Identities[0];

// you can use a simple foreach loop to find a claim...string usersEmail = null;foreach (Claim c in id.Claims) { if (c.ClaimType == System.IdentityModel.Claims.ClaimTypes.Email) { UsersEmail = c.Value; break; }}

// you can also use LINQ to find a claimstring usersFirstName = (from c in id.Claims where c.ClaimType == System.IdentityModel.Claims.ClaimTypes.GivenName select c).First().Value;

Page 32: 11 pour les développeurs Code Session : SEC317 Philippe BERAUD Consultant Architecte Direction Technique Microsoft France philippe.beraud@microsoft.com.

3636

DémoExternalisation de l'authentification, obtention et consommation des revendications

Fabrikam Shipping

Page 33: 11 pour les développeurs Code Session : SEC317 Philippe BERAUD Consultant Architecte Direction Technique Microsoft France philippe.beraud@microsoft.com.

3737

Personnalisation à l'aide de revendicationsMise en œuvre

EtapesUtiliser FedUtil pour créer un STS local FabrikamEnvoyer des revendications pour la personnalisationModifier l'application pour utiliser les revendicationsSe re-fédérer avec le STS Adatum Corporation

BénéficesAucun code applicatif nécessaire pour requêter des informations sur l'utilisateur d'un annuaire ou d'une base de donnéesLa transformation de revendications au niveau des STS fournit une capacité d’adaptation d’impédance pour les valeur/type de revendications

Page 34: 11 pour les développeurs Code Session : SEC317 Philippe BERAUD Consultant Architecte Direction Technique Microsoft France philippe.beraud@microsoft.com.

3838

Et les autorisations dans tout cela ?

Les rôles ASP.NET fonctionnent “en tant que tels”IsInRole, élément <authorization>N'importe quel type de revendication en entrée peut être utilisé comme rôle !

Pour autant, un contrôle d'accès fondé sur les revendications peut être beaucoup plus sophistiqués que RBAC avec des règles métier conditionnées par différentes notions

Plages horaires, montants de délégation, etc.

Page 35: 11 pour les développeurs Code Session : SEC317 Philippe BERAUD Consultant Architecte Direction Technique Microsoft France philippe.beraud@microsoft.com.

3939

Et les autorisations dans tout cela ?

WIF permet de modéliser l'information d'autorisation commeUne ressource que le sujet souhaite accéder Les actions que le sujet souhaite réaliser sur la ressourceCeci correspond à un AuthorizationContext

Cette information ou politique peut être stockée dans le fichier web.config de l'application et consommée par un point d'extensibilité de WIF : classe ClaimsAuthorizationManager

Hook pour votre logique d'autorisationDéfinition de votre implémentation de CheckAccessAjout dans le pipeline de WIF via config

[ClaimsPrincipalPermission(SecurityAction.Demand, Resource = "Directory", Operation = "Browse")]private bytes[] GetVideoFile(string path){}

Page 36: 11 pour les développeurs Code Session : SEC317 Philippe BERAUD Consultant Architecte Direction Technique Microsoft France philippe.beraud@microsoft.com.

4040

WIF et WCFInitialisation du pipeline WIF dans WCF

Même modèle de programmation que dans ASP.NET……mais avec une architecture de "hosting" différenteServices "Self-Hosted" :

Invoquer FederatedServiceCredentials.ConfigureServiceHost(host) dans votre ServiceHost avant de l'ouvrir (.Open)

Services activés Web :Dériver une nouvelle usine à partir de ServiceHostFactoryFaire un "Override" sur la méthode CreateServiceHost et faire l'appel à ConfigureServiceHost ci-avant en son seinDéclarer votre fabrique personnalisée dans la directive @ServiceHost de votre fichier .svc

Page 37: 11 pour les développeurs Code Session : SEC317 Philippe BERAUD Consultant Architecte Direction Technique Microsoft France philippe.beraud@microsoft.com.

4141

WIF et WCFLiaisons WIF

UserNameWSTrustBindingCertificateWSTrustBindingWindowsWSTrustBindingKerberosWSTrustBindingIssuedTokenWSTrustBinding

Page 38: 11 pour les développeurs Code Session : SEC317 Philippe BERAUD Consultant Architecte Direction Technique Microsoft France philippe.beraud@microsoft.com.

4242

DémoAutorisations, WIF et services WCF

Fabrikam Shipping

Page 39: 11 pour les développeurs Code Session : SEC317 Philippe BERAUD Consultant Architecte Direction Technique Microsoft France philippe.beraud@microsoft.com.

4343

Développer un STS avec WIF

WIF fournit les briques de bases pour le développement de STS personnalisé

AD FS 2.0 a été développé sur la base de WIF !

Même modèle de programmation pour l'ensemble des fonctions de "hosting"

Actif : WCFPassif : ASP.NET

Les assistants et modèles permettent de créer instantanément un squelette de STS

Parfaitement adapté à des fins de testabilité

Activités principalesDécider en qui faire confianceDécider quel type de crédentités vous accepterezFournir tout le matériel cryptographique pour la signature et le chiffrement Hook dans la logique d'extraction de revendications

Page 40: 11 pour les développeurs Code Session : SEC317 Philippe BERAUD Consultant Architecte Direction Technique Microsoft France philippe.beraud@microsoft.com.

4444

Délégation d’identité

1. Envoi des revendications

{ Frank}

2. Obtention des revendications

{ WFE, ActAs(John)}

John

STS

Application Web "Front-End"

3. Envoi des revendications{ John delegate WFE }

ServiceWeb "Back-End"

STS

Page 41: 11 pour les développeurs Code Session : SEC317 Philippe BERAUD Consultant Architecte Direction Technique Microsoft France philippe.beraud@microsoft.com.

4545

Délégation d’identité

IClaimsPrincipal

IClaimsIdentity

IClaimsIdentity

Sample FillSample Fill

ClaimClaimType = “Name”

Value = “John”Issuer = “Adatum STS”

Subject

Delegate

IClaimsIdentity

Sample FillSample Fill

ClaimClaimType = “Name”Value = “Ship. WFE”

Issuer = “Fabrikam STS”Subject

Delegate

Page 42: 11 pour les développeurs Code Session : SEC317 Philippe BERAUD Consultant Architecte Direction Technique Microsoft France philippe.beraud@microsoft.com.

4646

Délégation d’identité Mise en œuvre

ÉtapesCoder le service WCF BEÉcrire du code dans le FE Fabrikam Shipping pour invoquer le service BE à l'aide d’un jeton ActAsMettre en place un STS personnalisé local pour le support de la délégation d'identité

BénéficesContrôle granulaire fin de la politique de la délégationPréservation de l'identité de l'appelant d'origine

Il est possible de mapper l’utilisateur sur un compte AD "Shadow" pour l'accès aux ressources protégées via Kerberos (c2WTS)

Audit précis au niveau du service BELes accès et l’audit reflètent les identités aussi bien de l'utilisateur et

que de l'application FEModèle de programmation WCF familier

Page 43: 11 pour les développeurs Code Session : SEC317 Philippe BERAUD Consultant Architecte Direction Technique Microsoft France philippe.beraud@microsoft.com.

4747

DémoSTS personnalisé, délégation d'identité

Fabrikam Shipping

Page 44: 11 pour les développeurs Code Session : SEC317 Philippe BERAUD Consultant Architecte Direction Technique Microsoft France philippe.beraud@microsoft.com.

4848

Ce que contient l’application exemple

Externalisation de l'authentification et obtention des revendications Consommation des revendicationsAutorisationsInvocation de services WCFMise en œuvre d'une STS PersonnaliséDélégation d’identité

Page 45: 11 pour les développeurs Code Session : SEC317 Philippe BERAUD Consultant Architecte Direction Technique Microsoft France philippe.beraud@microsoft.com.

4949

Pour autant, nous avons à peine abordé les capacités du Framework…

…comme par exemple les thématiques suivantesMise en œuvre avec AD FS 2.0Assurance vis-à-vis du niveau de l’authentificationGestion avancée des sessionsFermes Webc2WTSTrustChannelWindows AzureEtc.

Page 46: 11 pour les développeurs Code Session : SEC317 Philippe BERAUD Consultant Architecte Direction Technique Microsoft France philippe.beraud@microsoft.com.

5050

Windows Identity Foundation (WIF) 1.0

En résuméFramework fondé sur les revendications et intégré à ASP.NET et WCFImplémentation des protocoles WS-Trust et WS-FederationFramework pour la définition de STS personnalisés

Pour vous aider le cas échéant à assurer les transformations nécessaires en fonction de vos spécificités

Service Revendications-vers-Jeton NTIntégration Visual Studio : outils, modèles, STS local de développementIntégration Windows Azure

Page 47: 11 pour les développeurs Code Session : SEC317 Philippe BERAUD Consultant Architecte Direction Technique Microsoft France philippe.beraud@microsoft.com.

5151

En guise de conclusion

Les revendications sont flexibles et puissantesUne identité fondée sur les revendications simplifie

considérablement l'authentification, le contrôle d'accès et la personnalisation dans vos applicationsLes STS sont là pour vous aider à obtenir les bonnes

informations d’identité pour vos applicationsLa plateforme “Geneva” vous offre un modèle de

programmation cohérent pour chaque situationWIF facile la vie des développeurs pour programmer avec les

revendications

Page 48: 11 pour les développeurs Code Session : SEC317 Philippe BERAUD Consultant Architecte Direction Technique Microsoft France philippe.beraud@microsoft.com.

5252

Evaluer WIF 1.0 aujourd'hui

Télécharger WIF depuis le centre d'évaluationhttp://msdn.microsoft.com/fr-fr/evalcenter/dd440951.aspxWIF 1.0 pour Windows Server 203 SP2

http://www.microsoft.com/downloads/details.aspx?FamilyID=BE4DB6A0-B76D-446D-810C-EA3C25B3969A&displayLang=en

WIF 1.0 pour Windows Vista, Windows 7, Windows Server 2008 (R2)http://www.microsoft.com/downloads/details.aspx?FamilyID=eb9c345f-

e830-40b8-a5fe-ae7a864c4d76&displaylang=enSDK WIF 1.0

http://www.microsoft.com/downloads/details.aspx?familyid=C148B2DF-C7AF-46BB-9162-2C9422208504&displaylang=en

Continuer l'analyse du scénario exemple Fabrikam Shippinghttp://code.msdn.microsoft.com/FabrikamShippingCf. billet http://blogs.msdn.com/vbertocci/archive/2009/06/16/announcing-fabrikamshipping-in-depth-semi-realistic-sample-for-geneva-framework.aspx

Page 49: 11 pour les développeurs Code Session : SEC317 Philippe BERAUD Consultant Architecte Direction Technique Microsoft France philippe.beraud@microsoft.com.

5353

Evaluer WIF 1.0 aujourd'hui

Suivre les sessions sur Channel 9Session "Windows Identity Foundation Ships!"

http://channel9.msdn.com/shows/Identity/Windows-Identity-Foundation-Ships/

Session " Windows Identity Foundation RC is Here!"http://channel9.msdn.com/shows/Identity/Windows-Identity-

Foundation-RC-is-here/

Quelques lectureshttp://www.microsoft.com/downloads/details.aspx?FamilyID=9ca5c685-3172-4d8f-81cb-1a59bdc9f7e3&displaylang=en

Livre blanc "Claims-Based Identity for Windows"Livre blanc "Microsoft Windows Identity Foundation (WIF)

Whitepaper for Developers"Guide Patterns & Practices "Claims Based Identity & Access Control"

http://msdn.microsoft.com/en-us/library/ff359115%28lightweight%29.aspx

Page 50: 11 pour les développeurs Code Session : SEC317 Philippe BERAUD Consultant Architecte Direction Technique Microsoft France philippe.beraud@microsoft.com.

5454

Se former à WIF 1.0

Suivre le cours en ligne sur Channel 9http://go.microsoft.com/fwlink/?LinkId=148795Identité et sites Web, Identité et services Web, fournisseur d'authentification ASP.NET et Fédération, Identité et la plateforme AzureNouveau HOL "Federated Authentication in a Windows Azure Web Role Application"

http://channel9.msdn.com/learn/courses/Azure/IdentityAzure/WIFonWAZLab/Version autonome : http://code.msdn.microsoft.com/wifwazpassive

Télécharger et suivre le Kit de formation Identité pour les développeur (PDC 2009)

http://go.microsoft.com/fwlink/?LinkId=148795

Page 51: 11 pour les développeurs Code Session : SEC317 Philippe BERAUD Consultant Architecte Direction Technique Microsoft France philippe.beraud@microsoft.com.

5555

Se former à WIF 1.0

Suivre les sessions du parcours "Identité" de la PDC 2009http://microsoftpdc.comSVC28 : System.Identity Model Accessing Directory ServicesPR11 : Leveraging & Extending SharePoint Identity FeaturesSVC26 : How Microsoft SharePoint 2010 was Built with WIFSVC17 : Enabling SSO to Windows Azure ApplicationsSVC02 : Windows Identity Foundation OverviewSVC19 : REST Security Services in Windows Azure using the Access Control Service

Page 52: 11 pour les développeurs Code Session : SEC317 Philippe BERAUD Consultant Architecte Direction Technique Microsoft France philippe.beraud@microsoft.com.

5656

Pour aller plus loin…

Documentation WIF sur MSDNhttp://msdn.microsoft.com/en-us/library/ee748484.aspx

Centre de développement MSDN Sécurité pour la gestion de l'identité

http://msdn.microsoft.com/security/aa570351.aspx

Forum MSDN "Claims based access platform (CBA), code-named Geneva"

http://social.msdn.microsoft.com/Forums/fr-FR/Geneva/threads

WeblogsBlog "Geneva" Team

http://blogs.msdn.com/card/ blog Vibro.NET

http://blogs.msdn.com/vbertocci/Blog www.leastprivilege.com

http://www.leastprivilege.com

Page 53: 11 pour les développeurs Code Session : SEC317 Philippe BERAUD Consultant Architecte Direction Technique Microsoft France philippe.beraud@microsoft.com.

5757

Questions / Réponses

Page 54: 11 pour les développeurs Code Session : SEC317 Philippe BERAUD Consultant Architecte Direction Technique Microsoft France philippe.beraud@microsoft.com.

5858

© 2010 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED

OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

Votre potentiel, notre passion TM