<clientCertificate> 元素的 <authentication>

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

configuration
  system.serviceModel
    behaviors
      <serviceBehaviors>
        behavior
          <serviceCredentials>
            <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 可选的枚举。 指定用来验证凭据的其中一种模式。 此特性的类型为 X509CertificateValidationMode。 如果设置为 X509CertificateValidationMode.Custom,则还必须提供 customCertificateValidator。 默认值为 X509CertificateValidationMode.ChainTrust
includeWindowsGroups 可选的布尔值。 指定 Windows 组是否包含在安全上下文中。 将此属性设置为 true 会影响性能,因为这会导致完全组扩展。 如果不需要建立用户所属组的列表,请将此属性设置为 false
mapClientCertificateToWindowsAccount 布尔值。 指定是否可以使用证书将客户端映射到 Windows 标识。 为此,必须启用 Active Directory。
revocationMode 可选的枚举。 用于检查吊销证书列表 (RCL) 的一种模式。 默认为 Online。 使用 HTTP 传输安全性时,将忽略此值。
trustedStoreLocation 可选的枚举。 两个系统存储位置之一:LocalMachineCurrentUser。 在向客户端协商服务证书时使用此值。 验证会针对指定的存储位置中的“受信任人”存储来执行。 默认为 CurrentUser

customCertificateValidatorType 属性

说明
String 指定类型名称和程序集以及用于查找类型的其他数据。

certificateValidationMode 属性

说明
枚举 下列值之一:None、PeerTrust、ChainTrust、PeerOrChainTrust 和 Custom。

有关详细信息,请参阅使用证书

revocationMode 属性

说明
枚举 下列值之一:NoCheck、Online 和 Offline。 有关详细信息,请参阅使用证书

trustedStoreLocation 属性

说明
枚举 以下值之一:LocalMachineCurrentUser。 默认为 CurrentUser。 如果客户端应用程序在系统帐户下运行,则证书通常位于 LocalMachine。 如果客户端应用程序在用户帐户下运行,则证书通常位于 CurrentUser

子元素

无。

父元素

元素 说明
<clientCertificate> 定义用于针对服务进行客户端身份验证的 X.509 证书。

备注

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

还可以将该值设置为 Custom。 当该值设置为 Custom 值时,您还必须将 customCertificateValidatorType 属性设置为用于验证证书的程序集和类型。 若要创建您自己的自定义验证程序,必须从 X509CertificateValidator 抽象类进行继承。 有关详细信息,请参见如何:创建使用自定义证书验证程序的服务

示例

下面的代码指定 <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>

请参阅