Поделиться через


Выполнение проверки подлинности с помощью Schannel

Все протоколы Schannel требуют, чтобы сервер предоставлял сертификат из доверенного центра сертификации (ЦС) в качестве подтверждения своей личности. Этот процесс называется проверкой подлинности сервера. Проверка подлинности клиента, при которой клиент предоставляет подтверждение своей личности, является необязательной и может быть запрошена сервером в любое время.

Проверка подлинности сервера

По умолчанию Schannel использует функцию WinVerifyTrust для проверки целостности и владения сертификатом сервера. Чтобы отключить эту функцию, укажите ISC_REQ_MANUAL_CRED_VALIDATION при вызове функции InitializeSecurityContext (Schannel). Дополнительные сведения см. в разделе Проверка учетных данных Schannel вручную.

Проверка подлинности клиента

Schannel не проверяет сертификаты клиента; сервер должен выполнить эту проверку подлинности вручную. Как правило, сервер проверка удостоверение клиента в базе данных, содержащей сведения об учетной записи пользователя. Сведения о серверах, которым необходимо получить учетную запись клиента с помощью сертификата, см. в разделе Сертификаты сопоставления.

Когда сервер запрашивает проверку подлинности клиента, клиент должен отправить серверу один из его сертификатов. По умолчанию Schannel без уведомления клиента попытается найти сертификат клиента и отправить его на сервер. Чтобы отключить эту функцию, клиенты указывают ISC_REQ_USE_SUPPLIED_CREDS при вызове функции InitializeSecurityContext (Schannel). Если этот флаг указан, Schannel вернет клиенту SEC_I_INCOMPLETE_CREDENTIALS, когда сервер запрашивает проверку подлинности, а клиент ранее не предоставил сертификат.