<autenticação> do elemento <clientCertificate>

Especifica os comportamentos de autenticação para certificados de cliente usados por um serviço.

<configuration>
  <system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <serviceCredentials>
            <clientCertificate>
              <authentication>

Syntax

<authentication customCertificateValidatorType="namespace.typeName, [,AssemblyName] [,Version=version number] [,Culture=culture] [,PublicKeyToken=token]"
                certificateValidationMode="ChainTrust/None/PeerTrust/PeerOrChainTrust/Custom"
                includeWindowsGroups="Boolean"
                mapClientCertificateToWindowsAccount="Boolean"
                revocationMode="NoCheck/Online/Offline"
                trustedStoreLocation="CurrentUser/LocalMachine" />

Atributos e elementos

As seções a seguir descrevem os atributos, os elementos filho e os elementos pai

Atributos

Atributo Descrição
customCertificateValidatorType Cadeia de caracteres opcional. Um tipo e um assembly usados para validar um tipo personalizado. Esse atributo deverá ser definido quando certificateValidationMode estiver definido como Custom.
certificateValidationMode Enumeração opcional. Especifica um dos modos usados para validar credenciais. Esse atributo é do tipo X509CertificateValidationMode. Se definido como X509CertificateValidationMode.Custom, também será necessário fornecer um customCertificateValidator. O padrão é X509CertificateValidationMode.ChainTrust.
includeWindowsGroups Booliano opcional. Especifica se os grupos do Windows estão incluídos no contexto de segurança. Configurar esse atributo para true afetará o desempenho porque resultará em uma expansão de grupo completo. Configure esse atributo para false se não for necessário estabelecer a lista de grupos aos quais um usuário pertence.
mapClientCertificateToWindowsAccount Booliano. Especifica se o cliente pode ser mapeado para uma identidade do Windows usando o certificado. O Active Directory deve ser habilitado para fazer isso.
revocationMode Enumeração opcional. Um dos modos usados para verificar se há uma RCL (lista de certificados revogada). O padrão é Online. Esse valor é ignorado ao usar a segurança do transporte HTTP.
trustedStoreLocation Enumeração opcional. Um dos dois locais do repositório do sistema: LocalMachine ou CurrentUser. Esse valor é usado quando um certificado de serviço é negociado com o cliente. A validação é executada no repositório de Pessoas Confiáveis no local do repositório especificado. O padrão é CurrentUser.

Atributo customCertificateValidatorType

Valor Descrição
String Especifica o assembly e o nome do tipo e outros dados usados para localizar o tipo.

Atributo certificateValidationMode

Valor Descrição
Enumeração Um dos seguintes valores: None, PeerTrust, ChainTrust, PeerOrChainTrust, Custom.

Para saber mais, confira Como trabalhar com certificados.

Atributo revocationMode

Valor Descrição
Enumeração Um dos seguintes valores: NoCheck, Online, Offline. Para saber mais, confira Como trabalhar com certificados.

Atributo trustedStoreLocation

Valor Descrição
Enumeração Um dos seguintes valores: LocalMachine ou CurrentUser. O padrão é CurrentUser. Se o aplicativo cliente estiver em execução em uma conta do sistema, o certificado normalmente estará em LocalMachine. Se o aplicativo cliente estiver em execução em uma conta de usuário, o certificado normalmente estará em CurrentUser.

Elementos filho

Nenhum.

Elementos pai

Elemento Descrição
<clientCertificate> Define um certificado X.509 usado para autenticar um cliente em um serviço.

Comentários

O elemento <authentication> corresponde à classe X509ClientCertificateAuthentication. Ele permite que você personalize como os clientes são autenticados. Você pode definir o atributo certificateValidationMode como None, ChainTrust, PeerOrChainTrust, PeerTrust ou Custom. Por padrão, o nível é definido como ChainTrust, que especifica que cada certificado deve ser encontrado em uma hierarquia de certificados que termina em uma autoridade raiz na parte superior da cadeia. Este é o modo de maior segurança. Você também pode definir o valor como PeerOrChainTrust, que especifica que certificados autoemitidos (confiança de par) são aceitos, bem como certificados que estão em uma cadeia confiável. Esse valor é usado ao desenvolver e depurar clientes e serviços porque os certificados autoemitidos não precisam ser adquiridos de uma autoridade confiável. Ao implantar um cliente, use o valor ChainTrust em seu lugar.

Também é possível definir o valor como Custom. Para usar o valor Custom, você também precisa definir o atributo customCertificateValidatorType para um assembly e um tipo usados para validar o certificado. Para criar um validador personalizado, você deve herdar da classe abstrata X509CertificateValidator. Para mais informações, confira Como: criar um serviço que emprega um validador de certificado personalizado.

Exemplo

O código a seguir especifica um certificado X.509 e um tipo de validação personalizado no elemento <authentication>.

<serviceBehaviors>
  <behavior name="myServiceBehavior">
    <clientCertificate>
      <certificate findValue="www.cohowinery.com"
                   storeLocation="CurrentUser"
                   storeName="TrustedPeople"
                   x509FindType="FindByIssuerName" />
      <authentication customCertificateValidatorType="MyTypes.Coho"
                      certificateValidationMode="Custom"
                      revocationMode="Offline"
                      includeWindowsGroups="false"
                      mapClientCertificateToWindowsAccount="true" />
    </clientCertificate>
  </behavior>
</serviceBehaviors>

Confira também