<clientCertificate> 的 <authentication> 元素

指定服务使用的客户端证书的身份验证行为。

架构层次结构

<system.serviceModel>
  <behaviors>
    <serviceBehaviors>
      <serviceBehaviors> 的 <behavior>
        <serviceCredentials>
          <serviceCredentials> 的 <clientCertificate>
            <clientCertificate> 的 <authentication> 元素

语法

<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" 
/>

属性和元素

以下几节描述了特性、子元素和父元素

属性

特性 说明

customCertificateValidatorType

可选的字符串。用于验证自定义类型的类型和程序集。当 certificateValidationMode 设置为 Custom 时,必须设置此属性。

certificateValidationMode

可选的枚举。指定用来验证凭据的其中一种模式。此特性的类型为 System.Servicemodel.Security.X509CertificateValidationMode。如果设置为 Custom,则还必须提供 customCertificateValidator。默认值为 ChainTrust

includeWindowsGroups

可选的布尔值。指定 Windows 组是否包含在安全上下文中。将此属性设置为 true 会影响性能,因为这会导致完全组扩展。如果不需要建立用户所属组的列表,请将此属性设置为 false

mapClientCertificateToWindowsAcccount

布尔值。指定是否可以使用证书将客户端映射到 Windows 标识。为此,必须启用 Active Directory。有关使用 Active Directory 功能的更多信息,请参见

revocationMode

可选的枚举。用于检查吊销证书列表 (RCL) 的一种模式。默认值为 Online

trustedStoreLocation

可选的枚举。两个系统存储位置之一:LocalMachineCurrentUser。在向客户端协商服务证书时使用此值。将根据指定存储位置中的“受信任人”存储执行验证。默认值为 CurrentUser

子元素

无。

父元素

元素 说明

<serviceCredentials> 的 <clientCertificate>

定义用于向服务验证客户端身份的 X.509 证书。

备注

<authentication> X509ClientCertificateAuthentication 元素与类相对应。利用它您可以自定义对客户端进行身份验证的方式。可以将 certificateValidationMode 属性设置为 NoneChainTrustPeerOrChainTrustPeerTrustCustom。默认情况下,该级别设置为 ChainTrust,它指定每个证书都必须存在于某个证书层次结构中,而该层次结构以位于证书链顶端的**根证书颁发机构结束。这是最安全的模式。您还可以将此值设置为 PeerOrChainTrust,该值指定受信任的链中的证书以及自行颁发的证书(对等信任)都被接受。因为不需要从受信任的证书颁发机构那里购买自行颁发的证书,所以可以在开发和调试客户端和服务时使用此值。在部署客户端时,请改用 ChainTrust 值。

还可以将该值设置为 Custom。当该值设置为 Custom 值时,您还必须将 customCertificateValidatorType 属性设置为用于验证证书的程序集和类型。若要创建您自己的自定义验证程序,必须从 X509CertificateValidator 抽象类进行继承。有关更多信息,请参见How To: Create a Service Employing a Custom Certificate Validator

示例

下面的代码指定 <authentication> 元素中的 X.509 证书和自定义验证类型。

<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>

另请参见

参考

X509ClientCertificateAuthentication
X509CertificateValidationMode
Authentication
Authentication
X509ClientCertificateAuthenticationElement

其他资源

Security Behaviors in WCF
How To: Create a Service Employing a Custom Certificate Validator
Working with Certificates