Comment : configurer des informations d'identification sur un service FS (Federation Service)
Dans Windows Communication Foundation (WCF), la création d'un service fédéré implique les principales procédures suivantes :
- Configuration de WSFederationHttpBinding ou d'une liaison personnalisée similaire. Pour plus d'informations sur la création d'une liaison appropriée, consultez Comment : créer une liaison WSFederationHttpBinding.
- Configuration de IssuedTokenServiceCredential qui contrôle la manière dont les jetons émis présentés au service sont authentifiés.
Cette rubrique fournit des détails sur la deuxième étape. Pour plus d'informations sur le fonctionnement des services fédérés, consultez Fédération.
Pour définir les propriétés de IssuedTokenServiceCredential dans le code
Utilisez la propriété IssuedTokenAuthentication de la classe ServiceCredentials pour retourner une référence à une instance IssuedTokenServiceCredential. La propriété est accessible à partir de la propriété Credentials de la classe ServiceHostBase.
Affectez true à la propriété AllowUntrustedRsaIssuers si les jetons auto-émis, tels que les cartes CardSpace, doivent être authentifiés. La valeur par défaut est false.
Remplissez la collection retournée par la propriété KnownCertificates avec les instances de la classe X509Certificate2. Chaque instance représente un émetteur à partir duquel le service authentifiera des jetons.
Remarque :
Contrairement à la collection côté client retournée par la propriété ScopedCertificates, la collection des certificats connus n'est pas une collection à clé. Le service accepte les jetons que les certificats spécifiés émettent indépendamment de l'adresse du client qui a envoyé le message contenant le jeton émis (sous réserve des contraintes supplémentaires décrites plus loin dans cette rubrique). Affectez l'une des valeurs de l'énumération X509CertificateValidationMode à la propriété CertificateValidationMode. Cette opération peut s'effectuer uniquement dans le code. La valeur par défaut est ChainTrust.
Si la propriété CertificateValidationMode a la valeur Custom, assignez une instance de la classe personnalisée X509CertificateValidator à la propriété CustomCertificateValidator.
Si CertificateValidationMode a la valeur ChainTrust ou PeerOrChainTrust, affectez l'une des valeurs appropriées de l'énumération X509RevocationMode à la propriété RevocationMode. Notez que le mode de révocation n'est pas utilisé dans les modes de validation PeerTrust ou Custom.
Si nécessaire, assignez une instance d'une classe personnalisée SamlSerializer à la propriété SamlSerializer. Un sérialiseur SAML (Security Assertions Markup Language) personnalisé est nécessaire, par exemple pour l'analyse des assertions SAML personnalisées.
Pour définir les propriétés de IssuedTokenServiceCredential dans la configuration
Créez un élément <issuedTokenAuthentication> en tant qu'enfant d'un élément <serviceCredentials>.
Affectez true à l'attribut allowUntrustedRsaIssuers de l'élément <issuedTokenAuthentication> en cas d'authentification d'un jeton auto-émis, tel qu'une carte CardSpace.
Créez un élément <knownCertificates> en tant qu'enfant de l'élément <issuedTokenAuthentication>.
Créez zéro ou plusieurs éléments <add> en tant qu'enfants de l'élément <knownCertificates> et spécifiez comment localiser le certificat à l'aide des attributs storeLocation, storeName, x509FindType et findValue.
Si nécessaire, affectez l'attribut samlSerializer de l'élément <issuedTokenAuthentication> au nom de type de la classe personnalisée SamlSerializer.
Exemple
L'exemple suivant définit les propriétés de IssuedTokenServiceCredential dans le code.
Pour qu'un service fédéré authentifie un client, les conditions suivantes doivent être vérifiées pour le jeton émis :
- Lorsque la signature numérique du jeton émis utilise un identificateur de clé de sécurité RSA, la propriété AllowUntrustedRsaIssuers doit avoir la valeur true.
- Lorsque la signature du jeton émis utilise un numéro de série d'émetteur X.509, un identificateur de clé du sujet X.509 ou un identificateur de sécurité d'empreinte numérique X.509, le jeton émis doit être signé par un certificat de la collection retournée par la propriété KnownCertificates de la classe IssuedTokenServiceCredential.
- Lorsque le jeton émis est signé à l'aide d'un certificat X.509, le certificat doit valider suivant la sémantique spécifiée par la valeur de la propriété CertificateValidationMode, indépendamment du fait que le certificat a été envoyé à la partie de confiance en tant que X509RawDataKeyIdentifierClause ou qu'il a été obtenu à partir de la propriété KnownCertificates. Pour plus d'informations sur la validation des certificats X.509, consultez Utilisation des certificats.
Par exemple, si vous affectez PeerTrust à CertificateValidationMode, les jetons émis dont le certificat de signature se trouve dans le magasin de certificats TrustedPeople sont authentifiés. Dans ce cas, affectez CurrentUser ou LocalMachine à la propriété TrustedStoreLocation. Vous pouvez sélectionner d'autres modes, dont Custom. Lorsque Custom est sélectionné, vous devez assigner une instance de la classe X509CertificateValidator à la propriété CustomCertificateValidator. Le validateur personnalisé peut valider des certificats à l'aide de n'importe quel critère. Pour plus d'informations, consultez Comment : créer un service qui utilise un validateur de certificat personnalisé.
Voir aussi
Tâches
Comment : désactiver des sessions sécurisées sur une classe WSFederationHttpBinding
Comment : créer une liaison WSFederationHttpBinding
Comment : créer un client fédéré
Concepts
Fédération
Fédération et confiance
Utilisation des certificats
Modes d'authentification SecurityBindingElement