共用方式為


驗證用戶端憑證

適用於:所有 APIM 層

使用原則 validate-client-certificate 來強制用戶端對 API 管理執行個體呈現的憑證符合指定的驗證規則和宣告,例如一個或多個憑證身分識別的主體或簽發者。

若要視為有效,用戶端憑證必須符合最上層元素之屬性所定義的全部驗證規則,並符合至少其中一個已定義身分識別的全部已定義宣告。

使用此原則來檢查傳入的憑證屬性是否符合所需的屬性。 此外,在此案例中,使用此原則來覆寫用戶端憑證的預設驗證:

  • 如果您已上傳自訂 CA 憑證,藉以驗證對受控閘道的用戶端要求
  • 如果您已設定自訂憑證授權單位單位來驗證對自我管理閘道的用戶端要求

如需自訂 CA 憑證和憑證授權單位單位的詳細資訊,請參閱如何在 Azure API 管理中新增自訂 CA 憑證

注意

請依照原則陳述式中提供的順序,來設定原則的元素和子元素。 深入了解如何設定或編輯 APIM 原則

原則陳述式

<validate-client-certificate 
    validate-revocation="true | false"
    validate-trust="true | false" 
    validate-not-before="true | false" 
    validate-not-after="true | false" 
    ignore-error="true | false">
    <identities>
        <identity
            thumbprint="certificate thumbprint"
            serial-number="certificate serial number"
            common-name="certificate common name"
            subject="certificate subject string"
            dns-name="certificate DNS name"
            issuer-subject="certificate issuer"
            issuer-thumbprint="certificate issuer thumbprint"
            issuer-certificate-id="certificate identifier"/>
    </identities>
</validate-client-certificate> 

屬性

名字 描述 是必要欄位 預設
validate-revocation 布林值。 指定是否針對線上撤銷清單驗證憑證。 不允許使用原則運算式。 true
validate-trust 布林值。 指定驗證是否應該在鏈結無法成功組建至受信任的 CA 的情況下失敗。 不允許使用原則運算式。 true
validate-not-before 布林值。 根據目前時間驗證值。 不允許使用原則運算式。 true
validate-not-after 布林值。 根據目前時間驗證值。 不允許使用原則運算式。 true
ignore-error 布林值。 指定原則是否應該繼續進行下一個處理常式,或在驗證失敗時跳至 on-error。 不允許使用原則運算式。 false

元素

元素 描述 是必要欄位
身分識別 新增此元素,以在用戶端憑證上指定最多10 identity 個具有定義宣告的子元素。

身分識別屬性

名字 描述 是必要欄位 預設
指紋 憑證 SHA-1 指紋。 N/A
序號 憑證序號。 N/A
一般名稱 憑證一般名稱 (主體字串) 的一部分。 N/A
主題 主體字串。 必須遵循辨別名稱的格式,其中包含逗號分隔的名稱屬性,例如 “CN=MyName, OU=MyOrgUnit, C=US...” N/A
dns-name 主體別名宣告內的 dnsName 項目值。 N/A
issuer-subject 簽發者的主體。 必須遵循辨別名稱的格式。 N/A
issuer-thumbprint 簽發者 SHA-1 指紋。 N/A
issuer-certificate-id 代表簽發者公開金鑰的現有憑證實體識別碼。 與其他簽發者屬性互斥。 N/A

使用方式

範例

下列範例會驗證用戶端憑證以符合原則的預設驗證規則,並檢查主體和簽發者名稱是否符合指定的值。

<validate-client-certificate 
    validate-revocation="true" 
    validate-trust="true" 
    validate-not-before="true" 
    validate-not-after="true" 
    ignore-error="false">
    <identities>
        <identity
            subject="C=US, ST=Illinois, L=Chicago, O="Contoso, Inc.", CN=*.contoso.com"
            issuer-subject="C=BE, O=FabrikamSign nv-sa, OU=Root CA, CN=FabrikamSign Root CA" />
    </identities>
</validate-client-certificate> 

下列範例會藉由叫用主體指紋和簽發者指紋是否符合指定的值來執行更嚴格的驗證。

<validate-client-certificate 
    validate-revocation="true" 
    validate-trust="true" 
    validate-not-before="true" 
    validate-not-after="true" 
    ignore-error="false">
    <identities>
        <identity
            thumbprint="AA11BB22CC33DD44EE55FF66AA77BB88CC99DD00"
            issuer-thumbprint="BB22CC33DD44EE55FF66AA77BB88CC99DD00EE11" />
    </identities>
</validate-client-certificate> 

如需使用原則的詳細資訊,請參閱: