Портал Azure: управление API проверяет сертификаты клиентов - PullRequest
1 голос
/ 07 марта 2019

Можно ли проверить сертификат клиента, отправленный с помощью вызова GET https, по сертификатам, которые находятся в хранилище сертификатов клиента API Manager?

На портале Azure это возможно толькозагружать клиентские сертификаты с закрытым ключом и паролем.Однако клиенты никогда не отправляют частный ключ часть своего сертификата со своим паролем.

Azure выдает ошибку, когда я пытаюсь загрузить сертификат клиента только с открытым ключом.

В соответствии с документацией по управлению API портала Azure это должно быть возможно: https://docs.microsoft.com/en-us/azure/api-management/api-management-howto-mutual-certificates-for-clients

Ответы [ 2 ]

1 голос
/ 27 марта 2019

в настоящее время невозможно загрузить клиентский сертификат только с открытым ключом.

Вы можете проверить клиентский сертификат, используемый для вызова вашего API, с помощью пользовательской политики (как указано в предоставленной вами ссылке),например, проверка отпечатка сертификата (поэтому нет необходимости загружать какой-либо сертификат).

например, вот так:

<policies>
    <inbound>
        <base />
        <choose>
            <when condition="@(context.Request.Certificate == null || context.Request.Certificate.Thumbprint != "F81E3171FA085BC04C83B6644B9F229F0CBA8E57")">
                <return-response>
                    <set-status code="403" reason="Invalid client certificate" />
                </return-response>
            </when>
        </choose>
    </inbound>
    <backend>
        <base />
    </backend>
    <outbound>
        <base />
    </outbound>
    <on-error>
        <base />
    </on-error>
</policies>
1 голос
/ 08 марта 2019

Эти две вещи являются отдельными функциями.Вы загружаете клиентские сертификаты (pfx с закрытым ключом) в APIM, когда хотите использовать этот сертификат для проверки подлинности вызовов, которые APIM выполняет для бэкенда.

Если вы хотите проверить, что клиент отправляет сертификаты в APIM, вы можете сделать это очень просто, простонапример, проверка отпечатка пальца context.Request.ClientCertificates в политике choose, или вы можете позвонить Verify или VerifyNoRevocation на сертификат, если он имеет полную цепочку.Чтобы сделать это, вы можете загрузить собственные сертификаты CA в APIM.

...