Share via


Procédure : Générer une application de partie de confiance WCF

Dans cet exercice, vous n'utilisez pas de STS. Vous créez simplement un service WCF qui vous permet d'accéder aux revendications de l'utilisateur actuel via IClaimsPrincipal. En fait, FedUtil ajoute le ClaimsPrincipalHttpModule à votre projet. Le module vous permet de convertir l'objet IPrincipal de l'utilisateur actuel en un objet IClaimsPrincipal.

Notes

Vous devez exécuter Visual Studio en mode d'exécution élevé pour que FedUtil fonctionne correctement.

Tout d'abord, créez un service WCF prenant en charge les revendications comme indiqué dans Service WCF prenant en charge les revendications.

Ensuite, cliquez avec le bouton droit sur votre projet dans l'Explorateur de solutions et sélectionnez Ajouter référence STS :

392cd2c5-5098-44c7-9738-f43e40da090f

L'outil FedUtil est exécuté. La boîte de dialogue FedUtil s'affiche, en commençant par la page Bienvenue dans l'Assistant Federation Utility :

35d73636-c363-47cf-a67f-16b3ca195d40

Dans cette page, vous devez remplir deux champs :

  1. Emplacement de configuration de l'application : spécifiez le chemin d'accès au fichier web.config de votre service WCF. Si vous n'exécutez pas FedUtil à partir de Visual Studio, ce champ est vide. Si vous exécutez FedUtil à partir de Visual Studio, ce champ contient déjà le chemin d'accès au fichier web.config de votre projet. Le fichier web.config doit déjà exister et doit être dans son état par défaut (c'est-à-dire, comme il a été généré par Visual Studio). Si vous exécutez FedUtil plusieurs fois sur le même fichier web.config, FedUtil remplace simplement le contenu qu'il ajoute au fichier web.config.

  2. URI de l'application : spécifiez l'URI de votre service WCF. Notez qu'il s'agit d'un fichier .svc. Si vous n'exécutez pas FedUtil à partir de Visual Studio, ce champ est vide. Si vous exécutez FedUtil à partir de Visual Studio, ce champ contient déjà deux URI pour votre projet : un qui utilise le localhost, et l'autre qui utilise le nom de domaine complet pour votre ordinateur, le cas échéant. Cet URI est utilisé comme valeur de domaine lors de la configuration de l'application pour les revendications. Si l'URI n'est pas sécurisé (autrement dit, qu'il ne commence pas par « https:// »), vous recevez un avertissement lorsque vous cliquez sur Suivant.

Une fois que vous avez fourni les informations, cliquez sur Suivant. La page Informations sur l'application s'affiche :

c869d84f-313b-436c-800c-48570365b607

Sélectionnez le nom du service et le nom de contrat du point de terminaison que vous souhaitez configurer, puis cliquez sur Suivant. Si un service présente plusieurs points de terminaison et que vous souhaitez configurer des revendications uniquement pour certains points de terminaison, sélectionnez ces points de terminaison.

La page Service d'émission de jeton de sécurité (STS) s'affiche :

bdecc626-5ded-43dc-b569-3513a2bddbeb

Sélectionnez Aucun STS. Cette opération crée un service WCF qui prend en charge les revendications et ne requiert aucun STS pour émettre les revendications. Le service obtient les revendications par défaut créées par l'infrastructure. Cliquez sur Suivant. La page Résumé s'affiche :

8619f6b7-c5a8-4da8-87e9-de5bb9f67638

Cliquez sur Terminer.

Si vous observez votre fichier web.config, vous pouvez voir que FedUtil l'a modifié :

  • L'élément <configuration>/<configSections> contient à présent une référence à une section de configuration microsoft.IdentityModel :

    <section name="microsoft.identityModel" type="Microsoft.IdentityModel.Configuration.MicrosoftIdentityModelSection, Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
    
  • L'élément <configuration> contient à présent la section de configuration microsoft.identityModel, qui contient l'URI d'application spécifié précédemment :

    <microsoft.identityModel> <service name="ClaimsAwareService1.Service"> <audienceUris> <add value="https://localhost:64705/ClaimsAwareService1/Service.svc" /> </audienceUris> </service> </microsoft.identityModel>