Partager via


Comment : utiliser un validateur de nom d'utilisateur et de mot de passe personnalisé

Par défaut, lorsqu'un nom d'utilisateur et un mot de passe sont utilisés pour l'authentification, Windows Communication Foundation (WCF) utilise Windows pour valider le nom d'utilisateur et le mot de passe. Toutefois, WCF autorise l'utilisation de schémas d'authentification par nom d'utilisateur et mot de passe personnalisés, également connus sous le nom de validateurs. Pour incorporer un validateur de nom d'utilisateur et de mot de passe personnalisé, créez une classe qui dérive de UserNamePasswordValidator, puis configurez-la.

Pour obtenir un exemple d'application, consultez UserNamePassword Validator.

Pour créer validateur de nom d'utilisateur et de mot de passe personnalisé

  1. Créez une classe qui dérive de UserNamePasswordValidator.

  2. Implémentez le schéma d'authentification personnalisé en substituant la méthode Validate.

    N'utilisez pas le code dans l'exemple suivant qui substitue la méthode Validate dans un environnement de production. Remplacez le code par votre schéma de validation de nom d'utilisateur et de mot de passe personnalisé, ce qui peut impliquer la récupération de paires nom d'utilisateur/mot de passe à partir d'une base de données.

    Pour renvoyer des erreurs d'authentification au client, levez une exception FaultException dans la méthode Validate.

Pour configurer un service pour utiliser un validateur de nom d'utilisateur et de mot de passe personnalisé

  1. Configurez une liaison qui utilise la sécurité de message sur un transport ou la sécurité au niveau du transport sur HTTP(S)

    Lors de l'utilisation de la sécurité de message, ajoutez une des liaisons fournies par le système, telles que wsHttpBinding Element ou customBinding Element qui prend en charge la sécurité de message et le type d'information d'identification UserName.

    Lorsque vous utilisez la sécurité au niveau du transport sur HTTP(S), ajoutez wsHttpBinding Element ou <basicHttpBinding>, ou customBinding Element qui utilise HTTP(S) et le schéma d'authentification Basic.

    Aa702565.note(fr-fr,VS.90).gifRemarque :
    Lors de l'utilisation du .NET Framework version 3.5 ou une version ultérieure, vous pouvez utiliser un validateur personnalisé de mot de passe et de nom d'utilisateur avec la sécurité de transport et de message. Avec .NET Framework 3.0, seul un validateur personnalisé de mot de passe et de nom d'utilisateur peut être utilisé avec la sécurité de message.

    1. Dans le fichier de configuration, sous l'élément <system.ServiceModel>, ajoutez un élément <bindings>.
    2. Ajoutez un élément wsHttpBinding Element ou <basicHttpBinding> à la section des liaisons. Pour plus d'informations sur la création d'un élément de liaison WCF, consultez Comment : spécifier une liaison de service dans la configuration.
    3. Affectez à l'attribut mode de security element of wsHttpBinding ou <security> of <basicHttpBinding> les valeurs Message, Transport, or TransportWithMessageCredential.
    4. Définissez l'attribut clientCredentialType de message element of wsHttpBinding ou <transport> of <wsHttpBinding>.
      Lors de l'utilisation de la sécurité de message, attribuez à l'attribut clientCredentialType de message element of wsHttpBinding la valeur UserName.
      Si vous utilisez la sécurité au niveau du transport sur HTTP(S), affectez à l'attribut clientCredentialType de <transport> of <wsHttpBinding> ou <transport> of <basicHttpBinding> la valeur Basic.
      Aa702565.note(fr-fr,VS.90).gifRemarque :
      Lorsqu'un service WCF est hébergé dans IIS (Internet Information Services) à l'aide de la sécurité au niveau du transport et que la propriété UserNamePasswordValidationMode a la valeur Custom, le schéma d'authentification personnalisé utilise un sous-ensemble de l'authentification Windows. Cela est dû au fait que dans ce scénario, IIS effectue une authentification Windows avant que WCF n'appelle l'authentificateur personnalisé.

    Pour plus d'informations sur la création d'un élément de liaison WCF, consultez Comment : spécifier une liaison de service dans la configuration.

    L'exemple suivant présente le code de configuration de la liaison.

    <system.serviceModel> 
      <bindings>
      <wsHttpBinding>
          <binding name="Binding1">
            <security mode="Message">
              <message clientCredentialType="UserName" />
            </security>
          </binding>        
        </wsHttpBinding>
      </bindings>
    </system.serviceModel>
    
  2. Configurez un comportement qui spécifie qu'un validateur de nom d'utilisateur et de mot de passe personnalisé est utilisé pour valider des paires nom d'utilisateur/mot de passe pour les jetons de sécurité UserNameSecurityToken entrants.

    1. Ajoutez un élément <system.serviceModel> en tant qu'enfant de l'élément <behaviors>.

    2. Ajoutez un serviceBehaviors section à l'élément <behaviors>.

    3. Ajoutez un élément <behavior>, puis affectez à l'attribut name une valeur appropriée.

    4. Ajoutez un <serviceCredentials> Element à l'élément <behavior>.

    5. Ajoutez un userNameAuthentication element au <serviceCredentials> Element.

    6. Affectez la valeurCustom à userNamePasswordValidationMode.

      Aa702565.Important(fr-fr,VS.90).gif Remarque :
      Si la valeur userNamePasswordValidationMode n'est pas définie, WCF utilise l'authentification Windows au lieu du validateur de nom d'utilisateur et de mot de passe personnalisé.

    7. Affectez au customUserNamePasswordValidatorType le type qui représente votre validateur de nom d'utilisateur et de mot de passe personnalisé.

    L'exemple suivant présente le fragment <serviceCredentials> à ce point.

    <serviceCredentials>
      <userNameAuthentication userNamePasswordValidationMode="Custom" customUserNamePasswordValidatorType="Microsoft.ServiceModel.Samples.CalculatorService.CustomUserNameValidator, service" />
    </serviceCredentials>
    

Exemple

L'exemple de code suivant montre comment créer un validateur de nom d'utilisateur et de mot de passe personnalisé. N'utilisez pas le code qui substitue la méthode Validate dans un environnement de production. Remplacez le code par votre schéma de validation de nom d'utilisateur et de mot de passe personnalisé, ce qui peut impliquer la récupération de paires nom d'utilisateur/mot de passe à partir d'une base de données.

Voir aussi

Tâches

Comment : utiliser le fournisseur d'appartenances ASP.NET

Référence

UserNamePasswordValidator

Autres ressources

Authentification