adfs, lexpérience web sso (fédérée) 2 ième partie philippe beraud consultant principal...

42
ADFS, l’expérience Web SSO (fédérée) 2 ième partie Philippe Beraud Consultant Principal Microsoft F rance

Upload: andromaque-baron

Post on 03-Apr-2015

118 views

Category:

Documents


1 download

TRANSCRIPT

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

ADFS, l’expérience Web SSO (fédérée)2ième partie

ADFS, l’expérience Web SSO (fédérée)2ième partie

Philippe BeraudConsultant Principal

Microsoft France

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

Objectifs de la session

Parcourir en détail le scénario de Web SSO fédéré de la Parcourir en détail le scénario de Web SSO fédéré de la première partiepremière partie

Appréhender comment développer une solution de fédération Appréhender comment développer une solution de fédération de bout-en-bout avec ADFSde bout-en-bout avec ADFS

Mettre en exergue les points cléMettre en exergue les points clé

Tout ceci est applicable aux scénarios intranet et extranet fédéréTout ceci est applicable aux scénarios intranet et extranet fédéré

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

Scénario : problème métier

Nature du problème à résoudre : offrir un accès partenaires à Nature du problème à résoudre : offrir un accès partenaires à l’application Web l’application Web OrderingOrdering

Exigences applicativesExigences applicatives

Réduire les coûts de supports : le fournisseur de ressources Réduire les coûts de supports : le fournisseur de ressources ne gère pas les identités des partenaires Comptene gère pas les identités des partenaires Compte

Les partenaires sont propriétaires des identités : la gestion Les partenaires sont propriétaires des identités : la gestion des rôles à lieu du coté Comptedes rôles à lieu du coté Compte

Interopérer : les partenaires Compte peuvent envoyer les Interopérer : les partenaires Compte peuvent envoyer les identités depuis d’autres plateformes interopérables identités depuis d’autres plateformes interopérables

Améliorer de la sécurité : révoquer l’accès à l’application dès Améliorer de la sécurité : révoquer l’accès à l’application dès que l’utilisateur est « déprovisionné » de son « royaume »que l’utilisateur est « déprovisionné » de son « royaume »

S’appuyer sur l’infrastructure existante : IIS, Active Directory, S’appuyer sur l’infrastructure existante : IIS, Active Directory, AD/AM, PKIAD/AM, PKI

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

Environnement de développement d’applicationInstallation sur une seule machine

Windows Server 2003 R2Windows Server 2003 R2Active Directory ou AD/AMActive Directory ou AD/AMIIS 6.0 avec SSL configuréIIS 6.0 avec SSL configuréASP.Net 2.0ASP.Net 2.0ADFSADFS

Federation ServiceFederation ServiceAccount StoreAccount StoreApplicationApplication

Web Agent for Claims-aware applicationWeb Agent for Claims-aware applicationApplication « Claims-aware »Application « Claims-aware »

Chargement du HTTP moduleChargement du HTTP moduleApplication Pool configuré pour ASP.Net 2.0Application Pool configuré pour ASP.Net 2.0

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

Applications « Identity-aware »

Authentification (AuthN)Authentification (AuthN)Vérifier que l’utilisateur a présenté une identité valideVérifier que l’utilisateur a présenté une identité valide

Autorisations (AuthZ)Autorisations (AuthZ)Vérifier que l’utilisateur dispose des permissions Vérifier que l’utilisateur dispose des permissions appropriées pour accéder à la ressourceappropriées pour accéder à la ressource

Prendre des décisions d’autorisation et de personnalisation Prendre des décisions d’autorisation et de personnalisation basées sur l’identité en entréebasées sur l’identité en entrée

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

Points de développement

FS-AFS-A

WSWS

FS-RFS-R

Active Active DirectorDirector

yy

ClientClient

Infrastructure:AuthN des utilisateurs

Infrastructure:Modification des claims

lorsqu’ils passent à travers chaque FS

Cadre de confianceCadre de confianceFédérationFédération

Forêt CompteForêt CompteA. Datum CorpA. Datum Corp

Forêt RessourceForêt RessourceTrey Research, Inc.Trey Research, Inc.

Application :mise en œuvre d’applications qui

peuvent tirer parti des claims pour les authZ

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

Exigences d’une application « Identity-aware » fédérée

Authentification InfrastructureAuthentification Infrastructure

Vérifier que l’utilisateur a présenté une identité Vérifier que l’utilisateur a présenté une identité validevalide

Authentification ApplicationAuthentification Application

Vérifier que l’utilisateur a été authentifié par ADFSVérifier que l’utilisateur a été authentifié par ADFS

AutorisationsAutorisations

Vérifier que l’utilisateur dispose des permissions Vérifier que l’utilisateur dispose des permissions appropriées pour la ressourceappropriées pour la ressource

Modification des claimsModification des claims

Ajouter/supprimer/modifier les claims à transmettre sur Ajouter/supprimer/modifier les claims à transmettre sur l’identitél’identité

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

Vue d’ensemble de l’authentification

Dév Application Dév Application Dév ADFS Dév ADFS RessourceRessource Dév ADFS Dév ADFS CompteCompte

InfrastructureInfrastructure

Qu’est-ce que cela signifie ?Qu’est-ce que cela signifie ?

Nous avons dissocié le développeur d’application du Nous avons dissocié le développeur d’application du développeur en charge de l’évènement d’authentificationdéveloppeur en charge de l’évènement d’authentification

L’authentification au niveau de l’application Web consiste L’authentification au niveau de l’application Web consiste en une vérification que l’identité présentée a bien été en une vérification que l’identité présentée a bien été signée par une entité de confiancesignée par une entité de confiance

2. L’utilisateur est redirigé vers le FS Ressource pour l’authN

1. L’utilisateur arrive sur le site

3. L’utilisateur est redirigé vers le Compte pour l’authN

4. L’utilisateur s’authentifie

5. Un jeton est présenté par l’utilisateur à ADFS

6. ADFS valide le jeton

7. Le jeton contient des claims pour autoriser l’accès au site

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

Méthodes d’authentificationInfrastructure

Windows IntegréeWindows IntegréeApproche recommandée Approche recommandée (intranet) (intranet) Utilisation de la session générée lors de l’ouverture de session Utilisation de la session générée lors de l’ouverture de session sur une machine Windowssur une machine Windows

CertificatCertificat X.509 v3 Client X.509 v3 ClientLe browser Web reçoit une requête pour présenter un certificat Le browser Web reçoit une requête pour présenter un certificat client et l’utilisateur choisit le certificat à présenter en fonction client et l’utilisateur choisit le certificat à présenter en fonction des racines de confiance ou de certification croiséedes racines de confiance ou de certification croisée

De type De type FormsFormsLe browser Web présente une page Web personnalisable à Le browser Web présente une page Web personnalisable à l’utilisateur pour recueillir les « lettres de créances »l’utilisateur pour recueillir les « lettres de créances »

BasicBasicLe browser Web présente un dialogue utilisateur/mot de passe Le browser Web présente un dialogue utilisateur/mot de passe classiqueclassique

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

Pages d’authentification Federation Services Infrastructure

Personnalisable à la fois visuellement et logiquementPersonnalisable à la fois visuellement et logiquement

clientlogon.aspx clientlogon.aspx (compte)(compte)Le browser est redirigé sur cette page lors de la phase Le browser est redirigé sur cette page lors de la phase d’authentificationd’authentificationChoix du mécanisme d’authentification Choix du mécanisme d’authentification Reprise de l’identité visuelle de l’organisationReprise de l’identité visuelle de l’organisation

signout.aspxsignout.aspx (compte) (compte)Suppression des cookies de session depuis le browser, résultant en Suppression des cookies de session depuis le browser, résultant en une déconnexionune déconnexion

ddiscoveriscovercclientlientrrealm.aspxealm.aspx (ressource) (ressource)Découverte du royaume d’appartenanceDécouverte du royaume d’appartenanceLe mécanisme de découverte peut être modifié (ex. IP, adresse mèl)Le mécanisme de découverte peut être modifié (ex. IP, adresse mèl)Inhibé si précisé dans laInhibé si précisé dans la QueryString QueryString https://<server>/<app>/<page.aspx>?whr=urn:federation:<homerhttps://<server>/<app>/<page.aspx>?whr=urn:federation:<homerealm> ealm>

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

Pages d’authentification Federation ServicesInfrastructure

L’action courante à réaliser et le contexte nécessaire associé sont L’action courante à réaliser et le contexte nécessaire associé sont rendus disponibles via la propriété rendus disponibles via la propriété FormContextFormContext de l’objet de l’objet LSAuthenticationObjectLSAuthenticationObject Modèle de programmationModèle de programmation

Récupération de l’instance Récupération de l’instance LSAuthenticationObjectLSAuthenticationObject via la via la propriété statique propriété statique CurrentCurrentLSAuthenticationObject logonServer = LSAuthenticationObject.Current;LSAuthenticationObject logonServer = LSAuthenticationObject.Current;

Examen de la propriété Examen de la propriété CurrentActionCurrentAction de la classe de la classe FormContextFormContext afin de déterminer l’action qui est demandée par FS-Pafin de déterminer l’action qui est demandée par FS-PlogonServer.FormContext.CurrentActionlogonServer.FormContext.CurrentAction

Si nécessaire, « caste » de la classe Si nécessaire, « caste » de la classe FormContextFormContext en en LSFLSFormContextormContext afin d’obtenir les informations nécessaires afin de afin d’obtenir les informations nécessaires afin de réaliser l’action demandée réaliser l’action demandée

Page Page Client Client LogonLogon

Page Page

Sign Sign

OutOut

Page Page Discove

Discover Client r Client RealmRealm

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

DémonstrationDémonstration

Pages d’authentification Federation Services

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

Exigences d’une application « Identity-aware » fédérée

Authentification InfrastructureAuthentification Infrastructure

Vérifier que l’utilisateur a présenté une identité valideVérifier que l’utilisateur a présenté une identité valide

Authentification ApplicationAuthentification Application

Vérifier que l’utilisateur a été authentifié par Vérifier que l’utilisateur a été authentifié par ADFSADFS

AutorisationsAutorisations

Vérifier que l’utilisateur dispose des Vérifier que l’utilisateur dispose des permissions appropriées pour la ressourcepermissions appropriées pour la ressource

Modification des claimsModification des claims

Ajouter/supprimer/modifier les claims à transmettre sur Ajouter/supprimer/modifier les claims à transmettre sur l’identitél’identité

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

Autorisations applicatives à l’aide des claims

ClaimsClaims

Déclarations faites à propos d’utilisateurs Déclarations faites à propos d’utilisateurs

Peuvent être utilisées à des fins d’autorisationPeuvent être utilisées à des fins d’autorisation

Trois types deTrois types de claimsclaims

IdentitéIdentité (Identity) (Identity)EmailEmail

User Principal Name (UPN)User Principal Name (UPN)

Common NameCommon Name

GroupeGroupe (Group) (Group)

PersonnaliséPersonnalisé (Custom) (Custom)

Exemple d’ensemble de Exemple d’ensemble de claimsclaimsIdentity

[email protected]

CustomSpendingLimit:

$500Position:

Purchasing Agent

GroupPurchaser

AdministratorPlatinum

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

Bénéfices des claims

Les Les claimsclaims……Exposent un ensemble riche de données d’autorisationExposent un ensemble riche de données d’autorisationSont peuplées à partir d’Active Directory et d’AD/AM à Sont peuplées à partir d’Active Directory et d’AD/AM à l’aide d’une interface graphiquel’aide d’une interface graphiqueSont peuplées à partir d’autres sources via un module de Sont peuplées à partir d’autres sources via un module de transformation de transformation de claimclaimSont modifiées aux différents nœuds par lesquels ils Sont modifiées aux différents nœuds par lesquels ils transitenttransitentSont auditées au niveau d’un référentiel centraliséSont auditées au niveau d’un référentiel centraliséSont échangées entre partenaires « Sont échangées entre partenaires « WS-Federation WS-Federation Passive Requestor Interop ProfilePassive Requestor Interop Profile » (PRIP) » (PRIP)

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

Applications « Claims-Aware »

Que signifie être une application « Que signifie être une application « Claims-AwareClaims-Aware » ? » ?

Une application dispose d’un ensemble donné de Une application dispose d’un ensemble donné de claimsclaims qu’elle s’attend à recevoir et sait comment l’utiliserqu’elle s’attend à recevoir et sait comment l’utiliser

Une fois reçus, les Une fois reçus, les claimsclaims peuvent être utilisées pour peuvent être utilisées pour Prendre des décisions d’autorisationPrendre des décisions d’autorisation

Présenter des informations à l’utilisateurPrésenter des informations à l’utilisateur

L’application fait confiance à un unique Federation L’application fait confiance à un unique Federation Services (ou ferme de) pour lui fournir les claimsServices (ou ferme de) pour lui fournir les claims

Une telle application permet de conférer un accès Une telle application permet de conférer un accès sécurisé et approprié pour les client / partenaire / sécurisé et approprié pour les client / partenaire / fournisseur / collaborateur en dehors de leur fournisseur / collaborateur en dehors de leur domaine/forêtdomaine/forêt

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

Applications « Claims-Aware »

Que signifie écrire une application « Que signifie écrire une application « Claims-AwareClaims-Aware » ? » ?

Application ASP.Net 2.0Application ASP.Net 2.0Module HTTP Module HTTP WebSsoAuthenticationModuleWebSsoAuthenticationModule

Configuration d’un Federation Services spécifiqueConfiguration d’un Federation Services spécifique

Implémenter les APIs ADFSImplémenter les APIs ADFSAssemblage Assemblage System.Web.Security.SingleSignOnSystem.Web.Security.SingleSignOn

Ou une API qui consomme les claimsOu une API qui consomme les claimsASP.Net IsInRole()ASP.Net IsInRole()

Authorization Manager (AzMan)Authorization Manager (AzMan)

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

APIs ADFS

Module HTTP Module HTTP WebSsoAuthenticationModuleWebSsoAuthenticationModuleAssemblage Assemblage System.Web.Security.SingleSignOnSystem.Web.Security.SingleSignOnPlacé en frontal de l’application ASP.NET via le fichier Placé en frontal de l’application ASP.NET via le fichier web.configweb.configPositionne un objet Positionne un objet SingleSignOnIdentitySingleSignOnIdentity dans le dans le HttpContextHttpContext de de l’applicationl’application

Objet Objet SingleSignOnIdentitySingleSignOnIdentityUtilisé par les pages .aspx de l’application pour l’accès aux Utilisé par les pages .aspx de l’application pour l’accès aux claimsclaims du jeton du jeton WebSSOWebSSO

SingleSignOnIdentity SsoId = HttpContext.Current.User.Identity as SingleSignOnIdentity SsoId = HttpContext.Current.User.Identity as SingleSignOnIdentitySingleSignOnIdentity

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

Vérifier que l’utilisateur a été authentifié

SingleSignOnIdentity SsoId = User.Identity as SingleSignOnIdentitySingleSignOnIdentity SsoId = User.Identity as SingleSignOnIdentityif (SsoId.IsAuthenticated)if (SsoId.IsAuthenticated){{

// user authenticated by ADFS// user authenticated by ADFS}}elseelse{{

Response.Redirect(SsoId.SignInUrl, true);Response.Redirect(SsoId.SignInUrl, true);}}

Second « round » d’authentificationSecond « round » d’authentification

L’application vérifie qu’elle dispose d’un jeton signé L’application vérifie qu’elle dispose d’un jeton signé validevalide

SingleSignOnIdentitySingleSignOnIdentity fournit un accès au(x) fournit un accès au(x)

Statut d’authentification de l’utilisateur (Statut d’authentification de l’utilisateur (IsAuthenticatedIsAuthenticated))

URLsURLs associées à l’ouverture de session (S associées à l’ouverture de session (SignignIInnUrl) et à Url) et à la déconnexion (Sla déconnexion (SignignOOututUrl)Url)

Facilité d’utilisation Facilité d’utilisation

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

Accéder aux claims ADFSSystem.Web.Security.SingleSignOn.Authorization

SecurityPropertySecurityProperty

Champs statiques publicsChamps statiques publicsCommonNameClaimUriCommonNameClaimUri

CustomClaimUriCustomClaimUri

EmailClaimUriEmailClaimUri

GroupClaimUriGroupClaimUri

UpnClaimUriUpnClaimUri

Propriétés publiquesPropriétés publiquesClaimTypeClaimType

NameName

UriUri

valuevalue

SecurityPropertyCollectionSecurityPropertyCollection

Agrège les claimsAgrège les claims

Permet l’itération à travers l’ensemble de claimsPermet l’itération à travers l’ensemble de claims

Comparer l’URI pour identifier le type de claim et prendre Comparer l’URI pour identifier le type de claim et prendre l’action appropriéel’action appropriée

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

Accéder aux claims ADFSAccéder aux claims ADFS

foreach (SecurityProperty securityProperty in SsoId.SecurityPropertyCollection)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)if (securityProperty.Uri == SecurityProperty.GroupClaimUri){{

azMan.AddRoleToContext(securityProperty.Value);azMan.AddRoleToContext(securityProperty.Value);}}else if (securityProperty.Uri == SecurityProperty.UpnClaimUri)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// set custom claims

customClaims.Add(securityProperty.NamecustomClaims.Add(securityProperty.Name, , securityProperty.ValuesecurityProperty.Value));;}}

}}

Itérer à travers une SecurityPropertyCollectionItérer à travers une SecurityPropertyCollection

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

FournitFournit

Un Framework pour le Un Framework pour le Role Based Access Control (RBAC)Role Based Access Control (RBAC)

Un accès à travers des rôles utilisateur assignésUn accès à travers des rôles utilisateur assignés

Une application de la politique d’autorisation à l’exécution Une application de la politique d’autorisation à l’exécution

Etapes relatives à l’utilisation d’AzMan Etapes relatives à l’utilisation d’AzMan

Définir un ensemble d’opérationsDéfinir un ensemble d’opérations

Grouper les opérations en tâchesGrouper les opérations en tâches

Assigner des tâches à des rôlesAssigner des tâches à des rôles

Inclus dansInclus dans Microsoft Windows Server 2003 Microsoft Windows Server 2003 R2 R2

Introduire Authorization Manager (AzMan)

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

API API AzManAzMan et RCW et RCW Microsoft.Interop.Security.AzRolesMicrosoft.Interop.Security.AzRolesInitialisation de l’applicationInitialisation de l’application – – AzInitializeApplicationAzInitializeApplication

A la connexion d’un utilisateurA la connexion d’un utilisateurInitialisation du contexte utilisateurInitialisation du contexte utilisateur – – AzInitializeContextAzInitializeContext

Exploitation des rôles pour la définition de l’interfaceExploitation des rôles pour la définition de l’interface

Lors d’une requête pour une opération donnéeLors d’une requête pour une opération donnéeMéthode Méthode AccessCheck(Scope, Operation, Operation Data)AccessCheck(Scope, Operation, Operation Data) du contexte du contexte utilisateur utilisateur

Exécution automatique des règles MétierExécution automatique des règles Métier

Introduire Authorization Manager (AzMan)

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

Intégrer ADFS et AzMan Intégrer ADFS et AzMan

using Microsoft.Interop.Security.AzRoles;using Microsoft.Interop.Security.AzRoles;

uusingsing System.Web.Security.SingleSignOnSystem.Web.Security.SingleSignOn;;using System.Web.Security.SingleSignOn.using System.Web.Security.SingleSignOn.AuthorizationAuthorization;;

Référence .NET nécessaireRéférence .NET nécessaire

Initialisation de l’applicationInitialisation de l’application

AzAuthorizationStoreClass azStore;AzAuthorizationStoreClass azStore;IAzApplicationIAzApplication22 azApp; azApp;

azStore = new AzAuthorizationStoreClass();azStore = new AzAuthorizationStoreClass();azStore.Initialize(0, azmanStoreLocation, null);azStore.Initialize(0, azmanStoreLocation, null);azStore.UpdateCache(null);azStore.UpdateCache(null);

azApp = azStore.OpenApplication2("Trey Ordering", null);azApp = azStore.OpenApplication2("Trey Ordering", null);

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

Intégrer ADFS et AzMan Intégrer ADFS et AzMan

Initialisation du contexte utilisateurInitialisation du contexte utilisateur

Contexte relatif àContexte relatif à S-1-1-0 – Everyone S-1-1-0 – Everyone

Création sans validation au niveau du domaineCréation sans validation au niveau du domaineChamp nom de domaine est vide, pas de groupes dans le jetonChamp nom de domaine est vide, pas de groupes dans le jeton

WebSsoIdentity SsoId = User.Identity as SingleSignOnIdentity;WebSsoIdentity SsoId = User.Identity as SingleSignOnIdentity;IAzClientContext2 azContext;IAzClientContext2 azContext;

// Determine if the user is authenticated// Determine if the user is authenticatedIf (If (WebSsoId.IsAuthenticatedWebSsoId.IsAuthenticated) {) {

azContext = azApp.InitializeClientContext2("Trey Ordering", null);azContext = azApp.InitializeClientContext2("Trey Ordering", null);……

}}

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

RBAC dans l’application Ordering

AdministratAdministratoror

AdministratAdministratoror

PurchaserPurchaserPurchaserPurchaser PLATINUMPLATINUMPLATINUMPLATINUM SILVERSILVERSILVERSILVERGOLDGOLDGOLDGOLD

Update Billing Update Billing CodeCode

Update Billing Update Billing CodeCode

TâchesTâches

OpérationsOpérations

RôlesRôles

Magasin de politiqueMagasin de politique

AzStore.xml

Update Update Company Company

Contact Phone Contact Phone NumberNumber

Update Update Company Company

Contact Phone Contact Phone NumberNumber

Submit OrderSubmit OrderSubmit OrderSubmit Order Query Order Query Order StatusStatus

Query Order Query Order StatusStatus

Update Update Department Department

CodeCode

Update Update Department Department

CodeCode

Change Change Depart Depart

InformationInformation

Change Change Depart Depart

InformationInformation

Change Change Partner InfoPartner Info

Change Change Partner InfoPartner Info

Order Order PartsPartsOrder Order PartsParts

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

Définir les rôles en fonction des claimsDéfinir les rôles en fonction des claims

foreach (SecurityProperty securityProperty in SsoId.SecurityPropertyCollection)foreach (SecurityProperty securityProperty in SsoId.SecurityPropertyCollection){{

// For each group claim that we find, we need to add it to the AzMan context// For each group claim that we find, we need to add it to the AzMan contextif (if (securityProperty.Uri == SecurityProperty.GroupClaimUrisecurityProperty.Uri == SecurityProperty.GroupClaimUri )){{object[] roles = new object[1];object[] roles = new object[1];roles[0] = securityProperty.Valueroles[0] = securityProperty.Value; // ; // roleNameroleNameazContext.AddRoles(roles, null);azContext.AddRoles(roles, null);}}

}}

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

Obtenir les rôles depuis le contexte utilisateurObtenir les rôles depuis le contexte utilisateur

public string[] GetRoles()public string[] GetRoles(){{

object[] roles;object[] roles;string[] strRoles;string[] strRoles;

roles = (object[]) azContext.GetRoles("");roles = (object[]) azContext.GetRoles("");

strRoles = new string[roles.Length];strRoles = new string[roles.Length];

for (int i = 0; i < roles.Length; i++)for (int i = 0; i < roles.Length; i++){{

strRoles[i] = roles[i].ToString();strRoles[i] = roles[i].ToString();}}

return(strRoles);return(strRoles);}}

public bool IsUserInRole(string role)public bool IsUserInRole(string role){{

string[] roles;string[] roles;bool bResult = false;bool bResult = false;

roles = GetRoles();roles = GetRoles();

for (int i = 0; bResult == false && i < roles.Length; i++)for (int i = 0; bResult == false && i < roles.Length; i++){{

if (roles[i].ToLower() == role.ToLower())if (roles[i].ToLower() == role.ToLower()){{

bResult = true;bResult = true;}}

}}

return(bResult);return(bResult);}}

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

Afficher les éléments d’interface en fonction des rôlesAfficher les éléments d’interface en fonction des rôles

if (IsUserInRole(“PLATINUM")) {if (IsUserInRole(“PLATINUM")) {partnerLevel = “PLATINUM" ;partnerLevel = “PLATINUM" ;

}}

if (IsUserInRole(“GOLD")) {if (IsUserInRole(“GOLD")) {partnerLevel = “GOLD" ;partnerLevel = “GOLD" ;

}}

if (IsUserInRole(“SILVER")) {if (IsUserInRole(“SILVER")) {partnerLevel = “SILVER" ;partnerLevel = “SILVER" ;

}}

if (IsUserInRole(“Purchaser")) {if (IsUserInRole(“Purchaser")) {EnablePurchaserFunction();EnablePurchaserFunction();partnerDiscountLabel.Visible = true;partnerDiscountLabel.Visible = true;partnerDiscountLabel.Text = "As a " + partnerLevel +partnerDiscountLabel.Text = "As a " + partnerLevel +

" partner you receive a " + discountLevel + "% discount!";" partner you receive a " + discountLevel + "% discount!";purchaseLimitText.Text = purchaseLimit;purchaseLimitText.Text = purchaseLimit;

}}

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

DémonstrationDémonstration

Construire une application «  Claims-Aware »

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

Qu’en est-il du support du IsInRole ASP.NET ?

Logique d’autorisation bâtie sur la correspondance de chaîneLogique d’autorisation bâtie sur la correspondance de chaîneADFS crée un GenericPrincipal peuplé avec les claims ADFS de ADFS crée un GenericPrincipal peuplé avec les claims ADFS de type group en tant que Rôlestype group en tant que RôlesExemple de code pour une vérification d’accès à l’aide de Exemple de code pour une vérification d’accès à l’aide de GenericPrincipalGenericPrincipal

using System.Security.Principal;using System.Security.Principal;……If (User.IsInRole(“Administrators”))If (User.IsInRole(“Administrators”))

// Do something// Do something

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

Exigences d’une application « Identity-aware » fédérée

Authentification InfrastructureAuthentification Infrastructure

Vérifier que l’utilisateur a présenté une identité valideVérifier que l’utilisateur a présenté une identité valide

Authentification ApplicationAuthentification Application

Vérifier que l’utilisateur a été authentifié par ADFSVérifier que l’utilisateur a été authentifié par ADFS

AutorisationsAutorisations

Vérifier que l’utilisateur dispose des permissions Vérifier que l’utilisateur dispose des permissions appropriées pour la ressourceappropriées pour la ressource

Modification des claimsModification des claims

Ajouter/supprimer/modifier les claims à Ajouter/supprimer/modifier les claims à transmettre sur l’identitétransmettre sur l’identité

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

Magasin Magasin ADAD

Flot des claims ADFSFlot des claims ADFS

ApplicationApplication

Partenaire - ComptePartenaire - Compte

ApplicationApplication - - RessourceRessource

PeuplementPeuplement TransformatiTransformationon

ActivationActivation

Transmiss

ion des

Transmiss

ion des

claim

scla

ims

Claims Claims en en

sortiesortie

Claims Claims en en

entréeentrée

TransformatiTransformationon

Claims Claims organisationnelleorganisationnelle

ssRessourceRessource

Claims Claims organisationnelleorganisationnelle

ssCompteCompte

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

Module de transformation de claim

Obtenir des Obtenir des claimsclaims depuis d’autres sources depuis d’autres sourcesRéaliser des transformations de Réaliser des transformations de claimsclaims non disponibles au non disponibles au niveau de l’interface graphique niveau de l’interface graphique Ajouter / Supprimer / Modifier des Ajouter / Supprimer / Modifier des claimsclaims basés sur les règles basés sur les règles métiermétierImplémentationImplémentation

interface interface IClaimTransformIClaimTransform

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

Interface du module de transformation

Référence à Référence à System.Web.Security.SingleSignOn.ClaimTransformsSystem.Web.Security.SingleSignOn.ClaimTransformsClaimTransforms.dll dans le GAC sous ClaimTransforms.dll dans le GAC sous %windir%\assembly\GAC\%windir%\assembly\GAC\System.Web.Security.SingleSignOn.ClaimTransformSystem.Web.Security.SingleSignOn.ClaimTransform

Méthode Méthode TransformClaimsTransformClaims invoquées deux fois invoquées deux foisPreProcessingPreProcessing : Avant que le FS ne réalise ses propres opérations : Avant que le FS ne réalise ses propres opérations de transformations de de transformations de claimsclaimsPostProcessingPostProcessing : A l’issue de ces opérations : A l’issue de ces opérations

public class CustomTransformModuleClass : IClaimTransformpublic class CustomTransformModuleClass : IClaimTransform{{

public void TransformClaims(public void TransformClaims(SecurityPropertyCollection incomingClaims, SecurityPropertyCollection incomingClaims, SecurityPropertyCollection corporateClaims, SecurityPropertyCollection corporateClaims, SecurityPropertyCollection outgoingClaims, SecurityPropertyCollection outgoingClaims, ClaimTransformStage transformStage, ClaimTransformStage transformStage, string issuer,string issuer,string target)string target)

{{// manipulate claims// manipulate claims

}}} }

Ex. Ex. CustomTransformModule.csCustomTransformModule.cs

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

Considérations relatives au module de transformation

Réaliser des tâches à même d’offrir en temps d’exécution raisonnableRéaliser des tâches à même d’offrir en temps d’exécution raisonnable

Un module de transformation est directement dans le pipeline de Un module de transformation est directement dans le pipeline de construction de construction de claimsclaims

Tout temps additionnel passé à attendre la construction des claims Tout temps additionnel passé à attendre la construction des claims constitue un temps d’attente supplémentaire pour l’utilisateurconstitue un temps d’attente supplémentaire pour l’utilisateur

Enregistrer le module au niveau de l’interface graphiqueEnregistrer le module au niveau de l’interface graphique

Localisé au niveau de l’onglet Localisé au niveau de l’onglet Transform ModuleTransform Module de de Trust Policy Trust Policy PropertiesProperties

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

DémonstrationDémonstration

Module de transformation de claims Federation Services

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

Revue du scénario

Réduire les coûts de supportsRéduire les coûts de supportsAucune gestion des identités partenaires requiseAucune gestion des identités partenaires requiseL’ensemble des identités arrive sous forme d’un ensemble de L’ensemble des identités arrive sous forme d’un ensemble de claimsclaims

Les partenaires sont propriétaires des identitésLes partenaires sont propriétaires des identitésL’application offre un accès basé sur les L’application offre un accès basé sur les claimsclaimsLes Les claimsclaims et les accès sont déterminés par le partenaire et les accès sont déterminés par le partenaire

Interopérer Interopérer WS-Federation Passive Requestor Interop ProfileWS-Federation Passive Requestor Interop Profile (WS-F PRIP) (WS-F PRIP)Les partenaires peuvent envoyer les identités depuis Les partenaires peuvent envoyer les identités depuis d’autres plateformesd’autres plateformes

Améliorer de la sécuritéAméliorer de la sécuritéUn utilisateur supprimé du système d’identité partenaire Un utilisateur supprimé du système d’identité partenaire perd immédiatement accès à l’applicationperd immédiatement accès à l’application

S’appuyer sur l’infrastructure existanteS’appuyer sur l’infrastructure existanteIdentités dans Active Directory, autorisations dans AD/AMIdentités dans Active Directory, autorisations dans AD/AM

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

Pour plus d’informations sur ADFS

SDK ADFS SDK ADFS sursur MSDN MSDN

http://msdn.microsoft.com/library/en-us/adfs/adfs/portal.asphttp://msdn.microsoft.com/library/en-us/adfs/adfs/portal.asp .NET Show .NET Show « « ADFSADFS » »

http://msdn.microsoft.com/theshow/episode047/default.asphttp://msdn.microsoft.com/theshow/episode047/default.asp

RRejoignez les discussions surejoignez les discussions sur http://www.identityblog.comhttp://www.identityblog.com

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

Pour plus d’informations sur AzMan

« Designing Application-Managed Authorization »« Designing Application-Managed Authorization »

http://msdn.microsoft.com/library/en-us/dnbda/html/DAMAZ.ahttp://msdn.microsoft.com/library/en-us/dnbda/html/DAMAZ.aspsp

« Role-Based Access Control for Multi-tier Applications Using « Role-Based Access Control for Multi-tier Applications Using Authorization Manager »Authorization Manager »

http://technet2.microsoft.com/WindowsServer/en/Library/72bhttp://technet2.microsoft.com/WindowsServer/en/Library/72b55950-86cc-4c7f-8fbf-3063276cd0b61033.mspx55950-86cc-4c7f-8fbf-3063276cd0b61033.mspx

« Developing Identity-Aware ASP.NET Applications  », Microsoft « Developing Identity-Aware ASP.NET Applications  », Microsoft Identity and Access Management Series (Identity and Access Management Series (http://go.microsoft.com/fwlink/?LinkId=14841http://go.microsoft.com/fwlink/?LinkId=14841))

http://www.microsoft.com/technet/security/topics/identitymahttp://www.microsoft.com/technet/security/topics/identitymanagement/idmanage/P3ASPD.mspxnagement/idmanage/P3ASPD.mspx

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

Microsoft FranceMicrosoft France18, avenue du Québec18, avenue du Québec

91 957 Courtaboeuf Cedex91 957 Courtaboeuf Cedex

www.microsoft.com/france

0 825 827 8290 825 827 829

[email protected]@microsoft.com