Требования к контексту

Требования к контексту выражаются в виде сочетания битовых флагов, передаваемых функции InitializeSecurityContext (General) или AcceptSecurityContext (General). Эти флаги влияют на контекст несколькими способами. Не все флаги применяются ко всем контекстам. Некоторые из них допустимы только для сервера, другие только для клиента.

Вызывающий объект использует параметр fContextReq вызова InitializeSecurityContext (General) или AcceptSecurityContext (General) для указания набора флагов, указывающих необходимые возможности. При возврате функции параметр pfContextAttr указывает атрибуты установленного контекста. Вызывающий объект определяет, допустимы ли конечные атрибуты контекста.

Флаги, запрашиваемые или возвращаемые InitializeSecurityContext (General), имеют префикс ISC. Те из них, которые запрашиваются или возвращаются AcceptSecurityContext (Общие), имеют префикс ASC. Флаги, передаваемые в функцию, включают REQ, а возвращенные флаги включают RET. Например, флаг запроса для взаимной проверки подлинности, передаваемый в InitializeSecurityContext (Общие), ISC_REQ_MUTUAL_AUTH. Сервер, запрашивающий взаимную проверку подлинности, передает ASC_REQ_MUTUAL_AUTH в AcceptSecurityContext (общие). Если выполняется взаимная проверка подлинности, функция InitializeSecurityContext (General) возвращает ISC_RET_MUTUAL_AUTH, а AcceptSecurityContext (General) возвращает ASC_RET_MUTUAL_AUTH. Если вызывающий объект запрашивает взаимную проверку подлинности, но пакет безопасности указывает, что она не может быть выполнена, вызывающий объект должен решить, следует ли отменить контекст или продолжить.

В следующей таблице описаны различные флаги контекстных требований.

Flag Описание
ДЕЛЕГАТ
Сервер в транспортном приложении может создавать новые контексты безопасности, олицетворяющие клиента, которые будут приниматься другими серверами в качестве контекстов клиента. Делегат работает, только если задано MUTUAL_AUTH. В настоящее время DELEGATE поддерживается только Kerberos. Кроме того, Kerberos будет делегировать только серверу с флагом TRUSTED_FOR_DELEGATION. Не используйте этот флаг для ограниченного делегирования.
MUTUAL_AUTH
Взаимодействующие стороны должны проверять подлинность своих удостоверений друг для друга. Без MUTUAL_AUTH клиент проверяет подлинность своего удостоверения на сервере. При MUTUAL_AUTH сервер также должен пройти проверку подлинности своего удостоверения для клиента.
При использовании пакета безопасности Schannel сервер устанавливает константу ASC_RET_MUTUAL_AUTH только в последнем вызове AcceptSecurityContext (Negotiate) после успешного завершения сопоставления сертификата.
REPLAY_DETECT
Пакет безопасности обнаруживает повторно воспроизводимые пакеты и уведомляет вызывающий объект, если пакет был воспроизведен. Использование этого флага подразумевает все условия, заданные флагом INTEGRITY.
SEQUENCE_DETECT
Контексту должно быть разрешено обнаруживать неупорядоченную доставку пакетов позже с помощью функций поддержки сообщений. Использование этого флага подразумевает все условия, заданные флагом INTEGRITY.
Конфиденциальность
Контекст может защитить данные во время передачи с помощью функций EncryptMessage (Общее) и DecryptMessage (Общее). Флаг КОНФИДЕНЦИАЛЬНОСТЬ не работает, если созданный контекст предназначен для гостевой учетной записи.
USE_SESSION_KEY
Необходимо согласовать новый ключ сеанса .
PROMPT_FOR_CREDS
Если клиент является интерактивным пользователем, пакет безопасности должен по возможности запрашивать у пользователя соответствующие учетные данные.
USE_SUPPLIED_CREDS
Сведения об учетных данных для конкретного пакета доступны во входном буфере. Пакет безопасности может использовать эти учетные данные для проверки подлинности подключения.
SAVE_SUPPLIED_CREDS
Предоставленные учетные данные должны кэшироваться с дополнительными учетными данными.
ALLOCATE_MEMORY
Пакет безопасности должен выделять память. В конечном итоге вызывающий объект должен вызвать функцию FreeContextBuffer , чтобы освободить память, выделенную пакетом безопасности.
USE_DCE_STYLE
Вызывающий объект ожидает трехуровневую транзакцию проверки подлинности.
ДАТАГРАММ
Необходимо использовать семантику datagram. Дополнительные сведения см. в разделе Контексты datagram.
CONNECTION
Необходимо использовать семантику подключения. Дополнительные сведения см. в разделе Контексты, ориентированные на подключение.
Поток
Необходимо использовать семантику потока. Дополнительные сведения см. в разделе Контексты потока.
EXTENDED_ERROR
При сбое контекста для однорангового узла должны создаваться ответные сообщения об ошибках.
ЦЕЛОСТНОСТИ
Целостность буфера можно проверить, но не включено определение последовательности или ответа.
NO_INTEGRITY
Требование INTEGRITY игнорируется.
ОПРЕДЕЛИТЬ
Когда сервер олицетворяет контекст, для которого задан этот флаг, это олицетворение обеспечивает чрезвычайно ограниченный доступ. Олицетворение с набором IDENTITY используется для проверки удостоверения клиента.