Iniciar sessão com a Microsoft
Iniciar sessão ou criar uma conta.
Olá,
Selecione uma conta diferente.
Tem várias contas
Selecione a conta com a qual pretende iniciar sessão.

ASP.NET Coluna de Voz de Suporte

Introdução

Bem-vindo à coluna Voz de Suporte do Microsoft ASP.NET! Sou Nilay B. Shah com a ASP.NET equipa de suporte para programadores. Trabalho com ASP.NET apoio há mais de um ano e meio. A Autenticação de Formulários é realmente uma funcionalidade de autenticação interessante. Este artigo aborda alguns problemas que os utilizadores consideraram confusos com a autenticação de formulários, como a relação do pedido de autenticação de formulários e o cookie de autenticação de formulários e as respetivas definições relevantes. Gostaria de agradecer a Jerry Orman, líder técnico da equipa de apoio ASP.NET, pela sua incrível ajuda!

Pessoas por vezes questionam-se sobre os "bilhetes" e os "cookies" de autenticação de formulários porque estão intimamente relacionados. Deparei-me com perguntas como estas: alguém pode explicar a diferença entre a expiração do cookie e a expiração do pedido? Quando o cookie expirar, o utilizador será redirecionado para a página de início de sessão. O que acontece quando o pedido expira? Também fará com que o cookie expire? O que é que o SlidingUpdate realmente atualiza?

Neste artigo, vou concentrar-me nestes dois aspetos da Autenticação de Formulários para responder às seguintes perguntas:

  • O que é o pedido de autenticação de formulários e o cookie de autenticação de formulários? Como estão relacionados?

  • Qual é a função de um pedido de suporte na Autenticação de Formulários?

  • Como estão relacionados com a expiração de cookies e a expiração de pedidos?

  • Como funciona a expiração deslizante no contexto do pedido de autenticação de formulários e do cookie de autenticação de formulários?

  • Onde pode ser definida a propriedade de tempo limite do cookie de autenticação de formulários e o pedido de autenticação de formulários?

  • Cenário de problema: a autenticação de formulários pode exceder o limite de tempo antes do valor do atributo de tempo limite definido no ficheiro de configuração

O que é o pedido de autenticação de formulários e o cookie de autenticação de formulários? Como estão relacionados?

O cookie de autenticação de formulários não passa de um contentor para o pedido de autenticação de formulários. O pedido é transmitido como o valor do cookie de autenticação de formulários com cada pedido e é utilizado pela autenticação de formulários, no servidor, para identificar um utilizador autenticado.

No entanto, se optarmos por utilizar a autenticação de formulários sem cookies, a permissão será transmitida no URL num formato encriptado. A autenticação de formulários sem cookies é utilizada porque, por vezes, os browsers cliente bloqueiam cookies. Esta funcionalidade é introduzida no Microsoft .NET Framework 2.0.

Para obter mais informações, visite o seguinte Web site da Microsoft Developer Network (MSDN):

http://msdn2.microsoft.com/en-us/library/system.web.configuration.formsauthenticationconfiguration.cookieless.aspx

Qual é a função de um pedido de suporte na Autenticação de Formulários?

O pedido de autenticação de formulários é utilizado para indicar à aplicação ASP.NET quem é. Assim, a permissão é um bloco modular da segurança da Autenticação de Formulários.

A permissão é encriptada e assinada com o <machineKey> elemento de configuração do ficheiro de Machine.config do servidor. ASP.NET 2.0 utiliza a desencriptaçãoKey e o novo atributo de desencriptação do elemento <machineKey> para encriptar permissões de autenticação de formulários. O atributo de desencriptação permite-lhe especificar o algoritmo de encriptação a utilizar. ASP.NET 1.1 e 1.0 utilizam a encriptação 3DES, o que não é configurável. A adulteração do valor da permissão é determinada por uma falha ao desencriptar a permissão no servidor. Como resultado, o utilizador será redirecionado para a página de início de sessão.


Se a aplicação for implementada num Web farm, tem de se certificar de que os ficheiros de configuração em cada servidor partilham o mesmo valor para os atributos validationKey e decryptionKey no <machineKey> etiqueta, que são utilizados para hashing e desencriptação da permissão, respetivamente. Tem de o fazer porque não pode garantir que servidor irá processar pedidos sucessivos. Para obter mais informações sobre a encriptação FormsAuthenticationTicket e as considerações de implementação do Web farm, visite o seguinte Web site da MSDN:

http://msdn2.microsoft.com/en-us/library/ms998288.aspx

As permissões de autenticação de formulários podem ser geradas manualmente através da classe FormsAuthenticationTicket. Para obter mais informações, visite o seguinte Web site da MSDN:

http://msdn2.microsoft.com/en-us/library/system.web.security.formsauthenticationticket.aspx

Como estão relacionados com a expiração de cookies e a expiração de pedidos?

No caso de cookie não persistente, se o pedido expirar, o cookie também expirará e o utilizador será redirecionado para a página de início de sessão. Por outro lado, se o pedido estiver marcado como persistente, em que o cookie é armazenado na caixa de cliente, os browsers podem utilizar o mesmo cookie de autenticação para iniciar sessão no Web site a qualquer altura. No entanto, podemos utilizar o método FormsAuthentication.SignOut para eliminar cookies persistentes ou não persistentes explicitamente.

Para obter mais informações sobre o método FormsAuthentication.SignOut, visite o seguinte Web site da MSDN:

http://msdn2.microsoft.com/en-us/library/system.web.security.formsauthentication.signout.aspxCom a autenticação de formulários sem cookies, se o browser estiver fechado, o pedido será perdido e será gerado um novo pedido de suporte no próximo pedido.

Como funciona a expiração deslizante no contexto do pedido de autenticação de formulários e do cookie de autenticação de formulários?

A expiração deslizante funciona exatamente da mesma forma!

Vejamos um exemplo: se a página de início de sessão for acedida às 17:00 00:00, deverá expirar às 17:10 00:00 se o atributo de tempo limite for 10 e o atributo slidingExpiration estiver definido como VERDADEIRO. Agora, se alguma página Web for novamente consultada às 17:05 20:00, os cookies e o período de tempo limite do pedido serão repostos para 17:15 20:00:00.

Nota Se a página Web for acedida antes de passar metade do tempo de expiração, o tempo de expiração da permissão não será reposto. Por exemplo, se uma página Web for acedida novamente às 17:04 00:00, os cookies e o período de tempo limite da permissão não serão repostos.

Para obter mais informações, visite o seguinte Web site da MSDN:

http://msdn2.microsoft.com/en-us/library/1d3t3c61(vs.71).aspx

Onde pode ser definido o valor de tempo limite do pedido de autenticação de formulários e do cookie de autenticação de formulários?

A única definição que pode efetuar é no ficheiro de Web.config ou no ficheiro de Machine.config, na etiqueta> formulários <. Esta alteração determinará o período de tempo limite da autenticação de formulários no contexto de um pedido de suporte ou cookie, a menos que o pedido seja gerado manualmente.


<!-- Atributos de formulários:
name="[nome do cookie]" - Define o nome do cookie utilizado para a Autenticação de Formulários.
loginUrl="[url]" - Define o URL para redirecionar o cliente para para a autenticação.
protection="[All|Nenhum|Encriptação|Validação]" - Define o modo de proteção dos dados no cookie.
timeout="[minutes]" - Define a duração do tempo para que o cookie seja válido (repor em cada pedido).
path="/" - Define o caminho para o cookie.
requireSSL="[true|false]" - O cookie de autenticação de formulários deve ser enviado apenas através de SSL?
slidingExpiration="[true|false]" - O cookie e o pedido de autenticação dos formulários devem ser reeditados se estiverem prestes a expirar?
--> Para obter mais informações, visite o seguinte Web site da MSDN:

http://msdn2.microsoft.com/en-us/library/1d3t3c61.aspxSe a permissão for gerada manualmente com a classe FormsAuthenticationTicket, o tempo limite pode ser definido através do atributo Expiração. Este valor substituirá o valor do atributo de tempo limite especificado nos ficheiros de configuração.

Para obter mais informações sobre os membros do FormsAuthenticationTicket, visite o seguinte Web site da MSDN:

http://msdn2.microsoft.com/en-us/library/system.web.security.formsauthenticationticket_members.aspx

Cenário de problema: a autenticação de formulários pode exceder o limite de tempo antes do valor do atributo de tempo limite definido no ficheiro de configuração

Se o pedido de autenticação de formulários for gerado manualmente, a propriedade de tempo limite da permissão substituirá o valor definido no ficheiro de configuração. Por conseguinte, se esse valor for inferior ao valor no ficheiro de configuração, o pedido de autenticação de formulários expirará antes do valor do atributo de tempo limite do ficheiro de configuração e vice-versa. Por exemplo, vamos supor que o <formulários>atributo de tempo limite está definido como 30 no ficheiro Web.config e que o valor expiração da permissão está definido como 20 minutos. Neste caso, o pedido de autenticação de formulários expirará após 20 minutos e o utilizador terá de iniciar sessão novamente depois disso.

Ligações relacionadas

910439 Resolver Problemas de Autenticação de Formulários
 

301240 Como implementar a autenticação baseada em formulários na sua aplicação ASP.NET com o .NET C#
 

Espero que tenha considerado estas informações úteis para facilitar alguma da confusão envolvida com ASP.NET formulários de autenticação e cookies. Lembre-se de que as colunas Voz de Suporte são para si.

Precisa de mais ajuda?

Quer mais opções?

Explore os benefícios da subscrição, navegue em cursos de formação, saiba como proteger o seu dispositivo e muito mais.

As comunidades ajudam-no a colocar e a responder perguntas, a dar feedback e a ouvir especialistas com conhecimentos abrangentes.

Estas informações foram úteis?

Quão satisfeito está com a qualidade do idioma?
O que afetou a sua experiência?
Ao selecionar submeter, o seu feedback será utilizado para melhorar os produtos e serviços da Microsoft. O seu administrador de TI poderá recolher estes dados. Declaração de Privacidade.

Obrigado pelo seu feedback!

×