Autenticação Integrada do Windows com proteção estendidaIntegrated Windows Authentication with Extended Protection

Foram feitas melhorias que afetam a maneira como a autenticação integrada do Windows é controlada por HttpWebRequest, HttpListener, SmtpClient, SslStream, NegotiateStream e por classes relacionadas no System.Net e por namespaces relacionados.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. Foi adicionado suporte à proteção estendida a fim de aprimorar a segurança.Support was added for extended protection to enhance security.

Essas alterações podem afetar os aplicativos que usam essas classes para fazer solicitações da Web e receber respostas em que a autenticação integrada do Windows é usada.These changes can affect applications that use these classes to make web requests and receive responses where integrated Windows authentication is used. Essa alteração também pode afetar os servidores Web e aplicativos cliente configurados para usar a autenticação integrada do Windows.This change can also impact web servers and client applications that are configured to use integrated Windows authentication.

Essas alterações também podem afetar os aplicativos que usam essas classes para fazer outros tipos de solicitações e receber respostas em que a autenticação integrada do Windows é usada.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.

As alterações para dar suporte à proteção estendida estão disponíveis somente para aplicativos no Windows 7 e Windows Server 2008 R2.The changes to support extended protection are available only for applications on Windows 7 and Windows Server 2008 R2. Os recursos de proteção estendida não estão disponíveis em versões anteriores do Windows.The extended protection features are not available on earlier versions of Windows.

Visão geralOverview

O design da autenticação integrada do Windows permite que algumas respostas de desafio de credencial sejam universais, o que significa que elas podem ser reutilizadas ou encaminhadas.The design of integrated Windows authentication allows for some credential challenge responses to be universal, meaning they can be re-used or forwarded. As respostas de desafio devem ser construídas no mínimo com informações específicas do destino e preferencialmente também com algumas informações específicas de canal.The challenge responses should be constructed at a minimum with target specific information and preferably also with some channel specific information. Os serviços, em seguida, podem fornecer proteção estendida para assegurar que as respostas de desafio de credencial contenham informações específicas do serviço, tal como um SPN (nome da entidade de serviço).Services can then provide extended protection to ensure that credential challenge responses contain service specific information such as a Service Principal Name (SPN). Com essas informações nas trocas de credenciais, os serviços são capazes de proteger melhor contra o uso mal intencionado de respostas de desafio de credencial que podem ter sido usadas incorretamente.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.

O design de proteção estendida é uma melhoria projetada para minimizar ataques de retransmissão de autenticação de protocolos de autenticação.The extended protection design is an enhancement to authentication protocols designed to mitigate authentication relay attacks. Ele gira em torno do conceito de informações de associação de serviço/canal.It revolves around the concept of channel and service binding information.

Os objetivos gerais são os seguintes:The overall objectives are the following:

  1. Se o cliente é atualizado para dar suporte a proteção estendida, os aplicativos devem fornecer informações de associação de serviço e de associação de canal para todos os protocolos de autenticação com suporte.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. Informações de associação de canal só podem ser fornecidas quando há um canal (TLS) ao qual se associar.Channel binding information can only be supplied when there is a channel (TLS) to bind to. Informações de associação de serviço sempre devem ser fornecidas.Service binding information should always be supplied.

  2. Servidores atualizados que estão configurados corretamente poderão verificar as e informações de associação de serviço e de associação de canal quando elas estiverem presentes no token de autenticação de cliente e rejeitar a tentativa de autenticação se as associações de canal não corresponderem.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. Dependendo do cenário de implantação, os servidores podem verificar a associação de canal, a associação de serviço ou ambas.Depending on the deployment scenario, servers may verify channel binding, service binding or both.

  3. Servidores atualizados têm a capacidade de aceitar ou rejeitar solicitações de cliente de nível inferior que não contêm as informações de associação de canal com base em política.Updated servers have the ability to accept or reject down-level client requests that do not contain the channel binding information based on policy.

Informações usadas pela proteção estendida consistem em uma ou ambas as duas partes a seguir:Information used by extended protection consists of one or both of the following two parts:

  1. Um token de associação de canal ou CBT.A Channel Binding Token or CBT.

  2. Informações de associação de serviço na forma de um nome da entidade de serviço ou SPN.Service Binding information in the form of a Service Principal Name or SPN.

Informações de associação de serviço são uma indicação da intenção do cliente para autenticar para um ponto de extremidade de serviço específico.Service Binding information is an indication of a client’s intent to authenticate to a particular service endpoint. Elas são comunicadas de cliente para servidor com as seguintes propriedades:It is communicated from client to server with the following properties:

  • O valor de SPN deve estar disponível para o servidor que executa a autenticação de cliente em forma de texto não criptografado.The SPN value must be available to the server performing client authentication in clear text form.

  • O valor do SPN é público.The value of the SPN is public.

  • O SPN deve ser protegido criptograficamente em trânsito, de modo que um ataque man-in-the-middle não possa inserir, remover nem modificar seu valor.The SPN must be cryptographically protected in transit such that a man-in-the-middle attack cannot insert, remove or modify its value.

Um CBT é uma propriedade de externa do canal de segurança (como TLS) usada para ligá-lo (associá-lo) a uma conversa em um canal interno autenticado pelo cliente.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. O CBT deve ter as seguintes propriedades (também definidas pela RFC 5056 da IETF):The CBT must have the following properties (also defined by IETF RFC 5056):

  • Quando um canal externo existe, o valor do CBT deve ser uma propriedade que identifica o canal externo ou o ponto de extremidade do servidor, no qual se chega independentemente por ambos o lado do cliente e o lado do servidor de uma conversa.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.

  • O valor do CBT enviado pelo cliente não deve ser algo que um invasor pode influenciar.Value of the CBT sent by the client must not be something an attacker can influence.

  • Não há garantias sobre sigilo do valor de CBT.No guarantees are made about secrecy of the CBT value. Isso não significa no entanto que o valor da associação de serviço, bem como informações de associação de canal, sempre possam ser examinadas por qualquer outro que não o servidor que executa a autenticação, já que o protocolo portando o CBT pode estar criptografando-o.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.

  • O CBT deve ter sua integridade protegida criptograficamente em trânsito, de modo que um invasor não possa inserir, remover nem modificar seu valor.The CBT must be cryptographically integrity protected in transit such that an attacker cannot insert, remove or modify its value.

A associação de canal é realizada pelo cliente transferindo o SPN e o CBT para o servidor de maneira inviolável.Channel binding is accomplished by the client transferring the SPN and the CBT to the server in a tamperproof fashion. O servidor valida as informações de associação de canal de acordo com sua política e rejeita tentativas de autenticação cujo destino pretendido ele não acredita ter sido ele mesmo.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. Desse modo, os dois canais tornam-se criptograficamente associados juntos.This way, the two channels become cryptographically bound together.

Para preservar a compatibilidade com os clientes e aplicativos existentes, um servidor pode ser configurado para permitir tentativas de autenticação por clientes que ainda não dão suporte à proteção estendida.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. Isso é chamado de uma configuração "parcialmente protegida", em contraste com uma configuração "totalmente protegida".This is referred to as a "partially hardened" configuration, in contrast to a "fully hardened" configuration.

Vários componentes nos namespaces System.Net e System.Net.Security executam a autenticação integrada do Windows em nome de um aplicativo de chamada.Multiple components in the System.Net and System.Net.Security namespaces perform integrated Windows authentication on behalf of a calling application. Esta seção descreve as alterações nos componentes do System.Net para adicionar a proteção estendida no uso que eles fazem da autenticação integrada do Windows.This section describes changes to System.Net components to add extended protection in their use of integrated Windows authentication.

A proteção estendida tem suporte atualmente no Windows 7.Extended protection is currently supported on Windows 7. Um mecanismo é fornecido para que um aplicativo possa determinar se o sistema operacional dá suporte à proteção estendida.A mechanism is provided so an application can determine if the operating system supports extended protection.

Alterações para dar suporte à proteção estendidaChanges to Support Extended Protection

O processo de autenticação usado com autenticação integrada do Windows, dependendo do protocolo de autenticação usado, geralmente inclui um desafio emitido pelo computador de destino e enviado de volta para o computador cliente.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. A proteção estendida adiciona novos recursos para esse processo de autenticaçãoExtended protection adds new features to this authentication process

O namespace System.Security.Authentication.ExtendedProtection dá suporte à autenticação usando proteção estendida para aplicativos.The System.Security.Authentication.ExtendedProtection namespace provides support for authentication using extended protection for applications. A classe ChannelBinding nesse namespace representa uma associação de canal.The ChannelBinding class in this namespace represents a channel binding. A classe ExtendedProtectionPolicy nesse namespace representa a política de proteção estendida usada pelo servidor para validar as conexões de entrada do cliente.The ExtendedProtectionPolicy class in this namespace represents the extended protection policy used by the server to validate incoming client connections. Outros membros de classe são usados com proteção estendida.Other class members are used with extended protection.

Para aplicativos para servidores, essas classes incluem o seguinte:For server applications, these classes include the following:

Um ExtendedProtectionPolicy que tem os seguintes elementos:A ExtendedProtectionPolicy that has the following elements:

  • Uma propriedade OSSupportsExtendedProtection que indica se o sistema operacional dá suporte à autenticação integrada do Windows com proteção estendida.An OSSupportsExtendedProtection property that indicates whether the operating system supports integrated windows authentication with extended protection.

  • Um valor PolicyEnforcement que indica quando a política de proteção estendida deve ser imposta.A PolicyEnforcement value that indicates when the extended protection policy should be enforced.

  • Um valor ProtectionScenario que indica o cenário de implantação.A ProtectionScenario value that indicates the deployment scenario. Isso influencia o modo como a proteção estendida é verificada.This influences how extended protection is checked.

  • Um ServiceNameCollection opcional que contém a lista de SPN personalizada que é usada para fazer a correspondência com o SPN fornecido pelo cliente como o destino pretendido da autenticação.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.

  • Um ChannelBinding opcional que contém uma associação de canal personalizada a ser usada para validação.An optional ChannelBinding that contains a custom channel binding to use for validation. Esse cenário não é um caso comumThis scenario is not a common case

O namespace System.Security.Authentication.ExtendedProtection.Configuration dá suporte à configuração da autenticação usando proteção estendida para aplicativos.The System.Security.Authentication.ExtendedProtection.Configuration namespace provides support for configuration of authentication using extended protection for applications.

Um número de alterações de recursos foram feitas para dar suporte à proteção estendida no namespace System.Net existente.A number of feature changes were made to support extended protection in the existing System.Net namespace. Essas alterações incluem o seguinte:These changes include the following:

Foi feita uma alteração de recurso para dar suporte à proteção estendida para aplicativos cliente SMTP existentes no namespace System.Net.Mail:A feature change was made to support extended protection for SMTP client applications in the existing System.Net.Mail namespace:

  • Uma propriedade TargetName na classe SmtpClient que representa o SPN a ser usado para autenticação ao usar proteção estendida para aplicativos cliente SMTP.A TargetName property in the SmtpClient class that represents the SPN to use for authentication when using extended protection for SMTP client applications.

Um número de alterações de recursos foram feitas para dar suporte à proteção estendida no namespace System.Net.Security existente.A number of feature changes were made to support extended protection in the existing System.Net.Security namespace. Essas alterações incluem o seguinte:These changes include the following:

Uma propriedade SmtpNetworkElement foi adicionada para dar suporte à configuração da proteção estendida para clientes SMTP no namespace System.Net.Security.A SmtpNetworkElement property was added to support configuration of extended protection for SMTP clients in the System.Net.Security namespace.

Proteção estendida para aplicativos clienteExtended Protection for Client Applications

O suporte à proteção estendida para a maioria dos aplicativos cliente ocorre automaticamente.Extended protection support for most client applications happens automatically. As classes HttpWebRequest e SmtpClient dão suporte à proteção estendida sempre que a versão subjacente do Windows dá suporte à proteção estendida.The HttpWebRequest and SmtpClient classes support extended protection whenever the underlying version of Windows supports extended protection. Uma instância de HttpWebRequest envia um SPN construído com base em Uri.An HttpWebRequest instance sends an SPN constructed from the Uri. Por padrão, uma instância de SmtpClient envia um SPN construído com base no nome do host do servidor de email SMTP.By default, an SmtpClient instance sends an SPN constructed from the host name of the SMTP mail server.

Para autenticação personalizada, os aplicativos cliente podem usar os métodos HttpWebRequest.EndGetRequestStream(IAsyncResult, TransportContext) ou HttpWebRequest.GetRequestStream(TransportContext) na classe HttpWebRequest, que permitem recuperar o TransportContext e o CBT usando o método 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.

O SPN a ser usado para autenticação integrada do Windows enviada por uma instância de HttpWebRequest para um determinado serviço pode ser substituída pela configuração da propriedade 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.

A propriedade TargetName pode ser usada para definir um SPN personalizado a ser usado para autenticação integrada do Windows para a conexão SMTP.The TargetName property can be used to set a custom SPN to use for integrated Windows authentication for the SMTP connection.

Proteção estendida para aplicativos para servidoresExtended Protection for Server Applications

HttpListener fornece automaticamente mecanismos para validar as associações de serviço ao executar a autenticação HTTP.HttpListener automatically provides mechanisms for validating service bindings when performing HTTP authentication.

O cenário mais seguro é habilitar a proteção estendida para HTTPS:// prefixos.The most secure scenario is to enable extended protection for HTTPS:// prefixes. Nesse caso, defina HttpListener.ExtendedProtectionPolicy para um ExtendedProtectionPolicy com PolicyEnforcement definida para WhenSupported ou Always e ProtectionScenario definida para TransportSelected. Um valor de WhenSupported coloca HttpListener no modo parcialmente elevado, enquanto Always corresponde ao modo totalmente elevado.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.

Nessa configuração, quando uma solicitação é feita ao servidor por meio de um canal seguro externo, o canal externo é consultado para uma associação de canal.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. A associação de canal é passada para chamadas SSPI de autenticação, que validam que a associação de canal no blob de autenticação é correspondente.This channel binding is passed to the authentication SSPI calls, which validate that the channel binding in the authentication blob matches. Existem três desfechos possíveis:There are three possible outcomes:

  1. O sistema operacional subjacente do servidor não dá suporte à proteção estendida.The server’s underlying operating system does not support extended protection. A solicitação não será exposta para o aplicativo e uma resposta de não autorizado (401) será retornada ao cliente.The request will not be exposed to the application, and an unauthorized (401) response will be returned to the client. Uma mensagem será registrada para a origem do rastreamento HttpListener especificando o motivo da falha.A message will be logged to the HttpListener trace source specifying the reason for the failure.

  2. A chamada SSPI falha indicando que o cliente especificou uma associação de canal que não correspondeu ao valor esperado recuperado do canal externo ou então indicando que o cliente falhou ao fornecer uma associação de canal quando a política de proteção estendida do servidor foi configurada para 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. Em ambos os casos, a solicitação não será exposta para o aplicativo e uma resposta de não autorizado (401) será retornada ao cliente.In both cases, the request will not be exposed to the application, and an unauthorized (401) response will be returned to the client. Uma mensagem será registrada para a origem do rastreamento HttpListener especificando o motivo da falha.A message will be logged to the HttpListener trace source specifying the reason for the failure.

  3. O cliente especifica a associação de canal correta ou tem permissão para se conectar sem especificar uma associação de canal, já que a política de proteção estendida do servidor é configurada com WhenSupported. A solicitação é retornada ao aplicativo para processamento.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. Nenhuma verificação de nome de serviço é executada automaticamente.No service name check is performed automatically. Um aplicativo pode optar por executar sua própria validação de nome de serviço usando a propriedade ServiceName, mas sob essas circunstâncias, isso é redundante.An application may choose to perform its own service name validation using the ServiceName property, but under these circumstances it is redundant.

Se um aplicativo faz suas próprias chamadas SSPI para realizar a autenticação com base em blobs passados bidirecionalmente dentro do corpo de uma solicitação HTTP e deseja dar suporte a associação de canal, ele precisa recuperar a associação de canal esperada do canal seguro externo usando HttpListener para passá-la para a função AcceptSecurityContext de Win32 nativo.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. Para fazer isso, use a propriedade TransportContext e chame o método GetChannelBinding para recuperar o CBT.To do this, use the TransportContext property and call GetChannelBinding method to retrieve the CBT. Há suporte apenas para associações de ponto de extremidade.Only endpoint bindings are supported. Se qualquer coisa diferente de Endpoint for especificada, uma NotSupportedException será gerada.If anything other Endpoint is specified, a NotSupportedException will be thrown. Se o sistema operacional subjacente oferecer suporte à associação de canal, o GetChannelBinding método retornará um ChannelBinding SafeHandle ponteiro de encapsulamento para uma associação de canal adequada para passar para a função AcceptSecurityContext como o membro pvBuffer de uma estrutura SecBuffer passada no pInput parâmetro.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. A propriedade Size contém o comprimento, em bytes, da associação de canal.The Size property contains the length, in bytes, of the channel binding. Se o sistema operacional subjacente não dá suporte a associações de canal, a função retornará null.If the underlying operating system does not support channel bindings, the function will return null.

Outro cenário possível é habilitar a proteção estendida para HTTP:// prefixos quando proxies não são usados.Another possible scenario is to enable extended protection for HTTP:// prefixes when proxies are not used. Nesse caso, defina HttpListener.ExtendedProtectionPolicy para um ExtendedProtectionPolicy com PolicyEnforcement definida para WhenSupported ou Always e ProtectionScenario definida para TransportSelected. Um valor de WhenSupported coloca HttpListener no modo parcialmente elevado, enquanto Always corresponde ao modo totalmente elevado.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.

Uma lista padrão de nomes de serviço permitidos é criada com base nos prefixos que foram registrados com o HttpListener.A default list of allowed service names is created based on the prefixes which have been registered with the HttpListener. Essa lista padrão pode ser examinada por meio da propriedade DefaultServiceNames.This default list can be examined through the DefaultServiceNames property. Se esta lista não é abrangente, um aplicativo pode especificar uma coleção de nomes de serviço personalizada no construtor para a classe ExtendedProtectionPolicy, que será usada em vez da lista de nomes de serviço padrão.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.

Nessa configuração, quando uma solicitação é feita ao servidor sem um canal externo seguro, a autenticação continua normalmente sem uma verificação de associação de canal.In this configuration, when a request is made to the server without an outer secure channel authentication proceeds normally without a channel binding check. Se a autenticação for bem-sucedida, o contexto será consultado para o nome do serviço que o cliente forneceu e validado mediante a lista de nomes de serviço aceitáveis.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. Existem quatro desfechos possíveis:There are four possible outcomes:

  1. O sistema operacional subjacente do servidor não dá suporte à proteção estendida.The server’s underlying operating system does not support extended protection. A solicitação não será exposta para o aplicativo e uma resposta de não autorizado (401) será retornada ao cliente.The request will not be exposed to the application, and an unauthorized (401) response will be returned to the client. Uma mensagem será registrada para a origem do rastreamento HttpListener especificando o motivo da falha.A message will be logged to the HttpListener trace source specifying the reason for the failure.

  2. O sistema operacional subjacente do cliente não dá suporte à proteção estendida.The client’s underlying operating system does not support extended protection. Na configuração WhenSupported, a tentativa de autenticação será bem-sucedida e a solicitação será retornada para o aplicativo.In the WhenSupported configuration, the authentication attempt will succeed and the request will be returned to the application. Na configuração Always, a tentativa de autenticação falhará.In the Always configuration, the authentication attempt will fail. A solicitação não será exposta para o aplicativo e uma resposta de não autorizado (401) será retornada ao cliente.The request will not be exposed to the application, and an unauthorized (401) response will be returned to the client. Uma mensagem será registrada para a origem do rastreamento HttpListener especificando o motivo da falha.A message will be logged to the HttpListener trace source specifying the reason for the failure.

  3. O sistema operacional subjacente do cliente dá suporte à proteção estendida, mas o aplicativo não especificou uma associação de serviço.The client’s underlying operating system supports extended protection, but the application did not specify a service binding. A solicitação não será exposta para o aplicativo e uma resposta de não autorizado (401) será retornada ao cliente.The request will not be exposed to the application, and an unauthorized (401) response will be returned to the client. Uma mensagem será registrada para a origem do rastreamento HttpListener especificando o motivo da falha.A message will be logged to the HttpListener trace source specifying the reason for the failure.

  4. O cliente especificou uma associação de serviço.The client specified a service binding. A associação de serviço é comparada com a lista de associações de serviço permitidas.The service binding is compared to the list of allowed service bindings. Se ela for correspondente, a solicitação será retornada ao aplicativo.If it matches, the request is returned to the application. Caso contrário, a solicitação não será exposta para o aplicativo e uma resposta de não autorizado (401) será retornada automaticamente ao cliente.Otherwise, the request will not be exposed to the application, and an unauthorized (401) response will be automatically returned to the client. Uma mensagem será registrada para a origem do rastreamento HttpListener especificando o motivo da falha.A message will be logged to the HttpListener trace source specifying the reason for the failure.

Se essa abordagem simples usando uma lista de nomes de serviço aceitáveis com permissão for insuficiente, um aplicativo poderá fornecer sua própria validação de nome de serviço consultando a propriedade 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. Nos casos 1 e 2 acima, a propriedade retornará null.In cases 1 and 2 above, the property will return null. No caso 3, ela retornará uma cadeia de caracteres vazia.In case 3, it will return an empty string. No caso 4, o nome do serviço especificado pelo cliente será retornado.In case 4, the service name specified by the client will be returned.

Esses recursos de proteção estendida também podem ser usados por aplicativos para servidores para autenticação com outros tipos de solicitações e quando proxies confiáveis são usados.These extended protection features can also be used by server applications for authentication with other types of requests and when trusted proxies are used.

Confira tambémSee also