Procédure pas à pas sur les revendications : création de l’authentification par formulaire pour les applications Web SharePoint 2010 basées sur des revendications à l’aide de fournisseurs d’appartenances et de rôles SQL ASP.NET
Résumé : découvrez comment créer une authentification par formulaire pour des applications Web basées sur des revendications à l’aide de fournisseurs d’appartenances et de rôles SQL ASP.NET.
Dernière modification : vendredi 18 janvier 2013
S’applique à : Business Connectivity Services | Open XML | SharePoint Designer 2010 | SharePoint Foundation 2010 | SharePoint Online | SharePoint Server 2010 | Visual Studio
Dans cet article
Vue d’ensemble de l’authentification d’applications Web basées sur des revendications à l’aide de fournisseurs d’appartenances et de rôles SQL ASP.NET
Étape 1 : création d’une application Web SharePoint
Étape 2 : préparation de la base de données afin d’utiliser un fournisseur d’appartenances et de rôles ASP.NET pour l’application Web
Étape 3 : configuration d’un fournisseur d’appartenances et de rôles pour l’application Web SharePoint
Étape 4 : ajout d’utilisateurs et de rôles à la base de données du fournisseur d’appartenances et de rôles
Étape 5 : test de l’authentification par formulaire
Étape 6 : (facultatif) résolution des erreurs de configuration et d’exception non gérée
Étape 7 : affichage des revendications
Étape 8 : ajout d’utilisateurs et de rôles
Conclusion
Ressources supplémentaires
Auteur : Andy Li, Microsoft Corporation
Contenu
Vue d’ensemble de l’authentification d’applications Web basées sur des revendications à l’aide de fournisseurs d’appartenances et de rôles SQL ASP.NET
Étape 1 : création d’une application Web SharePoint
Étape 2 : préparation de la base de données afin d’utiliser un fournisseur d’appartenances et de rôles ASP.NET pour l’application Web
Étape 3 : configuration d’un fournisseur d’appartenances et de rôles pour l’application Web SharePoint
Étape 4 : ajout d’utilisateurs et de rôles à la base de données du fournisseur d’appartenances et de rôles
Étape 5 : test de l’authentification par formulaire
Étape 6 : (facultatif) résolution des erreurs de configuration et d’exception non gérée
Étape 7 : affichage des revendications
Étape 8 : ajout d’utilisateurs et de rôles
Conclusion
Ressources supplémentaires
Code à télécharger : ClaimsExample-CreateFormsBasedAuthentication(éventuellement en anglais)
Vue d’ensemble de l’authentification d’applications Web basées sur des revendications à l’aide de fournisseurs d’appartenances et de rôles SQL ASP.NET
Dans cette procédure pas à pas, vous créez une application Web basée sur des revendications à l’aide d’un fournisseur d’appartenances et de rôles Microsoft ASP.NET en guise de fournisseur d’authentification.
L’authentification par formulaire fournit la gestion des identités personnalisées dans Microsoft SharePoint 2010 en implémentant un fournisseur d’appartenances, qui définit les interfaces permettant d’identifier et d’authentifier les utilisateurs individuels, et un gestionnaire de rôles, qui définit les interfaces pour le regroupement des utilisateurs individuels en groupes logiques ou rôles.
Cet article suppose que vous êtes familiarisé avec l’authentification par formulaire. Pour plus d’informations sur l’authentification par formulaire, voir Authentification par formulaire dans les produits et technologies SharePoint (partie 1) : introduction.
Étape 1 : création d’une application Web SharePoint
Notes
Si vous copiez simplement la commande de ligne de commande à partir de cet article et que vous essayez de l’exécuter, vous risquez d’obtenir des erreurs. En effet, certains caractères sont convertis en caractères spéciaux pendant la mise en forme. Par exemple, un trait d’union (-) copié à partir de cet article risque de ne pas fonctionner correctement dans une fenêtre d’invite de commandes.
Pour créer une application Web SharePoint
Accédez à la page d’Administration centrale de SharePoint 2010.
Dans la section Gestion des applications, cliquez sur Gérer les applications Web.
Dans le Ruban, cliquez sur Nouveau.
Dans la boîte de dialogue Créer une application Web, sous Authentification, cliquez sur Authentification par revendications.
Dans la section Site Web IIS, sous Créer un nouveau site Web IIS, affectez au champ Nom la valeur SharePoint – Authentification par formulaire SQL.
Affectez au numéro de Port la valeur 200.
Dans la section Types d’authentification basée sur les revendications, procédez comme suit :
Sélectionnez Activer l’authentification par formulaire.
Désactivez les autres modes d’authentification.
Dans les champs du fournisseur d’appartenances et du gestionnaire de rôles, entrez les noms suivants :
Nom du fournisseur d’appartenances ASP.NET : aspnetmembership
Nom du gestionnaire de rôles ASP.NET : aspnetrolemanager
Notes
Nous n’avons pas encore configuré les fournisseurs d’appartenances et de rôles ; nous allons les créer au cours des étapes suivantes.
Attribuez à l’URL la valeur suivante : http://intranet.contoso.com:200.
Dans la section Nom de la base de données et authentification, nommez la base de données WSS_Content_200.
Conservez les autres paramètres par défaut.
Cliquez sur OK pour créer l’application Web.
Étape 2 : préparation de la base de données afin d’utiliser un fournisseur d’appartenances et de rôles ASP.NET pour l’application Web
Dans cette étape, nous préparons manuellement la base de données Microsoft SQL Server pour les fournisseurs d’appartenances et de rôles ASP.NET. Il existe également des outils qui permettent d’effectuer cette configuration. Nous allons parcourir les étapes manuellement afin que vous compreniez mieux les différents éléments de fournisseur impliqués dans la configuration.
Notes
Le fournisseur d’appartenances Microsoft SQL Server stocke les informations utilisateur dans une base de données SQL Server. Vous pouvez créer votre magasin d’utilisateurs SQL Server manuellement en exécutant Aspnet_regsql.exe depuis la ligne de commande. Vous pouvez également exécuter Aspnet_regsql.exe en mode Assistant (voir Outil d’enregistrement SQL Server ASP.NET (Aspnet_regsql.exe)) ou utiliser l’outil Configuration ASP.NET. L’outil Configuration ASP.NET est disponible sous le menu Site Web dans Microsoft Visual Studio.
Pour préparer la base de données afin d’utiliser un fournisseur d’appartenances et de rôles ASP.NET pour l’application Web
Démarrez Microsoft SQL Server Management Studio et connectez-vous à l’instance de votre serveur local.
Ajoutez une nouvelle base de données nommée aspnetdb_claim, comme l’illustre la figure 1.
Figure 1. Création d’une base de données nommée aspnetdb_claim
Utilisez aspnet_regsql.exe pour créer la base de données d’appartenances. Ouvrez une fenêtre d’invite de commandes. Exécutez la commande de ligne de commande suivante pour accéder au répertoire Microsoft .NET Framework 2.0.
cd C:\Windows\Microsoft.NET\Framework64\v2.0.50727
Exécutez la commande suivante, comme l’illustre la figure 2.
aspnet_regsql -S DEMO2010A -E -A mr –d aspnetdb_claim
-S Spécifie le serveur. Dans cet exemple, le serveur est local.
-E Spécifie que l’authentification Windows doit être utilisée pour la connexion à SQL Server.
-A mr Spécifie que la fonctionnalité d’appartenance et de rôle doit être ajoutée.
-d Spécifie le nom de la base de données.
Figure 2. Création de la base de données d’appartenances à l’aide de l’outil aspnet_regsql.exe
Développez le nœud aspnetdb_claim et vérifiez que toutes les tables sont créées.
Figure 3. Nœud aspnetdb_claim étendu
Accordez l’accès à la base de données au compte de pool d’applications de votre application Web. Étant donné que votre application Web utilise contoso\adminstrator pour la connexion, elle doit disposer automatiquement d’un accès complet à cette base de données.
Étape 3 : configuration d’un fournisseur d’appartenances et de rôles pour l’application Web SharePoint
Vous devez modifier trois fichiers web.config :
Administration centrale : pour autoriser la sélection pour les collections de sites.
Service d’émission de jeton de sécurité : pour autoriser la connexion et pour l’émission des jetons.
Application Web avec authentification par formulaire : pour autoriser la sélection sur l’application Web locale.
Pour configurer un fournisseur d’appartenances et de rôles pour l’application Web SharePoint
Dans le fichier web.config pour l’application Web avec authentification par formulaire SQL, ajoutez la chaîne de connexion suivante après la balise </configSections> fermante.
Notes
Si vous effectuez le collage à partir de l’exemple suivant, il est possible que des caractères de tabulation ou des espaces soient ajoutés. Lors de la modification du fichier web.config, veillez à ne pas ajouter de caractères de tabulation ou d’espaces.
Une fois que vous avez ajouté la chaîne de connexion, votre fichier web.config doit ressembler à l’exemple suivant.
<connectionStrings> <add name="MyLocalSQLServer" connectionString="Initial Catalog=aspnetdb_claim;data source=DEMO2010A;Integrated Security=SSPI;" /> </connectionStrings>
Répétez l’étape précédente pour le site Web Administration centrale et le site Web SecurityTokenServiceApplication.
Le site Web SecurityTokenServiceApplication se trouve sous le site Web Services Web SharePoint, comme l’illustre la figure 4.
Figure 4. Emplacement du site Web SecurityTokenServiceApplication
Revenez au site Web d’application Web avec authentification par formulaire (http://intranet.contoso.com:200) et rouvrez le fichier web.config.
Ajoutez le code suivant dans la balise <Providers>, située sous la balise <membership> (figure 5).
<add name="aspnetmembership" connectionStringName="MyLocalSQLServer" applicationName="MyAppName" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
Figure 5. Valeurs de fournisseur dans le fichier web.config de l’application Web avec authentification par formulaire
Ajoutez l’élément de gestionnaire de rôles suivant à la balise <Providers>, sous la section <RoleManager> (figure 6).
<add name="aspnetrolemanager" type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="MyLocalSQLServer" applicationName="MyAppName" />
Figure 6. Valeurs de gestionnaire de rôles dans le fichier web.config de l’application Web avec authentification par formulaire
Notes
L’attribut applicationName spécifie le nom d’application de notre application Web ; il s’agit du nom que le fournisseur d’appartenances et de rôles ASP.NET utilise pour identifier les utilisateurs de manière unique.
Répétez les étapes 1 à 5 de cette procédure pour le site Web Administration centrale et le site Web SecurityTokenServiceApplication.
Notes
Étant donné que le fichier web.config pour le site Web de service d’émission de jeton de sécurité SharePoint ne contient pas la section <system.web>, vous devez ajouter celle-ci manuellement. (Le site Web SecurityTokenServiceApplication se trouve sous le site Web Services Web SharePoint, comme l’illustre la figure 4.) Pour voir un exemple des fichiers web.config complets, ouvrez les fichiers de configuration inclus dans le téléchargement (ClaimsExample-CreateFormsBasedAuthentication(éventuellement en anglais)) qui accompagne cet article.
Étape 4 : ajout d’utilisateurs et de rôles à la base de données du fournisseur d’appartenances et de rôles
Ensuite, ajoutez des utilisateurs et des rôles à la base de données du fournisseur d’appartenances et de rôles.
Pour ajouter des utilisateurs et des rôles à la base de données du fournisseur d’appartenances et de rôles
Lancez Microsoft SQL Server Management Studio et exécutez la requête suivante sur la base de données aspnetdb_claim, comme l’illustre la figure 7.
declare @now datetime set @now= GETDATE() exec aspnet_Membership_CreateUser 'MyAppName','admin1','pass@word1', '','admin1@contoso.com','','',1,@now,@now,0,0,null
Figure 7. Interrogation de la base de données aspnetdb_claim
Exécutez la requête suivante pour ajouter l’utilisateur admin1 au rôle Admin, comme l’illustre la figure 8.
EXEC aspnet_Roles_CreateRole 'MyAppName', 'Admin' EXEC aspnet_UsersInRoles_AddUsersToRoles 'MyAppName', 'admin1', 'Admin', 8
Figure 8. Ajout de l’utilisateur admin1 au rôle Admin
Étape 5 : test de l’authentification par formulaire
Ensuite, testez l’authentification par formulaire.
Pour tester l’authentification par formulaire
Sur le site Web Administration centrale, sous Gestion des applications, cliquez sur Créer une collection de sites.
Dans la liste déroulante Application Web, sélectionnez l’application Web avec authentification par formulaire http://intranet.contoso.com:200 (figure 9).
Figure 9. Configuration de l’application Web
Attribuez au champ Titre la valeur Site avec authentification par formulaire.
Dans le champ Nom d’utilisateur, cliquez sur Parcourir, puis recherchez l’utilisateur que nous avons ajouté.
Tapez admin1 dans la zone de recherche, puis cliquez sur le bouton de recherche, comme l’illustre la figure 10.
Figure 10. Sélecteur de personnes
Double-cliquez sur l’utilisateur admin1 dans la zone des résultats. Cette opération active la page de création de collection de sites.
Cliquez sur OK pour créer la collection de sites.
Accédez à http://intranet.contoso.com:200. La page de connexion doit apparaître, comme l’illustre la figure 11.
Figure 11. Page de connexion
Tapez les informations d’identification suivantes, puis cliquez sur Connexion.
Nom d’utilisateur : admin1
Mot de passe : pass@word1
Une fois connecté, vous pouvez constater que le nom d’utilisateur dans le coin supérieur droit apparaît sous le nom admin1, comme l’illustre la figure 12.
Figure 12. Site SharePoint après authentification de l’utilisateur admin1
Étape 6 : (facultatif) résolution des erreurs de configuration et d’exception non gérée
La figure 13 montre le message d’erreur qui apparaît si les configurations entrées dans le fichier web.config sont erronées. Gardez à l’esprit que vous devez modifier tous les fichiers web.config pour tous les processus SharePoint. Le téléchargement qui accompagne cet article contient trois fichiers web.config que vous devez référencer. La figure 14 illustre une erreur d’exception non gérée.
Figure 13. Erreur de configuration du fournisseur d’appartenances
Figure 14. Erreur d’exception non gérée
Si vous obtenez une erreur d’exception non gérée, vous devez ajouter la valeur includeExceptionDetailInFaults à la section <serviceBehaviors>, comme l’illustre la figure 15.
Figure 15. Ajout de la valeur includeExceptionDetailInFaults à la section <serviceBehaviors>
Étape 7 : affichage des revendications
Ensuite, affichez les revendications.
Pour afficher les revendications
Créez un composant WebPart et remplacez la fonction RenderContent par le code suivant. Vous devrez peut-être ajouter une référence à Microsoft.IdentityModel.dll et ajouter l’espace de noms Microsoft.IdentityModel.Claims.
protected override void RenderContents(HtmlTextWriter writer) { try { IClaimsIdentity currentIdentity = System.Threading.Thread.CurrentPrincipal.Identity as IClaimsIdentity; writer.Write("---Subject:" + currentIdentity.Name + "<BR/>"); foreach (Claim claim in currentIdentity.Claims) { writer.Write(" ClaimType: " + claim.ClaimType + "<BR/>"); writer.Write(" ClaimValue: " + claim.Value + "<BR/"); writer.Write(" ClaimValueTypes: " + claim.ValueType + "<BR/>"); writer.Write(" Issuer: " + claim.Issuer + "<BR/"); writer.Write(" OriginalIssuer: " + claim.OriginalIssuer + "<BR/>"); writer.Write(" Properties: " + claim.Properties.Count.ToString() + "<BR/>"); } } catch (Exception ex) { writer.Write("exception occurred: " + ex.Message); } }
Déployez la solution et ajoutez le composant WebPart à la page d’accueil de l’application Web du site avec authentification par formulaire (figure 16).
Figure 16. Informations sur le type et la valeur de la revendication
Notez les deux revendications suivantes.
ClaimType: https://schemas.microsoft.com/sharepoint/2009/08/claims/userid ClaimValue: 0#.f|aspnetmembership|admin1 ClaimType: https://schemas.microsoft.com/ws/2008/06/identity/claims/role ClaimValue: Admin
La revendication de rôle est récupérée du fournisseur de rôles ASP.NET. Admin est le nom du rôle que nous avons affecté à l’utilisateur ; le rôle est admin1 lorsque nous exécutons la requête SQL pour ajouter le rôle pour l’utilisateur.
Étape 8 : ajout d’utilisateurs et de rôles
Ensuite, ajoutez des utilisateurs et des rôles.
Pour ajouter des utilisateurs et des rôles
Exécutez la requête SQL suivante pour ajouter des utilisateurs et des rôles au fournisseur.
declare @now datetime set @now= GETDATE() exec aspnet_Membership_CreateUser 'MyAppName','bob','pass@word1', '','bob@contoso.com','','',1,@now,@now,0,0,null exec aspnet_Membership_CreateUser 'MyAppName','mary','pass@word1', '','mary@contoso.com','','',1,@now,@now,0,0,null exec aspnet_Membership_CreateUser 'MyAppName','jack','pass@word1', '','jack@contoso.com','','',1,@now,@now,0,0,null EXEC aspnet_Roles_CreateRole 'MyAppName', 'Employee' EXEC aspnet_Roles_CreateRole 'MyAppName', 'TeamManager' EXEC aspnet_Roles_CreateRole 'MyAppName', 'CEO' EXEC aspnet_UsersInRoles_AddUsersToRoles 'MyAppName', 'bob', 'Employee', 8 EXEC aspnet_UsersInRoles_AddUsersToRoles 'MyAppName', 'mary', 'TeamManager', 8 EXEC aspnet_UsersInRoles_AddUsersToRoles 'MyAppName', 'jack', 'CEO', 8 EXEC aspnet_UsersInRoles_AddUsersToRoles 'MyAppName', 'jack', 'Admin', 8
Dans le Ruban, sous Actions du site, sélectionnez Autorisations de site, puis cliquez sur Accorder des autorisations. Cliquez sur l’icône Parcourir pour ouvrir la boîte de dialogue Sélecteur de personnes. Assurez-vous que vous êtes toujours connecté sous le compte admin1.
Sélectionnez Authentification par formulaire, comme l’illustre la figure 17.
Figure 17. Affichage des résultats de la recherche par le sélecteur de personnes
Entrez bob dans la zone de recherche, comme l’illustre la figure 17, puis cliquez surle bouton de recherche. Un enregistrement doit être retourné.
Double-cliquez sur bob pour l’ajouter à la zone Ajouter ->.
Cliquez sur OK.
Répétez les étapes 4 à 6 pour ajouter l’utilisateur mary.
Sélectionnez FBA Site Members dans la zone déroulante, comme l’illustre la figure 18.
Figure 18. Octroi de l’autorisation aux utilisateurs
Cliquez sur OK.
Dans le Ruban, cliquez sur Accorder des autorisations.
Cliquez sur Parcourir pour lancer le sélecteur de personnes.
De nouveau, sélectionnez Authentification par formulaire sur le côté gauche, comme illustré dans la figure 17.
Tapez ceo dans la zone de recherche. Un enregistrement doit être retourné, comme l’illustre la figure 19.
Notes
Dans l’exemple fourni dans cet article, ceo est un rôle issu du fournisseur de rôles ASP.NET. Nous avons ajouté ce rôle au début de l’étape 8, en utilisant une requête SQL.
Figure 19. Recherche du rôle intitulé CEO
Double-cliquez sur ceo pour l’ajouter à la page Accorder des autorisations.
Attribuez au rôle ceo l’autorisation contrôle total, comme l’illustre la figure 20.
Figure 20. Attribution de l’autorisation contrôle total au rôle CEO
Cliquez sur admin1 dans le coin supérieur droit de la page, puis sélectionnez Se connecter en tant qu’utilisateur différent, comme l’illustre la figure 21.
Figure 21. Connexion en tant qu’utilisateur différent
Essayez de vous connecter au site en tant qu’utilisateur bob, puis en tant qu’utilisateur mary. Notez que le composant WebPart affiche la revendication de rôle adéquate à partir du fournisseur de rôles.
Essayez de vous connecter en tant qu’utilisateur jack. Notez que l’utilisateur jack obtient les deux revendications suivantes.
ClaimType : https://schemas.microsoft.com/ws/2008/06/identity/claims/role
ClaimValue : Admin
ClaimType : https://schemas.microsoft.com/ws/2008/06/identity/claims/role
ClaimValue : ceo
Les deux revendications correspondent aux rôles que nous lui avons précédemment affectés dans la requête SQL. Étant donné que nous avons accordé l’autorisation au rôle ceo, tant que l’utilisateur possède une revendication ceo, il doit être en mesure de se connecter au site et de détenir l’autorisation correspondante.
Conclusion
Dans cette procédure pas à pas, vous avez appris à créer une authentification par formulaire pour des applications Web basées sur des revendications à l’aide de fournisseurs d’appartenances et de rôles ASP.NET.
Ressources supplémentaires
Pour plus d’informations, consultez les ressources suivantes :
Code à télécharger : ClaimsExample-CreateFormsBasedAuthentication(éventuellement en anglais)
Blog de Steve Peschka : Share-n-dipity(éventuellement en anglais)
Centre de ressources sur la sécurité | SharePoint 2010(éventuellement en anglais)
Applets de commande pour la sécurité (SharePoint Foundation 2010)
Blogs, centres de ressources et forums SharePoint sur la sécurité
Fournisseur de revendications dans Microsoft SharePoint 2010
Planification, mise à niveau, migration, administration, configuration et installation
Sécurité dans SharePoint 2010 - Présentations vidéos(éventuellement en anglais)
Formation avancée pour les développeurs SharePoint 2010(éventuellement en anglais)