La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

ADFS, lexpérience Web SSO (fédérée) 2 ième partie Philippe Beraud Consultant Principal Microsoft France.

Présentations similaires


Présentation au sujet: "ADFS, lexpérience Web SSO (fédérée) 2 ième partie Philippe Beraud Consultant Principal Microsoft France."— Transcription de la présentation:

1 ADFS, lexpérience Web SSO (fédérée) 2 ième partie Philippe Beraud Consultant Principal Microsoft France

2 Objectifs de la session Parcourir en détail le scénario de Web SSO fédéré de la première partie Appréhender comment développer une solution de fédération de bout-en- bout avec ADFS Mettre en exergue les points clé Tout ceci est applicable aux scénarios intranet et extranet fédéré

3 Scénario : problème métier Nature du problème à résoudre : offrir un accès partenaires à lapplication Web Ordering Exigences applicatives Réduire les coûts de supports : le fournisseur de ressources ne gère pas les identités des partenaires Compte Les partenaires sont propriétaires des identités : la gestion des rôles à lieu du coté Compte Interopérer : les partenaires Compte peuvent envoyer les identités depuis dautres plateformes interopérables Améliorer de la sécurité : révoquer laccès à lapplication dès que lutilisateur est « déprovisionné » de son « royaume » Sappuyer sur linfrastructure existante : IIS, Active Directory, AD/AM, PKI

4 Environnement de développement dapplication Installation sur une seule machine Windows Server 2003 R2 Active Directory ou AD/AM IIS 6.0 avec SSL configuré ASP.Net 2.0 ADFS Federation Service Account Store Application Web Agent for Claims-aware application Application « Claims-aware » Chargement du HTTP module Application Pool configuré pour ASP.Net 2.0

5 Applications « Identity-aware » Authentification (AuthN) Vérifier que lutilisateur a présenté une identité valide Autorisations (AuthZ) Vérifier que lutilisateur dispose des permissions appropriées pour accéder à la ressource Prendre des décisions dautorisation et de personnalisation basées sur lidentité en entrée

6 Points de développement FS-A WS FS-R Active Directory Client Infrastructure: AuthN des utilisateurs Infrastructure: Modification des claims lorsquils passent à travers chaque FS Cadre de confiance Fédération Forêt Compte A. Datum Corp Forêt Ressource Trey Research, Inc. Application : mise en œuvre dapplications qui peuvent tirer parti des claims pour les authZ

7 Exigences dune application « Identity-aware » fédérée Authentification Infrastructure Vérifier que lutilisateur a présenté une identité valide Authentification Application Vérifier que lutilisateur a été authentifié par ADFS Autorisations Vérifier que lutilisateur dispose des permissions appropriées pour la ressource Modification des claims Ajouter/supprimer/modifier les claims à transmettre sur lidentité

8 Vue densemble de lauthentification Dév Application Dév ADFS Ressource Dév ADFS Compte Infrastructure Quest-ce que cela signifie ? Nous avons dissocié le développeur dapplication du développeur en charge de lévènement dauthentification Lauthentification au niveau de lapplication Web consiste en une vérification que lidentité présentée a bien été signée par une entité de confiance 2. Lutilisateur est redirigé vers le FS Ressource pour lauthN 1. Lutilisateur arrive sur le site 3. Lutilisateur est redirigé vers le Compte pour lauthN 4. Lutilisateur sauthentifie 5. Un jeton est présenté par lutilisateur à ADFS 6. ADFS valide le jeton 7. Le jeton contient des claims pour autoriser laccès au site

9 Méthodes dauthentification Infrastructure Windows Integrée Approche recommandée (intranet) Utilisation de la session générée lors de louverture de session sur une machine Windows Certificat X.509 v3 Client Le browser Web reçoit une requête pour présenter un certificat client et lutilisateur choisit le certificat à présenter en fonction des racines de confiance ou de certification croisée De type Forms Le browser Web présente une page Web personnalisable à lutilisateur pour recueillir les « lettres de créances » Basic Le browser Web présente un dialogue utilisateur/mot de passe classique

10 Pages dauthentification Federation Services Infrastructure Personnalisable à la fois visuellement et logiquement clientlogon.aspx (compte) Le browser est redirigé sur cette page lors de la phase dauthentification Choix du mécanisme dauthentification Reprise de lidentité visuelle de lorganisation signout.aspx (compte) Suppression des cookies de session depuis le browser, résultant en une déconnexion discoverclientrealm.aspx (ressource) Découverte du royaume dappartenance Le mécanisme de découverte peut être modifié (ex. IP, adresse mèl) Inhibé si précisé dans la QueryString https:// / / ?whr=urn:federation: Inhibé si précisé dans la QueryString https:// / / ?whr=urn:federation: https:// / / ?whr=urn:federation:

11 Pages dauthentification Federation Services Infrastructure Laction courante à réaliser et le contexte nécessaire associé sont rendus disponibles via la propriété FormContext de lobjet LSAuthenticationObject Modèle de programmation Récupération de linstance LSAuthenticationObject via la propriété statique Current LSAuthenticationObject logonServer = LSAuthenticationObject.Current; Examen de la propriété CurrentAction de la classe FormContext afin de déterminer laction qui est demandée par FS-P logonServer.FormContext.CurrentAction Si nécessaire, « caste » de la classe FormContext en LSFormContext afin dobtenir les informations nécessaires afin de réaliser laction demandée Page Client Logon Page Sign Out Page Discover Client Realm

12 Démonstration Pages dauthentification Federation Services

13 Exigences dune application « Identity-aware » fédérée Authentification Infrastructure Vérifier que lutilisateur a présenté une identité valide Authentification Application Vérifier que lutilisateur a été authentifié par ADFS Autorisations Vérifier que lutilisateur dispose des permissions appropriées pour la ressource Modification des claims Ajouter/supprimer/modifier les claims à transmettre sur lidentité

14 Autorisations applicatives à laide des claims Claims Déclarations faites à propos dutilisateurs Peuvent être utilisées à des fins dautorisation Trois types de claims Identité (Identity) User Principal Name (UPN) Common Name Groupe (Group) Personnalisé (Custom) Exemple densemble de claims Identity Custom SpendingLimit:$500 Position: Purchasing Agent Group Purchaser Administrator Platinum

15 Bénéfices des claims Les claims… Exposent un ensemble riche de données dautorisation Sont peuplées à partir dActive Directory et dAD/AM à laide dune interface graphique Sont peuplées à partir dautres sources via un module de transformation de claim Sont modifiées aux différents nœuds par lesquels ils transitent Sont auditées au niveau dun référentiel centralisé Sont échangées entre partenaires « WS-Federation Passive Requestor Interop Profile » (PRIP)

16 Applications « Claims-Aware » Que signifie être une application « Claims-Aware » ? Une application dispose dun ensemble donné de claims quelle sattend à recevoir et sait comment lutiliser Une fois reçus, les claims peuvent être utilisées pour Prendre des décisions dautorisation Présenter des informations à lutilisateur Lapplication fait confiance à un unique Federation Services (ou ferme de) pour lui fournir les claims Une telle application permet de conférer un accès sécurisé et approprié pour les client / partenaire / fournisseur / collaborateur en dehors de leur domaine/forêt

17 Applications « Claims-Aware » Que signifie écrire une application « Claims-Aware » ? Application ASP.Net 2.0 Module HTTP WebSsoAuthenticationModule Configuration dun Federation Services spécifique Implémenter les APIs ADFS Assemblage System.Web.Security.SingleSignOn Ou une API qui consomme les claims ASP.Net IsInRole() Authorization Manager (AzMan)

18 APIs ADFS Module HTTP WebSsoAuthenticationModule Assemblage System.Web.Security.SingleSignOn Placé en frontal de lapplication ASP.NET via le fichier web.config Positionne un objet SingleSignOnIdentity dans le HttpContext de lapplication Objet SingleSignOnIdentity Utilisé par les pages.aspx de lapplication pour laccès aux claims du jeton WebSSO SingleSignOnIdentity SsoId = HttpContext.Current.User.Identity as SingleSignOnIdentity

19 Vérifier que lutilisateur a été authentifié SingleSignOnIdentity SsoId = User.Identity as SingleSignOnIdentity if (SsoId.IsAuthenticated) { // user authenticated by ADFS }else{ Response.Redirect(SsoId.SignInUrl, true); } Second « round » dauthentification Lapplication vérifie quelle dispose dun jeton signé valide SingleSignOnIdentity fournit un accès au(x) Statut dauthentification de lutilisateur (IsAuthenticated) URLs associées à louverture de session (SignInUrl) et à la déconnexion (SignOutUrl) Facilité dutilisation

20 Accéder aux claims ADFS System.Web.Security.SingleSignOn.AuthorizationSecurityProperty Champs statiques publics CommonNameClaimUriCustomClaimUri ClaimUriGroupClaimUriUpnClaimUri Propriétés publiques ClaimTypeNameUrivalueSecurityPropertyCollection Agrège les claims Permet litération à travers lensemble de claims Comparer lURI pour identifier le type de claim et prendre laction appropriée

21 Accéder aux claims ADFS foreach (SecurityProperty securityProperty in SsoId.SecurityPropertyCollection) { // For each group that we find, we need to add it to AzMan Context // For each group that we find, we need to add it to AzMan Context if (securityProperty.Uri == SecurityProperty.GroupClaimUri) {azMan.AddRoleToContext(securityProperty.Value);} else if (securityProperty.Uri == SecurityProperty.UpnClaimUri) { // set tu upn // set tu upn upn = securityProperty.Value; upn = securityProperty.Value;} else if (securityProperty.Uri == SecurityProperty.CustomClaimUri) else if (securityProperty.Uri == SecurityProperty.CustomClaimUri){ // set custom claims customClaims.Add(securityProperty.Name, securityProperty.Value); customClaims.Add(securityProperty.Name, securityProperty.Value);}} Itérer à travers une SecurityPropertyCollection

22 Fournit Un Framework pour le Role Based Access Control (RBAC) Un accès à travers des rôles utilisateur assignés Une application de la politique dautorisation à lexécution Etapes relatives à lutilisation dAzMan Définir un ensemble dopérations Grouper les opérations en tâches Assigner des tâches à des rôles Inclus dans Microsoft Windows Server 2003 R2 Introduire Authorization Manager (AzMan)

23 API AzMan et RCW Microsoft.Interop.Security.AzRoles Initialisation de lapplication – AzInitializeApplication A la connexion dun utilisateur Initialisation du contexte utilisateur – AzInitializeContext Exploitation des rôles pour la définition de linterface Lors dune requête pour une opération donnée Méthode AccessCheck(Scope, Operation, Operation Data) du contexte utilisateur Exécution automatique des règles Métier Introduire Authorization Manager (AzMan)

24 Intégrer ADFS et AzMan using Microsoft.Interop.Security.AzRoles; using System.Web.Security.SingleSignOn; using System.Web.Security.SingleSignOn.Authorization; Référence.NET nécessaire Initialisation de lapplication AzAuthorizationStoreClass azStore; IAzApplication2 azApp; azStore = new AzAuthorizationStoreClass(); azStore.Initialize(0, azmanStoreLocation, null); azStore.UpdateCache(null); azApp = azStore.OpenApplication2("Trey Ordering", null);

25 Intégrer ADFS et AzMan Initialisation du contexte utilisateur Contexte relatif à S – Everyone Création sans validation au niveau du domaine Champ nom de domaine est vide, pas de groupes dans le jeton WebSsoIdentity SsoId = User.Identity as SingleSignOnIdentity; IAzClientContext2 azContext; // Determine if the user is authenticated If (WebSsoId.IsAuthenticated) { azContext = azApp.InitializeClientContext2("Trey Ordering", null); …}

26 RBAC dans lapplication Ordering AdministratorPurchaserPLATINUM SILVER GOLD Update Billing Code Tâches Opérations Rôles Magasin de politique AzStore.xml Update Company Contact Phone Number Submit Order Query Order Status Update Department Code Change Depart Information Change Partner Info Order Parts

27 Définir les rôles en fonction des claims foreach (SecurityProperty securityProperty in SsoId.SecurityPropertyCollection) { // For each group claim that we find, we need to add it to the AzMan context if (securityProperty.Uri == SecurityProperty.GroupClaimUri) { object[] roles = new object[1]; roles[0] = securityProperty.Value; // roleName azContext.AddRoles(roles, null); }}

28 Obtenir les rôles depuis le contexte utilisateur public string[] GetRoles() { object[] roles; string[] strRoles; roles = (object[]) azContext.GetRoles(""); strRoles = new string[roles.Length]; for (int i = 0; i < roles.Length; i++) { strRoles[i] = roles[i].ToString(); }return(strRoles);} public bool IsUserInRole(string role) { string[] roles; bool bResult = false; roles = GetRoles(); for (int i = 0; bResult == false && i < roles.Length; i++) { if (roles[i].ToLower() == role.ToLower()) { bResult = true; }}return(bResult);}

29 Afficher les éléments dinterface en fonction des rôles if (IsUserInRole(PLATINUM")) { partnerLevel = PLATINUM" ; } if (IsUserInRole(GOLD")) { partnerLevel = GOLD" ; } if (IsUserInRole(SILVER")) { partnerLevel = SILVER" ; } if (IsUserInRole(Purchaser")) { EnablePurchaserFunction(); partnerDiscountLabel.Visible = true; partnerDiscountLabel.Text = "As a " + partnerLevel + " partner you receive a " + discountLevel + "% discount!"; purchaseLimitText.Text = purchaseLimit; }

30 Démonstration Construire une application « Claims- Aware »

31 Quen est-il du support du IsInRole ASP.NET ? Logique dautorisation bâtie sur la correspondance de chaîne ADFS crée un GenericPrincipal peuplé avec les claims ADFS de type group en tant que Rôles Exemple de code pour une vérification daccès à laide de GenericPrincipal using System.Security.Principal; … If (User.IsInRole(Administrators)) // Do something

32 Exigences dune application « Identity-aware » fédérée Authentification Infrastructure Vérifier que lutilisateur a présenté une identité valide Authentification Application Vérifier que lutilisateur a été authentifié par ADFS Autorisations Vérifier que lutilisateur dispose des permissions appropriées pour la ressource Modification des claims Ajouter/supprimer/modifier les claims à transmettre sur lidentité

33 Magasin AD Flot des claims ADFS Application Partenaire - Compte Application - Ressource PeuplementTransformation Activation Transmission des claims Claims en sortie Claims en entrée Transformation Claims organisationnelles Ressource Compte

34 Module de transformation de claim Obtenir des claims depuis dautres sources Réaliser des transformations de claims non disponibles au niveau de linterface graphique Ajouter / Supprimer / Modifier des claims basés sur les règles métier Implémentation interface IClaimTransform

35 Interface du module de transformation Référence à System.Web.Security.SingleSignOn.ClaimTransforms ClaimTransforms.dll dans le GAC sous %windir%\assembly\GAC\System.Web.Security.SingleSignOn.ClaimTransfo rm Méthode TransformClaims invoquées deux fois PreProcessing : Avant que le FS ne réalise ses propres opérations de transformations de claims PostProcessing : A lissue de ces opérations public class CustomTransformModuleClass : IClaimTransform { public void TransformClaims( SecurityPropertyCollection incomingClaims, SecurityPropertyCollection corporateClaims, SecurityPropertyCollection outgoingClaims, ClaimTransformStage transformStage, string issuer, string target) { // manipulate claims }} Ex. CustomTransformModule.cs CustomTransformModule.cs

36 Considérations relatives au module de transformation Réaliser des tâches à même doffrir en temps dexécution raisonnable Un module de transformation est directement dans le pipeline de construction de claims Tout temps additionnel passé à attendre la construction des claims constitue un temps dattente supplémentaire pour lutilisateur Enregistrer le module au niveau de linterface graphique Localisé au niveau de longlet Transform Module de Trust Policy Properties

37 Démonstration Module de transformation de claims Federation Services

38 Revue du scénario Réduire les coûts de supports Aucune gestion des identités partenaires requise Lensemble des identités arrive sous forme dun ensemble de claims Les partenaires sont propriétaires des identités Lapplication offre un accès basé sur les claims Les claims et les accès sont déterminés par le partenaire Interopérer WS-Federation Passive Requestor Interop Profile (WS-F PRIP) Les partenaires peuvent envoyer les identités depuis dautres plateformes Améliorer de la sécurité Un utilisateur supprimé du système didentité partenaire perd immédiatement accès à lapplication Sappuyer sur linfrastructure existante Identités dans Active Directory, autorisations dans AD/AM

39 Pour plus dinformations sur ADFS SDK ADFS sur MSDN Show « ADFS » R ejoignez les discussions sur R ejoignez les discussions sur

40 Pour plus dinformations sur AzMan « Designing Application-Managed Authorization » « Role-Based Access Control for Multi-tier Applications Using Authorization Manager » 86cc-4c7f-8fbf cd0b61033.mspx 86cc-4c7f-8fbf cd0b61033.mspx « Developing Identity-Aware ASP.NET Applications », Microsoft Identity and Access Management Series (http://go.microsoft.com/fwlink/?LinkId=14841) dmanage/P3ASPD.mspx dmanage/P3ASPD.mspx

41

42 Microsoft France 18, avenue du Québec Courtaboeuf Cedex


Télécharger ppt "ADFS, lexpérience Web SSO (fédérée) 2 ième partie Philippe Beraud Consultant Principal Microsoft France."

Présentations similaires


Annonces Google