Partager via


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

Cliquez pour obtenir le code 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

  1. Accédez à la page d’Administration centrale de SharePoint 2010.

  2. Dans la section Gestion des applications, cliquez sur Gérer les applications Web.

  3. Dans le Ruban, cliquez sur Nouveau.

  4. Dans la boîte de dialogue Créer une application Web, sous Authentification, cliquez sur Authentification par revendications.

  5. 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.

  6. Affectez au numéro de Port la valeur 200.

  7. 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.

  8. 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.

  9. Attribuez à l’URL la valeur suivante : http://intranet.contoso.com:200.

  10. Dans la section Nom de la base de données et authentification, nommez la base de données WSS_Content_200.

  11. Conservez les autres paramètres par défaut.

  12. 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

  1. Démarrez Microsoft SQL Server Management Studio et connectez-vous à l’instance de votre serveur local.

  2. 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

    Création d’une base de données

  3. 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

  4. 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

    Créer la base de données de membres avec aspnet_regsql.exe

  5. Développez le nœud aspnetdb_claim et vérifiez que toutes les tables sont créées.

    Figure 3. Nœud aspnetdb_claim étendu

    Nœud aspnetdb_claim étendu

  6. 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

  1. 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>
    
  2. 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

    Emplacement du site Web SecurityTokenServiceApplication

  3. Revenez au site Web d’application Web avec authentification par formulaire (http://intranet.contoso.com:200) et rouvrez le fichier web.config.

  4. 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

    Valeurs du fournisseur

  5. 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

    Valeurs du gestionnaire de rôles

    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.

  6. 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

  1. 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

    Interrogation de la base de données aspnetdb_claim

  2. 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

    Ajout de l’utilisateur admin1 au rôle administrateur

Étape 5 : test de l’authentification par formulaire

Ensuite, testez l’authentification par formulaire.

Pour tester l’authentification par formulaire

  1. Sur le site Web Administration centrale, sous Gestion des applications, cliquez sur Créer une collection de sites.

  2. 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

    Configuration de l’application Web

  3. Attribuez au champ Titre la valeur Site avec authentification par formulaire.

  4. Dans le champ Nom d’utilisateur, cliquez sur Parcourir, puis recherchez l’utilisateur que nous avons ajouté.

  5. 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

    Sélecteur de personnes

  6. 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.

  7. Cliquez sur OK pour créer la collection de sites.

  8. 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

    Page de connexion

  9. Tapez les informations d’identification suivantes, puis cliquez sur Connexion.

    • Nom d’utilisateur : admin1

    • Mot de passe : pass@word1

  10. 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

    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

Erreur de configuration du fournisseur d’appartenances

Figure 14. Erreur d’exception non gérée

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>

Ajout de la valeur includeExceptionDetailInFaults

Étape 7 : affichage des revendications

Ensuite, affichez les revendications.

Pour afficher les revendications

  1. 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);
                }
    
            }
    
  2. 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

    Informations sur le type de demande et la valeur de la demande

  3. 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

  1. 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 
    
  2. 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.

  3. 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

    Affichage des résultats de la recherche par le sélecteur de personnes

  4. Entrez bob dans la zone de recherche, comme l’illustre la figure 17, puis cliquez surle bouton de recherche. Un enregistrement doit être retourné.

  5. Double-cliquez sur bob pour l’ajouter à la zone Ajouter ->.

  6. Cliquez sur OK.

  7. Répétez les étapes 4 à 6 pour ajouter l’utilisateur mary.

  8. Sélectionnez FBA Site Members dans la zone déroulante, comme l’illustre la figure 18.

    Figure 18. Octroi de l’autorisation aux utilisateurs

    Octroi de l’autorisation aux utilisateurs

  9. Cliquez sur OK.

  10. Dans le Ruban, cliquez sur Accorder des autorisations.

  11. Cliquez sur Parcourir pour lancer le sélecteur de personnes.

  12. De nouveau, sélectionnez Authentification par formulaire sur le côté gauche, comme illustré dans la figure 17.

  13. 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

    Recherche du rôle intitulé PDG

  14. Double-cliquez sur ceo pour l’ajouter à la page Accorder des autorisations.

  15. 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

    Attribution de l’autorisation contrôle total au rôle PDG

  16. 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

    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.

  17. 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 :