Share via


Configuration des gestionnaires de jetons

Cette rubrique explique comment configurer des gestionnaires de jetons de sécurité pour votre application de partie de confiance ou service d'émission de jeton de sécurité (STS).

Vous pouvez configurer les gestionnaires de jetons de sécurité via le fichier de configuration de l'application ou créer un objet de configuration par programmation et le définir comme propriété des gestionnaires de jetons de sécurité.

Nous vous recommandons de ne pas définir la propriété Configuration sur un gestionnaire de jetons individuel. Au lieu de cela, définissez la propriété Configuration sur la collection de gestionnaires de jetons. Si vous devez définir la propriété Configuration sur un gestionnaire de jetons individuel, faites-le après avoir ajouté le gestionnaire à la collection. En effet, lorsque vous ajoutez un gestionnaire de jetons à une collection, la Configuration du gestionnaire a pour valeur la configuration de la collection, et la propriété ContainingCollection du gestionnaire a pour valeur l'instance de collection. De même, la suppression d'un gestionnaire de jetons d'une collection entraîne l'annulation de ces propriétés.

De plus, vous ne devez pas ajouter de gestionnaire de jetons à plusieurs collections. Cela provoquerait une erreur à cause du comportement décrit précédemment. Si plusieurs gestionnaires de jetons avec différentes configurations sont requis dans la même collection, vous devez ajouter d'abord ces gestionnaires à la collection, puis créer des instances SecurityTokenHandlerConfiguration et les assigner individuellement à chaque gestionnaire pour vérifier que l'état n'est pas partagé par erreur.

Vous pouvez également définir la propriété Configuration sur un gestionnaire de jetons individuel si vous l'utilisez sans collection.

La configuration des gestionnaires de jetons de sécurité peut également être définie dans le fichier de configuration de l'application. Voici un exemple de configuration :

<microsoft.identityModel> <!-- This is equivalent to the ServiceConfiguration class. --> <service> <!-- This is equivalent to the default token handler collection, ServiceConfiguration.SecurityTokenHandlers --> <securityTokenHandlers> <!-- This is the collection-level configuration, not the handler-level configuration. Note that you can programmatically configure an individual token handler as described previously, though that is not recommended. However, you cannot do so in a configuration file. --> <securityTokenHandlerConfiguration> <!-- IssuerNameRegistry contains the trusted issuers list.--> <issuerNameRegistry /> <!-- ServiceTokenResolver is for resolving the encryption certificates while decrypting the token.--> <serviceTokenResolver /> <!-- IssuerTokenResolver is for resolving the signing certificates while verifying the signature of the token issued by an STS. --> <issuerTokenResolver /> <!-- AudienceUris contains the URIs where the application expects the security tokens to be delivered. --> <audienceUris mode="Always" /> </securityTokenHandlerConfiguration> </securityTokenHandlers> <!-- This is equivalent to looking up the ActAs token handler collection in the token handler collection manager using either of the following: ServiceConfiguration.SecurityTokenHandlerCollectionManager["ActAs"] ServiceConfiguration.SecurityTokenHandlerCollectionManager[ SecurityTokenHandlerCollectionManager.Usage.ActAs]; --> <securityTokenHandlers name="ActAs"> </securityTokenHandlers> <issuerNameRegistry ... /> <serviceTokenResolver ... /> </service> <!-- This is equivalent to creating a new ServiceConfiguration as follows: new ServiceConfiguration("CustomService"); --> <service name="CustomService"> </service> </microsoft.identityModel>

Configuration des paramètres de révocation et de validation pour X509CertificateTokenHandler

Le code suivant indique comment configurer par programmation les paramètres de révocation et de validation pour X509CertificateTokenHandler.

using Microsoft.IdentityModel.Tokens; using Microsoft.IdentityModel.Configuration; using System.IdentityModel.Selectors; using System.Security.Cryptography.X509Certificates; using System.ServiceModel.Security;

class Sample { public static void ConfigureCustomValidator() { // 1a. Configure a service configuration object (custom) ServiceConfiguration serviceConfig = new ServiceConfiguration(); serviceConfig.CertificateValidationMode = X509CertificateValidationMode.Custom; serviceConfig.CertificateValidator = new CustomX509Validator();

        // 1b. Configure an individual X509SecurityTokenHandler (custom) X509CertificateValidator customValidator = new CustomX509Validator(); X509SecurityTokenHandler x509Handler = new X509SecurityTokenHandler(customValidator); }

    public static void DisableRevocationMode() { // 2a. Configure a service configuration object (change revocation mode) ServiceConfiguration serviceConfig = new ServiceConfiguration(); serviceConfig.RevocationMode = X509RevocationMode.NoCheck; serviceConfig.TrustedStoreLocation = StoreLocation.LocalMachine; serviceConfig.CertificateValidationMode = X509CertificateValidationMode.ChainTrust;

        // 2b. Configure an individual X509SecurityTokenHandler (change revocation mode) X509SecurityTokenHandler x509Handler = new X509SecurityTokenHandler(); X509ChainPolicy chainPolicy = new X509ChainPolicy(); chainPolicy.RevocationMode = X509RevocationMode.NoCheck; x509Handler.CertificateValidator = X509CertificateValidator.CreateChainTrustValidator(true, chainPolicy); }

    class CustomX509Validator : X509CertificateValidator { public override void Validate(System.Security.Cryptography.X509Certificates.X509Certificate2 certificate) { // Insert validation logic here. } } }

Comment configurer le mappage des informations d'identification Windows

L'extrait de code suivant explique comment configurer le mappage des informations d'identification Windows :

X509SecurityTokenHandler x509Handler = new X509SecurityTokenHandler(); x509Handler.MapToWindows = true;

        UserNameSecurityTokenHandler usernameHandler = new WindowsUserNameSecurityTokenHandler();

        Saml11SecurityTokenHandler saml11Handler = new Saml11SecurityTokenHandler(); saml11Handler.SamlSecurityTokenRequirement.MapToWindows = true;

        Saml2SecurityTokenHandler saml2Handler = new Saml2SecurityTokenHandler(); saml2Handler.SamlSecurityTokenRequirement.MapToWindows = true;