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


Инициализация контекста сервера

Как и клиент, сервер также получает дескриптор учетных данных , чтобы быть готовым ответить на входящий запрос проверки подлинности от клиента. Учетные данные сервера используются для проверки подлинности сервера на клиенте в протоколах безопасности , поддерживающих проверку подлинности сервера или взаимную проверку подлинности. Сервер получает дескриптор своих учетных данных, определенных учетной записью службы, используемой для запуска сервера. Это делается путем вызова AcquireCredentialsHandle.

Сервер может получить дескриптор учетных данных, а затем перейти в состояние прослушивания или ждать в состоянии прослушивания, пока не поступит запрос на подключение, а затем получить дескриптор входящих учетных данных. Дополнительные сведения о функциях учетных данных см. в разделе Управление учетными данными.

Когда сервер получает сообщение о запросе на подключение от клиента, он создает локальный контекст безопасности для клиента с помощью AcceptSecurityContext (Общие). Сервер использует этот локальный контекст безопасности для выполнения будущих запросов от того же клиента. Дополнительные сведения о контекстных функциях см. в разделе Управление контекстом.

Сервер проверяет состояние возврата и дескриптор буфера вывода, чтобы убедиться, что на данный момент нет ошибок, и может отклонить запрос на подключение в случае ошибок. Если в выходном буфере есть сведения, возвращаемые AcceptSecurityContext (General), он объединяет этот буфер в ответное сообщение клиенту.

Любой выходной буфер из AcceptSecurityContext (General) должен быть отправлен обратно клиенту. Кроме того, если состояние возврата требует продолжения протокола (SEC_I_CONTINUE_NEEDED или SEC_I_COMPLETE_AND_CONTINUE), требуется другой обмен сообщениями с клиентом.

Для дополнительных узлов сервер ожидает ответа клиента другим сообщением. Это время ожидания может быть истекло, чтобы избежать атаки типа "отказ в обслуживании", когда клиент намеренно не отвечает, в результате чего поток сервера и вскоре все потоки сервера перестают отвечать.