Partager via


Procédure pas à pas concernant les revendications : création de fournisseurs de connexions approuvés (connexion SAML) pour SharePoint 2010

Résumé : découvrez comment créer un service d’émission de jeton de sécurité (STS, Security Token Service) personnalisé, puis configurer une relation d’approbation entre une batterie SharePoint 2010 et le service STS personnalisé.

Dernière modification : vendredi 12 août 2011

S’applique à : Business Connectivity Services | Open XML | SharePoint Designer 2010 | SharePoint Foundation 2010 | SharePoint Online | SharePoint Server 2010 | Visual Studio

Dans cet article
Rôle d’un fournisseur de connexions approuvé
Scénario : activation de l’accès à un site SharePoint hébergé sur un extranet
Étape 1 : création du projet WingtipSTS
Étape 2 : test des revendications du projet WingtipSTS
Étape 3 : définition des revendications prises en charge par le projet WingtipSTS
Étape 4 : configuration de l’approbation dans SharePoint
Étape 5 : création d’une application Web qui utilise le projet WingtipSTS
Étape 6 : test de l’authentification du projet WingtipSTS
Conclusion
Ressources supplémentaires

Auteur :  Andy Li, Microsoft Corporation

Contenu

  • Rôle d’un fournisseur de connexions approuvé

  • Scénario : activation de l’accès à un site SharePoint hébergé sur un extranet

  • Étape 1 : création du projet WingtipSTS

  • Étape 2 : test des revendications du projet WingtipSTS

  • Étape 3 : définition des revendications prises en charge par le projet WingtipSTS

  • Étape 4 : configuration de l’approbation dans SharePoint

  • Étape 5 : création d’une application Web qui utilise le projet WingtipSTS

  • Étape 6 : test de l’authentification du projet WingtipSTS

  • Conclusion

  • Ressources supplémentaires

Cliquez pour obtenir le code Téléchargez le code : Exemple de revendications - fournisseur de connexions approuvé(éventuellement en anglais)

Rôle d’un fournisseur de connexions approuvé

Au cours de cette procédure pas à pas, vous allez créer un service d’émission de jeton de sécurité (STS, Security Token Service) personnalisé, puis configurer une relation d’approbation entre une batterie Microsoft SharePoint 2010 et le service STS personnalisé. Ce dernier assume la fonction de fournisseur d’authentification. Lorsque des utilisateurs se connectent au site SharePoint, ils sont d’abord dirigés vers la page d’ouverture de session du service STS personnalisé. Ils sont ensuite redirigés vers SharePoint après l’authentification.

Notes

Un fournisseur de connexions approuvé est un service STS externe (à SharePoint) approuvé par SharePoint. Pour obtenir les définitions des termes relatifs aux revendications, voir Définitions des termes de l’identité basée sur des demandes.

La connexion passive SAML décrit le processus de connexion. Lorsqu’une connexion à une application Web est configurée de façon à accepter les jetons provenant d’un fournisseur de connexions approuvé, ce type de connexion porte le nom de connexion passive SAML. Pour plus d’informations, voir Revendications entrantes : connexion à SharePoint.

Scénario : activation de l’accès à un site SharePoint hébergé sur un extranet

La société fictive Contoso possède un site SharePoint hébergé sur un extranet, auquel ses employés peuvent se connecter à distance depuis leur domicile ou lors de leurs déplacements professionnels. Contoso possède une société partenaire nommée Wingtip, dont les employés travaillent sur un projet avec Contoso et qui doivent pouvoir accéder à des documents du site SharePoint.

Pour permettre aux employés de Wingtip de se connecter au site SharePoint hébergé par Contoso, Wingtip a créé un service STS qui peut servir à authentifier ses employés. Sur le site Contoso, l’administrateur de la batterie a configuré la relation d’approbation entre la batterie SharePoint et le service STS de Wingtip. Lorsque des employés de Wingtip tentent de se connecter au site SharePoint de Contoso, ils sont d’abord dirigés vers leur service STS afin de s’authentifier, puis le service STS les redirige vers le site SharePoint de Contoso. Étant donné que la batterie SharePoint approuve le service STS de Wingtip, elle approuve également le jeton de sécurité émis par ce service.

Étape 1 : création du projet WingtipSTS

  1. Démarrez Visual Studio 2010.

  2. Dans le menu Fichier, cliquez sur Nouveau projet.

  3. Dans la boîte de dialogue Nouveau projet, procédez comme suit :

    1. Dans le volet gauche, sélectionnez Autres types de projets, cliquez sur Solution Visual Studio, puis sélectionnez Nouvelle solution sur la droite, comme illustré à la Figure 1.

    2. Dans Emplacement, tapez C:\StudentFiles\LabFiles\Module_6\Lab.

    3. Comme Nom de la solution, tapez TrustedLogin.

      Figure 1. Boîte de dialogue Nouveau projet dans Visual Studio

      Boîte de dialogue Nouveau projet dans Visual Studio

  4. Dans l’Explorateur de solutions, cliquez avec le bouton droit sur la solution TrustedLogin, cliquez sur Ajouter, puis sur Nouveau site Web.

  5. Dans la boîte de dialogue Ajouter un nouveau site Web, procédez comme suit :

    1. Sélectionnez le modèle Site Web de service d’émission de jeton de sécurité ASP.NET.

    2. Pour Emplacement Web, sélectionnez Système de fichiers et affectez la valeur C:\StudentFiles\LabFiles\Module_6\Lab\TrustedLogin\WingtipSTS.

      Figure 2. Boîte de dialogue Ajouter un nouveau site Web dans Visual Studio

      Boîte de dialogue Ajouter un nouveau site Web dans Visual Studio

  6. Ouvrez le fichier web.config sous le nouveau site Web. Dans la section appSettings, affectez à IssuerName la valeur WingtipSTS.

    Figure 3. Modifier appSettings

    Modifier appSettings

    Notes

    SigningCertificateName (CN=STSTestCert) est le certificat utilisé par WingtipSTS pour signer le jeton de sécurité.

  7. Cliquez sur Démarrer, puis sur Exécuter.

  8. Tapez mmc, puis appuyez sur la touche Entrée.

  9. Dans la console MMC (Microsoft Management Console), cliquez sur Fichier, puis sur Ajouter/Supprimer un composant logiciel enfichable.

  10. Sous le champ Composants logiciels enfichables disponibles dans le volet gauche, cliquez sur Certificats, puis sur Ajouter.

    Figure 4. Console MMC affichant STSTestCert

    MMC affichant le certificat STSTestCert

  11. Dans la boîte de dialogue Composant logiciel enfichable Certificat, cliquez sur Compte d’ordinateur, sur Suivant, puis sélectionnez Ordinateur local

  12. Cliquez sur Terminer, puis sur OK.

    Notes

    Notez que SigningCertificate dans web.config pointe vers le certificat affiché ici comme STSTestCert.

  13. Lors de la configuration de l’approbation entre WingtipSTS et SharePoint, nous devons indiquer à SharePoint quel est le certificat utilisé par WingtipSTS. Pour cela :

    1. Cliquez avec le bouton droit sur STSTestCert, sélectionnez Toutes les tâches, puis cliquez sur Exporter.

    2. Cliquez sur Suivant. Notez que vous ne pouvez exporter que la clé publique à partir de ce certificat.

    3. Cliquez sur Suivant, puis sélectionnez X.509 binaire encodé DER (.cer).

    4. Cliquez sur Suivant. Dans la boîte de dialogue Fichier à exporter, tapez C:\StudentFiles\LabFiles\Module_6\Resources\STSTestCertPub.cert comme nom de fichier.

    5. Cliquez sur Suivant, puis sur Terminer.

  14. Fermez la console MMC.

Étape 2 : test des revendications du projet WingtipSTS

  1. Cliquez avec le bouton droit sur la solution TrustedLogin, cliquez sur Ajouter, puis sur Nouveau site Web.

  2. Dans la boîte de dialogue Ajouter un nouveau site Web, sélectionnez Modèle de site Web ASP.NET prenant en charge les revendications. Pour Emplacement Web, sélectionnez File System et affectez C:\StudentFiles\LabFiles\Module_6\Lab\TestRPWeb comme Valeur, comme illustré à la Figure 5.

    Figure 5. Boîte de dialogue Ajouter un nouveau site Web

    Boîte de dialogue Ajouter un nouveau site Web

  3. Cliquez avec le bouton droit sur le projet TestRPWeb, puis cliquez sur Ajouter une référence STS.

  4. Dans l’Assistant Utilitaire de fédération qui s’affiche, dans la page Bienvenue dans l’Assistant Utilitaire de fédération (voir la Figure 6), cliquez sur Suivant. En réponse au message L’application n’est PAS hébergée sur une connexion https sécurisée, cliquez sur Oui.

    Figure 6. Page Bienvenue dans l’Assistant Utilitaire de fédération

    Bienvenue dans l’Assistant Utilitaire de fédération

  5. Dans la page Service d’émission de jeton de sécurité, cliquez sur Utiliser une option STS existante. Tapez https://localhost:48924/WingtipSTS/FederationMetadata/2007-06/FederationMetadata.xml comme emplacement du document de métadonnées WS-Federation STS, comme illustré à la Figure 7.

    Notes

    Il se peut que cette URL soit différente dans votre environnement. Pour trouver l’URL correcte, cliquez avec le bouton droit sur FederationMetadata.xml sous le dossier FederationMetadata/2007-06 dans votre projet WingtipSTS.

    Figure 7. Page Service d’émission de jeton de sécurité avec option STS

    Boîte de dialogue Options STS

  6. Cliquez sur Suivant, puis sur Oui en réponse au message concernant la connexion non sécurisée.

  7. Dans la page Chiffrement de jeton de sécurité, cliquez sur Aucun chiffrement, comme illustré à la Figure 8.

    Figure 8. Page Chiffrement de jeton de sécurité

    Page de chiffrement des jetons de sécurité

  8. Dans la page Revendications offertes, cliquez sur Suivant, comme illustré à la Figure 9.

    Notes

    Cette boîte de dialogue ne répertorie pas les types de revendications que vous avez définis ; cela ne pose pas de problème.

    Figure 9. Revendications offertes dans la page Revendications offertes

    Demandes proposées sur la page Demandes proposées

  9. Dans la boîte de dialogue Résumé, cliquez sur Terminer.

    Notes

    Les étapes précédentes ajoutent les entités nécessaires dans le fichier web.config du projet WingtipSTS de sorte que le site Web redirige l’utilisateur vers le site WingtipSTS afin de l’authentifier et d’obtenir ses revendications.

  10. Ouvrez le fichier web.config.

  11. Supprimez requestValidationMode="2.0" de l’élément <httpRuntime>.

  12. Compilez le projet TestRPWeb et corrigez les éventuelles erreurs de compilation.

  13. Sous TestRPWeb, cliquez avec le bouton droit sur Default.aspx, puis sélectionnez Afficher dans le navigateur. Vous devriez être redirigé vers la page d’ouverture de session du site WingtipSTS, comme illustré à la Figure 10.

    Notes

    Si vous recevez un message d’erreur Impossible d’afficher la page, vérifiez que WingtipSTS est en cours d’exécution dans Développement Web de Visual Studio.

    Figure 10. Page d’ouverture de session de WingtipSTS

    Page de connexion WingtipSTS

  14. Tapez les informations d’identification suivantes :

    • Nom d’utilisateur : user1@wingtip.com

    • Mot de passe : pass@word1 (Nous ne vérifions pas le mot de passe ; n’importe quel mot de passe fonctionnera.)

  15. Cliquez sur Submit. Vous êtes alors redirigé vers le site TestRPWeb. Default.aspx affiche toutes les revendications renvoyées par WingtipSTS.

    Figure 11. Revendications renvoyées par WingtipSTS

    Demandes retournées par WingtipSTS

Résolution des problèmes de redirection

Il se peut que vous receviez le message d’erreur suivant lorsque WingtipSTS vous redirige vers TestRPWeb :

ID4175 : l’émetteur du jeton de sécurité n’a pas été reconnu par IssuerNameRegistry. Pour accepter des jetons de sécurité de cet émetteur, configurez IssuerNameRegistry de façon à renvoyer un nom valide pour cet émetteur.

Si vous recevez ce message d’erreur, vérifiez que la valeur d’empreinte du STSTestCert dans le fichier web.config, sous TestRPWeb, est correcte.

<issuerNameRegistry 
  type="Microsoft.IdentityModel.Tokens.ConfigurationBasedIssuerNameRegistry,
  Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, 
  PublicKeyToken=31bf3856ad364e35">
  <trustedIssuers>
      <add thumbprint="99fcfe2c70ebb571020ca8aa1b7633dfe1fa1d58" name="https://localhost:48924/WingtipSTS/" />
  </trustedIssuers>
</issuerNameRegistry>

Pour vérifier cela, ouvrez la console MMC Certificat et recherchez l’empreinte sous l’onglet Détails du certificat, comme illustré à la Figure 12.

Figure 12. Boîte de dialogue Certificat montrant l’empreinte

Boîte de dialogue Certificat affichant l’empreinte

Étape 3 : définition des revendications prises en charge par le projet WingtipSTS

  1. Ajoutez un fichier de classe nommé UserInfo.cs au dossier App_Code sous le projet Site Web WingtipSTS.

  2. Ajoutez l’instruction using suivante à UserInfo.cs.

    using Microsoft.IdentityModel.Claims;
    
  3. Ajoutez le code suivant à la fin du fichier UserInfo.cs. La classe WingtipClaimTypes définit les revendications prises en charge par WingtipSTS.

    public class WingtipClaimTypes
    {
        // System.IdentityModel.Claims.ClaimTypes.Email;
        public static string EmailAddress = "https://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress";
        public static string Title = "http://schemas.wingtip.com/sharepoint/2009/08/claims/title";
    }
    
  4. Remplacez la classe UserInfo par le code suivant. Cette classe contient certaines méthodes utilitaires utilisées par WingtipSTS pour extraire les revendications d’un utilisateur et authentifier l’utilisateur en fonction de ses informations d’identification.

    Notes

    Ce code est fourni uniquement à des fins de démonstration. Vous ne devez pas l’utiliser dans un environnement de production.

    public class UserInfo
    {
        // The email address is used as the UserID.
        // Every user has two claims: title and email address. 
        // SharePoint will pick up the email claim and treat it as the identity.
        private static string[] userDB = 
           {
            "user1@wingtip.com:Title:Engineer", 
            "user1@wingtip.com:Email:user1@wingtip.com",
            "user2@wingtip.com:Title:Manager",
            "user2@wingtip.com:Email:user2@wingtip.com",
            "user3@wingtip.com:Title:CEO",
            "user3@wingtip.com:Email:user3@wingtip.com",
           };
    
        // Manually construct a list of users. In a production environment,
        // you should look up a directory service or database 
        // to retrieve the user information.
        public static List<string> GetAllUsers()
        {
            List<string> allUsers = new List<string>();
            // Adding forms-based users.
            allUsers.Add("user1@wingtip.com");
            allUsers.Add("user2@wingtip.com");
            allUsers.Add("user3@wingtip.com");
            return allUsers;
        }
    
        public static bool AuthenticateUser(string username, string password)
        {
            // Add your authentication logic here.
            return true;
        }
    
        /// <summary>
        /// A real implementation should look up a directory service or database 
        /// to retrieve a user's claim. The code below is 
        /// used only for demonstration purposes.
        /// </summary>
        /// <param name="username"></param>
        /// <returns></returns>
        public static List<Claim> GetClaimsForUser(string username)
        {
            List<Claim> userClaims = new List<Claim>();
            foreach (string userInfo in userDB)
            {
                string[] claims = userInfo.Split(new string[] { ":" }, StringSplitOptions.RemoveEmptyEntries);
                if (username == claims[0])
                {
                    userClaims.Add(new Claim(GetClaimTypeForRole(claims[1]), claims[2],
                Microsoft.IdentityModel.Claims.ClaimValueTypes.String));
                }
            }
    
            return userClaims;
        }
    
        public static string GetClaimTypeForRole(string roleName)
        {
            if (roleName.Equals("Title", StringComparison.OrdinalIgnoreCase))
                return WingtipClaimTypes.Title;
            else if (roleName.Equals("Email", StringComparison.OrdinalIgnoreCase))
                return WingtipClaimTypes.EmailAddress;
            else
                throw new Exception("Claim Type not found!");
        }
    
    }
    
  5. Le code du fichier UserInfo.cs ressemble maintenant à ce qui suit.

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using Microsoft.IdentityModel.Claims;
    
    public class WingtipClaimTypes
    {
        // System.IdentityModel.Claims.ClaimTypes.Email;
        public static string EmailAddress = 
                "https://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress";
        public static string Title = "http://schemas.wingtip.com/sharepoint/2009/08/claims/title";
    }
    
    public class UserInfo
    {
        // The email address is used as the UserID.
        // Every user has two claims: title and email address. 
        // SharePoint will pick up the email claim and treat it as identity.
        private static string[] userDB = 
           {
            "user1@wingtip.com:Title:Engineer", 
            "user1@wingtip.com:Email:user1@wingtip.com",
            "user2@wingtip.com:Title:Manager",
            "user2@wingtip.com:Email:user2@wingtip.com",
            "user3@wingtip.com:Title:CEO",
            "user3@wingtip.com:Email:user3@wingtip.com",
           };
    
        // Manually construct a list of users. In a production environment,
        // you should look up a directory service or database to retrieve 
        // the user information.
        public static List<string> GetAllUsers()
        {
            List<string> allUsers = new List<string>();
            //Adding forms-based users.
            allUsers.Add("user1@wingtip.com");
            allUsers.Add("user2@wingtip.com");
            allUsers.Add("user3@wingtip.com");
            return allUsers;
        }
    
        public static bool AuthenticateUser(string username, string password)
        {
            // Add your authentication logic here.
            return true;
        }
    
        /// <summary>
        /// A real implementation should look up a directory service or database 
        /// to retrieve a user's claim. The code below is used 
        /// only for demonstration purposes.
        /// </summary>
        /// <param name="username"></param>
        /// <returns></returns>
        public static List<Claim> GetClaimsForUser(string username)
        {
            List<Claim> userClaims = new List<Claim>();
            foreach (string userInfo in userDB)
            {
                string[] claims = userInfo.Split(new string[] { ":" }, 
                StringSplitOptions.RemoveEmptyEntries);
                if (username == claims[0])
                {
                    userClaims.Add(new Claim(GetClaimTypeForRole(claims[1]), claims[2], 
                    Microsoft.IdentityModel.Claims.ClaimValueTypes.String));
                }
            }
    
            return userClaims;
        }
    
        public static string GetClaimTypeForRole(string roleName)
        {
            if (roleName.Equals("Title", StringComparison.OrdinalIgnoreCase))
                return WingtipClaimTypes.Title;
            else if (roleName.Equals("Email", StringComparison.OrdinalIgnoreCase))
                return WingtipClaimTypes.EmailAddress;
            else
                throw new Exception("Claim Type not found!");
        }
    
    }
    
  6. Sous App_Code, double-cliquez sur CustomSecurityTokenService.cs pour ouvrir le fichier.

  7. Ajoutez la référence d’espace de noms à System.Collections.

  8. Remplacez la fonction GetOutputClaimsIdentity par le code suivant. Il s’agit de la fonction qui renvoie la revendication de l’utilisateur.

        protected override IClaimsIdentity GetOutputClaimsIdentity( IClaimsPrincipal principal, 
             RequestSecurityToken request, Scope scope )
        {
            if ( null == principal )
            {
                throw new ArgumentNullException( "principal" );
            }
    
            ClaimsIdentity outputIdentity = new ClaimsIdentity();
    
            // Issue custom claims.
            // TODO: Change the claims below to issue custom claims 
            // that are required by your application.
            // Update the application's configuration file to reflect 
            // the new claims requirements.
    
            // outputIdentity.Claims.Add( new Claim( 
                System.IdentityModel.Claims.ClaimTypes.Name, principal.Identity.Name ) );
            // outputIdentity.Claims.Add( new Claim( ClaimTypes.Role, "Manager" ) );
    
            // The Wingtip implementation.
            string username = principal.Identity.Name;
            List<Claim> claims = UserInfo.GetClaimsForUser(username);
    
            foreach (Claim claim in claims)
            {
                outputIdentity.Claims.Add(claim);
            }
    
            return outputIdentity;
        }
    
  9. Compilez le site Web WingtipSTS et corrigez els éventuelles erreurs de compilation.

Étape 4 : configuration de l’approbation dans SharePoint

Le processus de configuration d’approbation entre WingtipSTS et SharePoint consiste principalement à inscrire WingtipSTS en tant qu’objet SPTrustedLoginProvider dans la batterie SharePoint.

  1. Dans le site Administration centrale, dans le volet de navigation gauche, cliquez sur Sécurité.

  2. Sous Sécurité générale, cliquez sur Gérer la relation d’approbation.

  3. Dans le Ruban serveur, cliquez sur Nouveau.

  4. Dans la boîte de dialogue Établir une relation d’approbation, dans la zone de texte Nom, tapez STSTestCert de sorte qu’il soit affiché comme illustré à la Figure 13.

    Figure 13. Établissement de la relation d’approbation dans l’Administration centrale

    Relations d’approbation dans l’administration centrale

  5. Cliquez sur Parcourir, puis recherchez le fichier STSTestCertPub.cer que vous avez exporté précédemment.

  6. Cliquez sur OK.

    Notes

    L’étape 4 fait en sorte que SharePoint approuve tous les certificats associés au certificat racine STSTestCert.

  7. Ajoutez un projet WinForm nommé RegisterSTS à la solution TrustedLogin.

    Notes

    Assurez-vous d’affecter la valeur All CPU à Plateforme cible et la valeur 3.5 à .NET Framework.

  8. Cliquez avec le bouton droit sur le projet RegisterSTS, puis cliquez sur Définir comme projet de démarrage.

  9. Ajoutez un bouton au formulaire et affectez la valeur Inscrire WingtipSTS à la propriété Texte.

  10. Double-cliquez sur le bouton pour accéder à sa fonction gestionnaire d’événement.

  11. Remplacez la fonction Button1_Click par le code suivant. Ce code crée un objet SPTrustedLoginProvider et l’ajoute à la collection SPSecurityTokenServiceManager.TrustedLoginProviders.

    Notes

    Vous pouvez également utiliser des scripts Windows PowerShell pour inscrire un service STS auprès de SharePoint. Pour plus d’informations, voir Applets de commande de sécurité (SharePoint Foundation 2010).

    Le code effectue les opérations suivantes :

    1. Il définit les revendications qui seront reconnues par SharePoint (dans notre exemple, email et title).

    2. idClaim définit le type de revendication utilisé pour identifier un utilisateur de manière unique.

    3. La fonction AddKnownClaimValue de la classe SPTrustedClaimTypeInformation ajoute les valeurs de revendications connues au type de revendication de sorte que vous puissiez les trouver lorsque, ultérieurement, vous effectuerez une recherche de revendication dans le Sélecteur de personnes.

    4. Un objet X509Certificate2 pointe vers la clé publique que nous avons exporté précédemment.

    Sur le constructeur de la classe SPTrustedLoginProvider, pensez à modifier l’URI de votre WingtipSTS (le numéro de port peut être différent ; le WingtipSTS dans notre exemple est hébergé à l’URL https://localhost:48924/WingtipSTS/default.aspx).

    Remarque de mise en gardeAttention

    N’oubliez pas la partie default.aspx dans l’URL.

    Vous pouvez créer un objet SPClaimProvider personnalisé pour votre objet SPTrustedLoginProvider et l’inscrire à l’aide de SPTrustedLoginProvider.ClaimProviderName (commenté dans le code suivant). Autrement, SharePoint crée automatiquement un objet SPTrustdClaimProvider (dérivé de la classe SPClaimProvider) pour cet objet SPTrustedLoginProvider. Cet objet SPTrustdClaimProvider est basé sur les informations de type de revendication que nous avons fournies dans le code d’inscription.

    https://intranet.contoso.com/\_trust/ est l’URL de redirection après que l’utilisateur a été authentifié par le service STS.

           private void button1_Click(object sender, EventArgs e)
            {
                List<SPTrustedClaimTypeInformation> claimMapping = new List<SPTrustedClaimTypeInformation>();
                List<string> strClaimMapping = new List<string>();
    
                SPTrustedClaimTypeInformation idClaim = new SPTrustedClaimTypeInformation("EmailAddress", 
                "https://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress", 
                "https://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress");
                SPTrustedClaimTypeInformation titleClaim = new SPTrustedClaimTypeInformation("Title", 
                "http://schemas.wingtip.com/sharepoint/2009/08/claims/title", 
                "http://schemas.wingtip.com/sharepoint/2009/08/claims/title");
    
                titleClaim.AcceptOnlyKnownClaimValues = true;
    
                idClaim.AddKnownClaimValue("user1@wingtip.com");
                idClaim.AddKnownClaimValue("user2@wingtip.com");
                idClaim.AddKnownClaimValue("user3@wingtip.com");
    
                titleClaim.AddKnownClaimValue("Engineer");
                titleClaim.AddKnownClaimValue("Manager");
                titleClaim.AddKnownClaimValue("CEO");
    
                // Create the string[] for all claims. This is required for 
                // the construction of the SPTrustedLoginProvider object.
                strClaimMapping.Add(idClaim.InputClaimType);
                strClaimMapping.Add(titleClaim.InputClaimType);
    
    
                X509Certificate2 ImportTrustCertificate = 
                new X509Certificate2(@"C:\StudentFiles\LabFiles\Module_6\Resources\STSTestCertPub.cer");
    
                claimMapping.Add(idClaim);
                claimMapping.Add(titleClaim);
    
                SPSecurityTokenServiceManager manager = SPSecurityTokenServiceManager.Local;
                SPTrustedLoginProvider provider = new SPTrustedLoginProvider(manager, 
                "WingtipSTS","WingtipSTS",new Uri("https://localhost:48924/WingtipSTS/default.aspx"),
                "https://intranet.contoso.com/_trust/", strClaimMapping.ToArray(),idClaim);  
    
                foreach (SPTrustedClaimTypeInformation claimTypeInfo in claimMapping)
                {
                    if (claimTypeInfo.InputClaimType == provider.IdentityClaimTypeInformation.InputClaimType)
                    {
                        continue;
                    }
                    provider.AddClaimTypeInformation(claimTypeInfo);
                }
    
                if (ImportTrustCertificate != null)
                {
                    provider.SigningCertificate = ImportTrustCertificate;
                }
    
    
                //provider.ClaimProviderName = "ContosoCRMClaimProvider";
    
                provider.UseWReplyParameter = true;
    
                manager.TrustedLoginProviders.Add(provider);
                manager.Update();
            }
    
  12. Générez le projet RegisterSTS, puis exécutez-le.

  13. Cliquez sur le bouton pour inscrire le fournisseur de connexions approuvé dans la batterie.

Étape 5 : création d’une application Web qui utilise le projet WingtipSTS

  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 basée sur les revendications.

  5. Dans la section Site Web IIS, sous Créer un nouveau site Web IIS, affectez au champ Nom la valeur SharePoint – Approuvé.

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

  7. Dans la section Configuration de la sécurité, sous Utiliser le protocole SSL, cliquez sur Oui, comme illustré à la Figure 14.

  8. Dans la section Types d’authentification basée sur les revendications, procédez comme suit :

    1. Cliquez sur Activer l’authentification Windows.

    2. Cliquez sur Authentification Windows intégrée.

    3. Cliquez sur NTLM dans la liste déroulante.

    4. Cliquez sur Trusted Identity Provider.

    5. Cliquez sur WingtipSTS.

    Figure 14. Boîte de dialogue Créer une application Web

    Boîte de dialogue Créer une application Web

  9. Sous Pool d’applications, sélectionnez l’AppPool : SharePointAppPool existant.

  10. Dans la section Nom de la base de données et authentification, nommez la base de données WSS_Content_443. Conservez les autres paramètres par défaut.

  11. Cliquez sur OK pour créer l’application Web.

  12. Une fois l’application Web SSL créée, cliquez sur Gestion des applications, puis sur Créer une collection de sites.

  13. Sélectionnez https://intranet.contoso.com comme application Web.

  14. Comme titre, tapez Approuvé.

  15. Cliquez sur Parcourir sur l’Administrateur principal de la collection de sites.

  16. Dans le Sélecteur de personnes, sous WingtipSTS, procédez comme suit :

    Notes

    Comme mentionné plus haut, le fournisseur de revendications WingtipSTS est un type de SPTrustedClaimProvder. Il est généré automatiquement par SharePoint lors de l’inscription du SPTrustedLoginProvider.

    1. Sélectionnez EmailAddress. Trois choix sont disponibles, comme illustré à la Figure 15.

    2. Sélectionnez user1@wingtip.com, puis cliquez sur OK.

    Figure 15. Sélecteur de personnes

    Sélecteur de personnes

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

Étape 6 : test de l’authentification du projet WingtipSTS

Important

Avant d’exécuter ce test, assurez-vous que le projet WingtipSTS est opérationnel. Vous pouvez soit cliquer avec le bouton droit sur le projet WingtipSTS puis cliquer sur Afficher dans le navigateur, soit le déployer sur un site Web IIS Internet Information Services).

  1. Naviguez jusqu’à https://intranet.contoso.com.

  2. Dans la liste déroulante Sélecteur d’authentifications multiples, cliquez sur WingtipSTS, comme illustré à la Figure 16.

    Figure 16. Sélection de WingtipSTS dans la liste déroulante

    Sélection de WingtipSTS dans la liste déroulante Type

    Vous êtes redirigé vers la page d’ouverture de session du site Web WingtipSTS, comme illustré à la Figure 17.

    Figure 17. Page d’ouverture de session du site Web WingtipSTS

    Page de connexion du site Web WingtipSTS

  3. Tapez les informations d’identification de l’administrateur du site, à savoir user1@wingtip.com.

  4. Après l’authentification, vous êtes redirigé vers le site SharePoint, comme illustré à la Figure 18.

    Figure 18. Redirection vers le site SharePoint après l’authentification

    Redirection vers le site SharePoint après authentification

  5. Déployez un composant WebPart que vous avez créé et ajoutez-le à la page d’accueil. Observez et prenez note des revendications qui sont ajoutées à l’utilisateur.

  6. Dans le menuActions du site, cliquez sur Paramètres du site, puis sur Utilisateurs et groupes. Cliquez sur user1@wingtip.com, puis recherchez le nom de compte. Notez la réponse aux questions suivantes :

    • Quels sont les types de revendications pour user1@wingtip.com ?

    • Quel est le nom de compte pour user1@wingtip.com ?

    • Que signifie chaque caractère dans le nom de compte ? (Décodez le nom de compte manuellement ou à l’aide de code.)

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

  8. Sous WingtipSTS, cliquez sur Title.

  9. Tapez Manager, puis cliquez sur Rechercher.

  10. Dans le résultat de recherche, double-cliquez sur Manager pour ajouter le « Manager » à la liste d’utilisateurs, puis cliquez sur Ajouter, comme illustré à la Figure 19.

    Figure 19. Sélecteur de personnes affichant les titres des employés de WingtipSTS

    Le sélecteur de personnes affiche les titres des employés WingtipSTS

  11. Fermez toutes les instances d’Internet Explorer afin de nettoyer le cookie de session d’authentification par revendications.

  12. Ouvrez une nouvelle instance d’Internet Explorer et naviguez jusqu’à https://intranet.contoso.com.

  13. Essayez de vous connecter en tant que user2@wingtip.com. Y parvenez-vous ? Et si vous utilisez user3@wingtip.com ?

Conclusion

Au cours de cette procédure pas à pas, vous avez appris à créer un service d’émission de jeton de sécurité (STS, Security Token Service) personnalisé, puis configurer la relation d’approbation entre une batterie SharePoint et le service STS personnalisé. Ce dernier assume la fonction de fournisseur d’authentification. Lorsque des utilisateurs se connectent au site SharePoint, ils sont d’abord dirigés vers la page d’ouverture de session du service STS personnalisé, puis redirigés vers SharePoint après l’authentification.

Ressources supplémentaires

Pour plus d’informations, voir les ressources suivantes :