Come proteggere le API usando l'autenticazione con certificati client in Gestione APIHow to secure APIs using client certificate authentication in API Management

Gestione API offre la possibilità di proteggere l'accesso alle API (ovvero dal client a Gestione API) mediante certificati client.API Management provides the capability to secure access to APIs (i.e., client to API Management) using client certificates. Attualmente è possibile controllare l'identificazione personale del certificato client rispetto a un valore desiderato.Currently, you can check the thumbprint of a client certificate against a desired value. È inoltre possibile controllare l'identificazione personale rispetto a certificati esistenti caricati in Gestione API.You can also check the thumbprint against existing certificates uploaded to API Management.

Per informazioni sulla protezione dell'accesso al servizio back-end di un'API tramite certificati client (ovvero da Gestione API al back-end), vedere Come proteggere i servizi back-end usando l'autenticazione con certificati clientFor information about securing access to the back-end service of an API using client certificates (i.e., API Management to back-end), see How to secure back-end services using client certificate authentication

Controllo della data di scadenzaChecking the expiration date

È possibile configurare i criteri riportati di seguito per controllare se il certificato è scaduto:Below policies can be configured to check if the certificate is expired:

<choose>
    <when condition="@(context.Request.Certificate == null || context.Request.Certificate.NotAfter < DateTime.Now)" >
        <return-response>
            <set-status code="403" reason="Invalid client certificate" />
        </return-response>
    </when>
</choose>

Controllo dell'autorità di certificazione e del soggettoChecking the issuer and subject

È possibile configurare i criteri riportati di seguito per controllare l'autorità di certificazione e il soggetto di un certificato client:Below policies can be configured to check the issuer and subject of a client certificate:

<choose>
    <when condition="@(context.Request.Certificate == null || context.Request.Certificate.Issuer != "trusted-issuer" || context.Request.Certificate.SubjectName != "expected-subject-name")" >
        <return-response>
            <set-status code="403" reason="Invalid client certificate" />
        </return-response>
    </when>
</choose>

Controllo dell'identificazione personaleChecking the thumbprint

I criteri riportati di seguito possono essere configurati per controllare l'identificazione personale del certificato client:Below policies can be configured to check the thumbprint of a client certificate:

<choose>
    <when condition="@(context.Request.Certificate == null || context.Request.Certificate.Thumbprint != "desired-thumbprint")" >
        <return-response>
            <set-status code="403" reason="Invalid client certificate" />
        </return-response>
    </when>
</choose>

Controllo di un'identificazione personale rispetto a certificati caricati in Gestione APIChecking a thumbprint against certificates uploaded to API Management

L'esempio seguente illustra come controllare l'identificazione personale di un certificato client rispetto a certificati caricati in Gestione API:The following example shows how to check the thumbprint of a client certificate against certificates uploaded to API Management:

<choose>
    <when condition="@(context.Request.Certificate == null || !context.Deployment.Certificates.Any(c => c.Value.Thumbprint == context.Request.Certificate.Thumbprint))" >
        <return-response>
            <set-status code="403" reason="Invalid client certificate" />
        </return-response>
    </when>
</choose>

Passaggio successivoNext step