Integrated windows authentication что это

Встроенная проверка подлинности Windows Integrated Windows Authentication

Встроенная проверка подлинности Windows позволяет пользователям выполнять вход с использованием учетных данных Windows, используя Kerberos или NTLM. Integrated Windows authentication enables users to log in with their Windows credentials, using Kerberos or NTLM. Клиент отправляет учетные данные в заголовке авторизации. The client sends credentials in the Authorization header. Проверка подлинности Windows наилучшим образом подходит для среды интрасети. Windows authentication is best suited for an intranet environment. Дополнительные сведения: Проверка подлинности Windows. For more information, see Windows Authentication.

Преимущества Advantages Недостатки Disadvantages
Встроенные в IIS. Built into IIS. Не рекомендуется для Интернет приложений. Not recommended for Internet applications.
Не отправляет учетные данные пользователя в запросе. Does not send the user credentials in the request. Требует поддержки Kerberos или NTLM в клиенте. Requires Kerberos or NTLM support in the client.
Если клиентский компьютер принадлежит к домену (например, к приложению интрасети), пользователю не нужно вводить учетные данные. If the client computer belongs to the domain (for example, intranet application), the user does not need to enter credentials. Клиент должен находиться в домене Active Directory. Client must be in the Active Directory domain.

Если ваше приложение размещено в Azure и имеется локальный домен Active Directory, рассмотрите возможность Федерации локального AD с Azure Active Directory. If your application is hosted on Azure and you have an on-premise Active Directory domain, consider federating your on-premise AD with Azure Active Directory. Таким образом пользователи смогут входить с использованием локальных учетных данных, но проверка подлинности выполняется Azure AD. That way, users can log in with their on-premise credentials, but the authentication is performed by Azure AD. Дополнительные сведения см. в статье Проверка подлинности Azure. For more information, see Azure Authentication.

Чтобы создать приложение, использующее встроенную проверку подлинности Windows, выберите шаблон «приложение интрасети» в мастере проектов MVC 4. To create an application that uses Integrated Windows authentication, select the «Intranet Application» template in the MVC 4 project wizard. Этот шаблон проекта помещает в файл Web.config следующий параметр: This project template puts the following setting in the Web.config file:

На стороне клиента встроенная проверка подлинности Windows работает с любым браузером, поддерживающим схему проверки подлинности Negotiate , которая включает большинство основных браузеров. On the client side, Integrated Windows authentication works with any browser that supports the Negotiate authentication scheme, which includes most major browsers. Для клиентских приложений .NET класс HttpClient поддерживает проверку подлинности Windows: For .NET client applications, the HttpClient class supports Windows authentication:

Проверка подлинности Windows уязвима для атак с подделкой межсайтовых запросов (CSRF). Windows authentication is vulnerable to cross-site request forgery (CSRF) attacks. См. раздел предотвращение атак с подделкой межсайтовых запросов (CSRF). See Preventing Cross-Site Request Forgery (CSRF) Attacks.

Integrated Windows Authentication

Integrated Windows authentication enables users to log in with their Windows credentials, using Kerberos or NTLM. The client sends credentials in the Authorization header. Windows authentication is best suited for an intranet environment. For more information, see Windows Authentication.

Advantages Disadvantages
Built into IIS. Not recommended for Internet applications.
Does not send the user credentials in the request. Requires Kerberos or NTLM support in the client.
If the client computer belongs to the domain (for example, intranet application), the user does not need to enter credentials. Client must be in the Active Directory domain.

If your application is hosted on Azure and you have an on-premise Active Directory domain, consider federating your on-premise AD with Azure Active Directory. That way, users can log in with their on-premise credentials, but the authentication is performed by Azure AD. For more information, see Azure Authentication.

To create an application that uses Integrated Windows authentication, select the «Intranet Application» template in the MVC 4 project wizard. This project template puts the following setting in the Web.config file:

On the client side, Integrated Windows authentication works with any browser that supports the Negotiate authentication scheme, which includes most major browsers. For .NET client applications, the HttpClient class supports Windows authentication:

Windows authentication is vulnerable to cross-site request forgery (CSRF) attacks. See Preventing Cross-Site Request Forgery (CSRF) Attacks.

Встроенная проверка подлинности Windows — Integrated Windows Authentication

Интегрированная проверка подлинности Windows ( IWA ) — это термин, связанный с продуктами Microsoft, который относится к протоколам проверки подлинности SPNEGO , Kerberos и NTLMSSP в отношении функций SSPI, представленных в Microsoft Windows 2000 и включенных в более поздние операционные системы на базе Windows NT . Этот термин чаще используется для автоматически аутентифицируемых соединений между Microsoft Internet Information Services , Internet Explorer и другими приложениями, поддерживающими Active Directory .

МАТ также известен под несколькими названиями , такими как HTTP Negotiate аутентификации , NT Authentication , проверка подлинности NTLM , проверка подлинности домена , встроенную проверку подлинности Windows , Windows NT вызов / аутентификации ответа , или просто проверки подлинности Windows .

СОДЕРЖАНИЕ

Обзор

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

Сама по себе встроенная проверка подлинности Windows не является стандартом или протоколом проверки подлинности. Когда IWA выбран в качестве опции программы (например, на вкладке « Безопасность каталога » диалогового окна свойств сайта IIS ), это означает, что лежащие в основе механизмы безопасности должны использоваться в приоритетном порядке. Если провайдер Kerberos работает и билет Kerberos может быть получен для цели, и любые связанные параметры разрешают проверку подлинности Kerberos (например, параметры сайтов интрасети в Internet Explorer ), будет предпринята попытка использования протокола Kerberos 5. В противном случае выполняется попытка проверки подлинности NTLMSSP . Точно так же, если попытка проверки подлинности Kerberos не удалась, выполняется попытка NTLMSSP. IWA использует SPNEGO, чтобы позволить инициаторам и получателям согласовывать Kerberos или NTLMSSP. Сторонние утилиты расширили парадигму интегрированной аутентификации Windows на системы UNIX, Linux и Mac.

Поддерживаемые веб-браузеры

Встроенная проверка подлинности Windows работает с большинством современных веб-браузеров, но не работает на некоторых прокси-серверах HTTP . Поэтому его лучше всего использовать в интрасетях, где все клиенты находятся в одном домене . Он может работать с другими веб-браузерами, если они настроены на передачу учетных данных пользователя на сервер, запрашивающий аутентификацию. Если для самого прокси-сервера требуется проверка подлинности NTLM, некоторые приложения, такие как Java, могут не работать, поскольку протокол для проверки подлинности прокси не описан в RFC-2069.

Встроенная аутентификация Windows с расширенной защитой Integrated Windows Authentication with Extended Protection

Были добавлены улучшения, которые влияют на обработку встроенной проверки подлинности Windows в HttpWebRequest, HttpListener, SmtpClient, SslStream, NegotiateStream и связанных классах в System.Net и соответствующих пространствах имен. Enhancements were made that affect how integrated Windows authentication is handled by the HttpWebRequest, HttpListener, SmtpClient, SslStream, NegotiateStream, and related classes in the System.Net and related namespaces. Была добавлена поддержка расширенной защиты для повышения безопасности. Support was added for extended protection to enhance security.

Эти изменения могут влиять на приложения, которые используют эти классы для создания веб-запросов и получения ответов, в которых используется встроенная проверка подлинности Windows. These changes can affect applications that use these classes to make web requests and receive responses where integrated Windows authentication is used. Это изменение также может повлиять на веб-серверы и клиентские приложения, в которых используется встроенная проверка подлинности Windows. This change can also impact web servers and client applications that are configured to use integrated Windows authentication.

Эти изменения могут также влиять на приложения, которые используют эти классы для создания других типов запросов и получения ответов, в которых используется встроенная проверка подлинности Windows. These changes can also affect applications that use these classes to make other types of requests and receive responses where integrated Windows authentication is used.

Изменения для поддержки расширенной защиты будут доступны только для приложений в Windows 7 и Windows Server 2008 R2. The changes to support extended protection are available only for applications on Windows 7 and Windows Server 2008 R2. Функции расширенной защиты недоступны в более ранних версиях Windows. The extended protection features are not available on earlier versions of Windows.

Обзор Overview

Структура встроенной проверки подлинности Windows позволяет формировать универсальные ответы на некоторые запросы учетных данных. Это означает, что эти ответы можно повторно использовать или перенаправлять. The design of integrated Windows authentication allows for some credential challenge responses to be universal, meaning they can be re-used or forwarded. Ответы на запросы должны обязательно содержать сведения о целевом объекте, а также могут содержать некоторые сведения о канале. The challenge responses should be constructed at a minimum with target specific information and preferably also with some channel specific information. Кроме того, службы могут предоставлять расширенную защиту, чтобы в ответах на запросы учетных данных также содержались сведения о службе, например имя субъекта-службы. Services can then provide extended protection to ensure that credential challenge responses contain service specific information such as a Service Principal Name (SPN). С включением этих сведений в ответы на запросы учетных данных службы могут обеспечить лучшую защиту при изменении ответов на запросы учетных данных злоумышленниками. With this information in the credential exchanges, services are able to better protect against malicious use of credential challenge responses that might have been improperly used.

Механизм расширенной защиты представляет собой улучшение протоколов проверки подлинности, предназначенное для исключения атак на ретрансляторы проверки подлинности. The extended protection design is an enhancement to authentication protocols designed to mitigate authentication relay attacks. Это улучшение связано с концепцией каналов и сведениями о привязке службы. It revolves around the concept of channel and service binding information.

Общие цели улучшения таковы. The overall objectives are the following:

При обновлении клиента для поддержки расширенной защиты приложения должны предоставить сведения о привязке канала и привязке службы для всех поддерживаемых протоколов проверки подлинности. If the client is updated to support the extended protection, applications should supply a channel binding and service binding information to all supported authentication protocols. Сведения о привязке канала могут быть предоставлены только при наличии канала (TLS), к которому выполняется привязка. Channel binding information can only be supplied when there is a channel (TLS) to bind to. Сведения о привязке службы должны предоставляться всегда. Service binding information should always be supplied.

Обновленные серверы, которые правильно настроены, могут проверять сведения о привязке для канала и службы, если эти сведения содержатся в маркере проверки подлинности клиента, и отклонять попытки проверки подлинности, если привязки каналов не совпадают. Updated servers which are properly configured may verify the channel and service binding information when it is present in the client authentication token and reject the authentication attempt if the channel bindings do not match. В зависимости от сценария развертывания серверы могут проверять привязку канала, привязку службы или обе привязки. Depending on the deployment scenario, servers may verify channel binding, service binding or both.

Обновленные серверы могут принимать или отклонять запросы клиентов нижнего уровня, которые не содержат сведений о привязке канала, на основе политики. Updated servers have the ability to accept or reject down-level client requests that do not contain the channel binding information based on policy.

Сведения, используемые для расширенной защиты, включают в себя один или оба следующих компонента: Information used by extended protection consists of one or both of the following two parts:

Маркер привязки канала. A Channel Binding Token or CBT.

Сведения о привязке службы в виде имени субъекта-службы. Service Binding information in the form of a Service Principal Name or SPN.

Сведения о привязке службы свидетельствуют о намерении клиента проверить подлинность для конкретной конечной точки службы. Service Binding information is an indication of a client’s intent to authenticate to a particular service endpoint. Эти сведения передаются от клиента на сервер с помощью следующих свойств: It is communicated from client to server with the following properties:

Значение имени субъекта-службы должно быть доступно на сервере, выполняющем проверку подлинности клиента, в виде открытого текста. The SPN value must be available to the server performing client authentication in clear text form.

Значение имени субъекта-службы является открытым. The value of the SPN is public.

Имя субъекта-службы должно быть криптографически защищено во время передачи, чтобы его было невозможно вставить, удалить или изменить с помощью атаки «человек посередине». The SPN must be cryptographically protected in transit such that a man-in-the-middle attack cannot insert, remove or modify its value.

Маркер привязки канала — это свойство внешнего безопасного канала (например, TLS), которое используется для привязки этого канала к обмену данными во внутреннем канале, проверку подлинности которого выполнил клиент. A CBT is a property of the outer secure channel (such as TLS) used to tie (bind) it to a conversation over an inner, client-authenticated channel. Маркер привязки канала должен иметь следующие свойства (эти свойства также определяются в стандарте RFC 5056, принятом IETF): The CBT must have the following properties (also defined by IETF RFC 5056):

При наличии внешнего канала значение маркера привязки канала должно определять внешний канал или конечную точку сервера. Маркер привязки канала должен быть получен обеими сторонами обмена (клиентской и серверной) независимо друг от друга. When an outer channel exists, the value of the CBT must be a property identifying either the outer channel or the server endpoint, independently arrived at by both client and server sides of a conversation.

Злоумышленник не должен иметь возможность повлиять на значение маркера привязки канала. Value of the CBT sent by the client must not be something an attacker can influence.

Конфиденциальность маркера привязки канала не гарантируется. No guarantees are made about secrecy of the CBT value. Однако это не означает, что значение привязки службы и сведения о привязке канала могут быть доступны кому-то, кроме сервера, выполняющего проверку подлинности, так как протокол, посредством которого передается маркер привязки канала, может шифровать этот маркер. This does not however mean that the value of the service binding as well as channel binding information can always be examined by any other but the server performing authentication, as the protocol carrying the CBT may be encrypting it.

Целостность маркера привязки канала должна быть криптографически защищена во время передачи, чтобы его значение было невозможно вставить, удалить или изменить с помощью атаки «человек посередине». The CBT must be cryptographically integrity protected in transit such that an attacker cannot insert, remove or modify its value.

Привязка канала выполняется клиентом, который передает имя субъекта-службы и маркер привязки канала на сервер в защищенном режиме. Channel binding is accomplished by the client transferring the SPN and the CBT to the server in a tamperproof fashion. Сервер проверяет сведения о привязке канала в соответствии со своей политикой и отклоняет попытки проверки подлинности, целевым объектом которых он не является. The server validates the channel binding information in accordance with its policy and rejects authentication attempts for which it does not believe itself to have been the intended target. Таким образом, два каналы становятся криптографически связанными друг с другом. This way, the two channels become cryptographically bound together.

Для сохранения совместимости с существующими клиентами и приложениями сервер можно настроить таким образом, чтобы разрешить попытки проверки подлинности для клиентов, которые еще не поддерживают расширенную защиту. To preserve compatibility with existing clients and applications, a server may be configured to allow authentication attempts by clients that do not yet support extended protection. Это называется «частично усиленной» конфигурацией в отличие от «полностью усиленной» конфигурации. This is referred to as a «partially hardened» configuration, in contrast to a «fully hardened» configuration.

Несколько компонентов в пространствах имен System.Net и System.Net.Security выполняют встроенную проверку подлинности Windows от имени вызывающего приложения. Multiple components in the System.Net and System.Net.Security namespaces perform integrated Windows authentication on behalf of a calling application. В этом разделе описаны изменения в компонентах System.Net для добавления расширенной защиты при использовании встроенной проверки подлинности Windows в этих компонентах. This section describes changes to System.Net components to add extended protection in their use of integrated Windows authentication.

Расширенная защита поддерживается в Windows 7. Extended protection is currently supported on Windows 7. Предоставляется механизм, с помощью которого приложение может определить, поддерживает ли операционная система расширенную защиту. A mechanism is provided so an application can determine if the operating system supports extended protection.

Изменения для поддержки расширенной защиты Changes to Support Extended Protection

Процесс проверки подлинности, используемый со встроенной проверкой подлинности Windows, в зависимости от протокола проверки подлинности часто включает в себя запрос, который выдается компьютером назначения и отправляется обратно на клиентский компьютер. The authentication process used with integrated Windows authentication, depending on the authentication protocol used, often includes a challenge issued by the destination computer and sent back to the client computer. Расширенная защита добавляет новые функции при проверке подлинности Extended protection adds new features to this authentication process

Пространство имен System.Security.Authentication.ExtendedProtection обеспечивает поддержку проверки подлинности для приложений с использованием расширенной защиты. The System.Security.Authentication.ExtendedProtection namespace provides support for authentication using extended protection for applications. Класс ChannelBinding в этом пространстве имен представляет привязку каналов. The ChannelBinding class in this namespace represents a channel binding. Класс ExtendedProtectionPolicy в этом пространстве имен представляет политику расширенной защиты, используемую сервером для проверки входящих клиентских подключений. The ExtendedProtectionPolicy class in this namespace represents the extended protection policy used by the server to validate incoming client connections. Другие члены класса используются с расширенной защитой. Other class members are used with extended protection.

Для серверных приложений к таким классам относятся следующие: For server applications, these classes include the following:

Класс ExtendedProtectionPolicy, содержащий следующие элементы: A ExtendedProtectionPolicy that has the following elements:

Свойство OSSupportsExtendedProtection, которое указывает, поддерживает ли операционная система встроенную проверку подлинности Windows с расширенной защитой. An OSSupportsExtendedProtection property that indicates whether the operating system supports integrated windows authentication with extended protection.

Значение PolicyEnforcement, указывающее, когда следует применять расширенную политику защиты. A PolicyEnforcement value that indicates when the extended protection policy should be enforced.

Значение ProtectionScenario, которое указывает сценарий развертывания. A ProtectionScenario value that indicates the deployment scenario. Это влияет на проверку расширенной защиты. This influences how extended protection is checked.

Необязательный объект ServiceNameCollection, содержащий пользовательский список имен субъектов-служб, который используется для проверки имени субъекта-службы, предоставленного клиентом в виде целевого объекта проверки подлинности. An optional ServiceNameCollection that contains the custom SPN list that is used to match against the SPN provided by the client as the intended target of the authentication.

Необязательный объект ChannelBinding, содержащий пользовательскую привязку канала, используемую при проверке. An optional ChannelBinding that contains a custom channel binding to use for validation. Этот сценарий не является наиболее распространенным. This scenario is not a common case

Пространство имен System.Security.Authentication.ExtendedProtection.Configuration обеспечивает поддержку настройки проверки подлинности для приложений с использованием расширенной защиты. The System.Security.Authentication.ExtendedProtection.Configuration namespace provides support for configuration of authentication using extended protection for applications.

В существующем пространстве имен System.Net были изменены некоторые функции для поддержки расширенной защиты. A number of feature changes were made to support extended protection in the existing System.Net namespace. К этим изменениям относятся следующие: These changes include the following:

В пространство имен System.Net добавлен новый класс TransportContext, который представляет контекст транспорта. A new TransportContext class added to the System.Net namespace that represents a transport context.

В класс HttpWebRequest добавлены новые перегрузки методов EndGetRequestStream и GetRequestStream, которые позволяют получить TransportContext для поддержки расширенной защиты клиентских приложений. New EndGetRequestStream and GetRequestStream overload methods in the HttpWebRequest class that allow retrieving the TransportContext to support extended protection for client applications.

Дополнения к классам HttpListener и HttpListenerRequest для поддержки серверных приложений. Additions to the HttpListener and HttpListenerRequest classes to support server applications.

Была изменена функция для поддержки расширенной защиты для клиентских приложений SMTP в существующем пространстве имен System.Net.Mail: A feature change was made to support extended protection for SMTP client applications in the existing System.Net.Mail namespace:

  • Свойство TargetName в классе SmtpClient, которое представляет имя участника-службы, используемое для проверки подлинности при использовании расширенной защиты для клиентских приложений SMTP. A TargetName property in the SmtpClient class that represents the SPN to use for authentication when using extended protection for SMTP client applications.

В существующем пространстве имен System.Net.Security были изменены некоторые функции для поддержки расширенной защиты. A number of feature changes were made to support extended protection in the existing System.Net.Security namespace. К этим изменениям относятся следующие: These changes include the following:

В класс NegotiateStream добавлены новые перегрузки методов BeginAuthenticateAsClient и AuthenticateAsClient, которые позволяют передавать маркер привязки канала для поддержки расширенной защиты клиентских приложений. New BeginAuthenticateAsClient and AuthenticateAsClient overload methods in the NegotiateStream class that allow passing a CBT to support extended protection for client applications.

В класс NegotiateStream добавлены новые перегрузки методов BeginAuthenticateAsServer и AuthenticateAsServer, которые позволяют передавать ExtendedProtectionPolicy для поддержки расширенной защиты серверных приложений. New BeginAuthenticateAsServer and AuthenticateAsServer overload methods in the NegotiateStream class that allow passing an ExtendedProtectionPolicy to support extended protection for server applications.

Новое свойство TransportContext в классе SslStream для поддержки расширенной защиты клиентских и серверных приложений. A new TransportContext property in the SslStream class to support extended protection for client and server applications.

В пространство имен System.Net.Security добавлено свойство SmtpNetworkElement для поддержки настройки расширенной защиты для клиентов SMTP. A SmtpNetworkElement property was added to support configuration of extended protection for SMTP clients in the System.Net.Security namespace.

Расширенная защита для клиентских приложений Extended Protection for Client Applications

Для большинства приложений расширенная защита поддерживается автоматически. Extended protection support for most client applications happens automatically. Классы HttpWebRequest и SmtpClient поддерживают расширенную защиту, если базовая версия Windows поддерживает расширенную защиту. The HttpWebRequest and SmtpClient classes support extended protection whenever the underlying version of Windows supports extended protection. Экземпляр HttpWebRequest отправляет имя участника-службы, сформированное из Uri. An HttpWebRequest instance sends an SPN constructed from the Uri. По умолчанию экземпляр SmtpClient отправляет имя участника-службы, сформированное из имени узла на почтовом сервере SMTP. By default, an SmtpClient instance sends an SPN constructed from the host name of the SMTP mail server.

Для пользовательской проверки подлинности клиентские приложения могут использовать методы HttpWebRequest.EndGetRequestStream(IAsyncResult, TransportContext) или HttpWebRequest.GetRequestStream(TransportContext) в классе HttpWebRequest, которые позволяют получить TransportContext и маркер привязки канала с помощью метода GetChannelBinding. For custom authentication, client applications can use the HttpWebRequest.EndGetRequestStream(IAsyncResult, TransportContext) or HttpWebRequest.GetRequestStream(TransportContext) methods in the HttpWebRequest class that allow retrieving the TransportContext and the CBT using the GetChannelBinding method.

Имя субъекта-службы для встроенной проверки подлинности Windows, которое отправляется экземпляром HttpWebRequest в заданную службу, можно переопределить, задав свойство CustomTargetNameDictionary. The SPN to use for integrated Windows authentication sent by an HttpWebRequest instance to a given service can be overridden by setting the CustomTargetNameDictionary property.

Свойство TargetName можно использовать для установки пользовательского имени субъекта-службы, которое будет использоваться во встроенной проверке подлинности Windows для соединения SMTP. The TargetName property can be used to set a custom SPN to use for integrated Windows authentication for the SMTP connection.

Расширенная защита для серверных приложений Extended Protection for Server Applications

HttpListener автоматически предоставляет механизмы для проверки привязок службы при проверке подлинности HTTP. HttpListener automatically provides mechanisms for validating service bindings when performing HTTP authentication.

Наиболее безопасный сценарий — включение расширенной защиты для префиксов HTTPS:// . The most secure scenario is to enable extended protection for HTTPS:// prefixes. В этом случае установите HttpListener.ExtendedProtectionPolicy в значение ExtendedProtectionPolicy, PolicyEnforcement — в значение WhenSupported или Always и ProtectionScenario — в значение TransportSelected. Значение WhenSupported переводит HttpListener в частично усиленный режим, а Always — в полностью усиленный режим. In this case, set HttpListener.ExtendedProtectionPolicy to an ExtendedProtectionPolicy with PolicyEnforcement set to WhenSupported or Always, and ProtectionScenario set to TransportSelected A value of WhenSupported puts HttpListener in partially hardened mode, while Always corresponds to fully hardened mode.

В этой конфигурации при выполнении запроса к серверу с помощью внешнего безопасного канала у внешнего канала запрашивается привязка канала. In this configuration when a request is made to the server through an outer secure channel, the outer channel is queried for a channel binding. Эта привязка канала передается вызовам проверки подлинности SSPI, которые проверяют соответствие переданной привязки и привязки канала в BLOB-объекте проверки подлинности. This channel binding is passed to the authentication SSPI calls, which validate that the channel binding in the authentication blob matches. Существует три возможных результата: There are three possible outcomes:

Базовая операционная система сервера не поддерживает расширенную защиту. The server’s underlying operating system does not support extended protection. Запрос не будет передан в приложение, и клиенту будет возвращен ответ 401 (Не авторизовано). The request will not be exposed to the application, and an unauthorized (401) response will be returned to the client. В источник трассировки HttpListener будет записано сообщение с указанием причины сбоя. A message will be logged to the HttpListener trace source specifying the reason for the failure.

Если вызов SSPI завершается неудачно, это означает, что либо клиент предоставил привязку канала, которая не соответствует ожидаемому значению привязки, полученному из внешнего канала, либо клиенту не удалось предоставить привязку канала при настройке политики расширенной защиты на сервере для Always. The SSPI call fails indicating that either the client specified a channel binding that did not match the expected value retrieved from the outer channel or the client failed to supply a channel binding when the extended protection policy on the server was configured for Always. В обоих случаях запрос не будет передан в приложение, и клиенту будет возвращен ответ 401 (Не авторизовано). In both cases, the request will not be exposed to the application, and an unauthorized (401) response will be returned to the client. В источник трассировки HttpListener будет записано сообщение с указанием причины сбоя. A message will be logged to the HttpListener trace source specifying the reason for the failure.

Клиент указывает правильную привязку канала или получает возможность подключиться без указания привязки канала, так как политика расширенной защиты на сервере настроена со свойством WhenSupported. Запрос возвращается приложению для обработки. The client specifies the correct channel binding or is allowed to connect without specifying a channel binding since the extended protection policy on the server is configured with WhenSupported The request is returned to the application for processing. Имена служб не проверяются автоматически. No service name check is performed automatically. Приложение может выполнить собственную проверку имени службы с помощью свойства ServiceName, но в таких обстоятельствах это действие является избыточным. An application may choose to perform its own service name validation using the ServiceName property, but under these circumstances it is redundant.

Если приложение выполняет собственные вызовы SSPI для проверки подлинности на основе BLOB-объектов, передаваемых в тексте HTTP-запроса, и хочет поддерживать привязки каналов, приложение должно получить ожидаемую привязку канала из внешнего безопасного канала с помощью HttpListener и передать ее собственной функции Win32 AcceptSecurityContext. If an application makes its own SSPI calls to perform authentication based on blobs passed back and forth within the body of an HTTP request and wishes to support channel binding, it needs to retrieve the expected channel binding from the outer secure channel using HttpListener in order to pass it to native Win32 AcceptSecurityContext function. Для этого используйте свойство TransportContext и вызовите метод GetChannelBinding для получения маркера привязки канала. To do this, use the TransportContext property and call GetChannelBinding method to retrieve the CBT. Поддерживаются только привязки конечной точки. Only endpoint bindings are supported. Если указано что-то иное, кроме Endpoint, будет выдано исключение NotSupportedException. If anything other Endpoint is specified, a NotSupportedException will be thrown. Если базовая операционная система поддерживает привязки каналов, метод GetChannelBinding будет возвращать объект ChannelBindingSafeHandle, в котором содержится указатель на привязку канала, который можно передать функции AcceptSecurityContext в качестве элемента pvBuffer структуры SecBuffer, передаваемой в параметре pInput . If the underlying operating system supports channel binding, the GetChannelBinding method will return a ChannelBindingSafeHandle wrapping a pointer to a channel binding suitable for passing to AcceptSecurityContext function as the pvBuffer member of a SecBuffer structure passed in the pInput parameter. Свойство Size содержит длину привязки канала в байтах. The Size property contains the length, in bytes, of the channel binding. Если базовая операционная система не поддерживает привязки каналов, функция возвращает null . If the underlying operating system does not support channel bindings, the function will return null .

Другой возможный сценарий — включение расширенной защиты для префиксов HTTP:// , когда прокси не используются. Another possible scenario is to enable extended protection for HTTP:// prefixes when proxies are not used. В этом случае установите HttpListener.ExtendedProtectionPolicy в значение ExtendedProtectionPolicy, PolicyEnforcement — в значение WhenSupported или Always и ProtectionScenario — в значение TransportSelected. Значение WhenSupported переводит HttpListener в частично усиленный режим, а Always — в полностью усиленный режим. In this case, set HttpListener.ExtendedProtectionPolicy to an ExtendedProtectionPolicy with PolicyEnforcement set to WhenSupported or Always, and ProtectionScenario set to TransportSelected A value of WhenSupported puts HttpListener in partially hardened mode, while Always corresponds to fully hardened mode.

По умолчанию список допустимых имен служб создается на основе префиксов, которые были зарегистрированы с HttpListener. A default list of allowed service names is created based on the prefixes which have been registered with the HttpListener. Для просмотра списка по умолчанию можно использовать свойство DefaultServiceNames. This default list can be examined through the DefaultServiceNames property. Если этот список не является исчерпывающим, приложение может указать пользовательскую коллекцию имен служб в конструкторе класса ExtendedProtectionPolicy, и эта коллекция будет использоваться вместо списка имен служб по умолчанию. If this list is not comprehensive, an application can specify a custom service name collection in the constructor for the ExtendedProtectionPolicy class which will be used instead of the default service name list.

В этой конфигурации при отправке запроса на сервер без использования внешнего безопасного канала проверка подлинности выполняется нормально без проверки привязки канала. In this configuration, when a request is made to the server without an outer secure channel authentication proceeds normally without a channel binding check. Если проверка подлинности завершается успешно, то в контексте запрашивается имя службы, предоставленное клиентом, и это имя службы проверяется на соответствие списку допустимых имен служб. If the authentication succeeds, the context is queried for the service name that the client provided and validated against the list of acceptable service names. Существует четыре возможных результата: There are four possible outcomes:

Базовая операционная система сервера не поддерживает расширенную защиту. The server’s underlying operating system does not support extended protection. Запрос не будет передан в приложение, и клиенту будет возвращен ответ 401 (Не авторизовано). The request will not be exposed to the application, and an unauthorized (401) response will be returned to the client. В источник трассировки HttpListener будет записано сообщение с указанием причины сбоя. A message will be logged to the HttpListener trace source specifying the reason for the failure.

Базовая операционная система клиента не поддерживает расширенную защиту. The client’s underlying operating system does not support extended protection. В конфигурации WhenSupported попытка проверки подлинности завершится успешно, и запрос будет возвращен в приложение. In the WhenSupported configuration, the authentication attempt will succeed and the request will be returned to the application. В конфигурации Always попытка проверки подлинности завершится неудачно. In the Always configuration, the authentication attempt will fail. Запрос не будет передан в приложение, и клиенту будет возвращен ответ 401 (Не авторизовано). The request will not be exposed to the application, and an unauthorized (401) response will be returned to the client. В источник трассировки HttpListener будет записано сообщение с указанием причины сбоя. A message will be logged to the HttpListener trace source specifying the reason for the failure.

Базовая операционная система клиента поддерживает расширенную защиту, но в приложении не указана привязка службы. The client’s underlying operating system supports extended protection, but the application did not specify a service binding. Запрос не будет передан в приложение, и клиенту будет возвращен ответ 401 (Не авторизовано). The request will not be exposed to the application, and an unauthorized (401) response will be returned to the client. В источник трассировки HttpListener будет записано сообщение с указанием причины сбоя. A message will be logged to the HttpListener trace source specifying the reason for the failure.

В клиенте указана привязка службы. The client specified a service binding. Привязка службы сравнивается со списком допустимых привязок службы. The service binding is compared to the list of allowed service bindings. Если привязка соответствует списку, запрос возвращается приложению. If it matches, the request is returned to the application. В противном случае запрос не будет передан в приложение, и клиенту будет автоматически возвращен ответ 401 (Не авторизовано). Otherwise, the request will not be exposed to the application, and an unauthorized (401) response will be automatically returned to the client. В источник трассировки HttpListener будет записано сообщение с указанием причины сбоя. A message will be logged to the HttpListener trace source specifying the reason for the failure.

Если этого простого подхода со списком допустимых имен служб недостаточно, приложение может выполнять собственную проверку имени службы, обращаясь к свойству ServiceName. If this simple approach using an allowed list of acceptable service names is insufficient, an application may provide its own service name validation by querying the ServiceName property. В случаях 1 и 2 выше свойство возвратит null . In cases 1 and 2 above, the property will return null . В случае 3 будет возвращена пустая строка. In case 3, it will return an empty string. В случае 4 будет возвращено имя службы, указанное клиентом. In case 4, the service name specified by the client will be returned.

Эти функции расширенной защиты также могут использоваться серверными приложениями для проверки подлинности с другими типами запросов, а также при использовании доверенного прокси. These extended protection features can also be used by server applications for authentication with other types of requests and when trusted proxies are used.

Читайте также:  Дублированный экран windows 10
Оцените статью