Требования к контексту
Требования к контексту выражаются в виде сочетания битовых флагов, передаваемых функции 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 используется для проверки удостоверения клиента. |