Fim de SSL e o ASP.NET

Traduções de Artigos Traduções de Artigos
Artigo: 910444 - Ver produtos para os quais este artigo se aplica.
Coluna de voz de suporte do ASP.NET

Fim de SSL e o ASP.NET

para personalizar esta coluna às suas necessidades, pretendemos convidá-lo para submeter as suas ideias sobre tópicos que lhe interessam e problemas que pretende ver endereçados artigos de base de dados de conhecimento no futuro e colunas de voz de suporte. Pode submeter as ideias e comentários utilizando o formulário Ask For It. Também há uma hiperligação para o formulário na parte inferior desta coluna.
Expandir tudo | Reduzir tudo

Nesta página

Bem-vindo à coluna voz de suporte ASP.NET! Meu nome estiver Jerry Orman. Foram com a Microsoft por mais de cinco anos e ter gasto a maior parte do meu tempo concentrado em tecnologias relacionadas com a Web como o Microsoft FrontPage e Microsoft SharePoint Products and Technologies. Gastou o ano passado a trabalhar com o Microsoft ASP.NET como um engenheiro de suporte. Este mês, vou falar terminação SSL e o ASP.NET. Em particular, pretende focar problemas resultantes de uma configuração do servidor. Vamos lançar um olhar terminação SSL e alguns efeitos secundários desta configuração no seu aplicativo.

Terminação SSL é uma configuração na qual o servidor Web com o código envia e recebe tráfego através de HTTP e existe um dispositivo entre o servidor Web e os clientes que encripta e desencripta os dados. Nesta configuração, os clientes são enviar e receber tráfego HTTPS. A configuração de terminação SSL é semelhante à seguinte:
Cliente < ? HTTPS ? > dispositivo SSL <-HTTP ? > servidor da Web
Agora vamos vá mais dois problemas iniciado no Microsoft ASP.NET 2.0 com esta configuração e algumas formas de contornar o comportamento.

Problema 1

Quando o cursor sobre um item de menu no ASP.NET 2.0 menu controlo, receber a seguinte mensagem de erro:
Esta página contém itens seguros e não seguras. Confirma que deseja ver os itens não seguros?
A aplicação é suposto para ser seguro, que está a utilizar o protocolo SSL e não adicionou quaisquer controlos que são compor um caminho absoluto para HTTP endereço. O que há com esta mensagem?

Bem, o problema é que o controlo de menu emite alguns JavaScript que utiliza um objecto iFrame para criar o menu de lista de opções. Tem de fornecer a moldura um URL inicial. Evite efectuar uma viagem round desnecessária para o servidor não SSL cenários, o script utiliza sobre: em branco para o URL. No entanto, o browser considera esta um endereço não seguro, para obter o erro acima. Para obter mais informações sobre este problema em termos de Microsoft Windows SharePoint Services, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
837850Recebe uma mensagem "Esta página contém itens seguros e não seguros" quando clica em vista do Explorador numa biblioteca de documentos no Windows SharePoint Services ou SharePoint Team Services da Microsoft
Cenários de SSL não é explicitamente mencionar porque, se o servidor da Web estava a receber tráfego HTTPS em vez do dispositivo SSL, o JavaScript que emite o controlo de menu adicione uma linha de código para definir a origem do objecto iFrame para um endereço HTTPS de uma página no servidor. Inicia outro pedido, mas impede que a mensagem de erro. Se estiver a implementar para este tipo de ambiente, pode forçar a adição de JavaScript para impedir que a mensagem de erro, adicionando este código de página que tem o controlo de menu .
 <script runat="server">
   protected override void Render(HtmlTextWriter writer) 
   {
        Page.ClientScript.RegisterStartupScript(typeof(Page), "MenuHttpsWorkaround", 
        Menu1.ClientID + "_Data.iframeUrl='https://myserver/someblankpage.htm';", true);
        base.Render(writer);
   }
</script>
 
Idealmente, teriam menu de uma classe MasterPage ou uma classe UserControl e possível adicionar este código de apenas uma vez.

Problema 2

É possível que, quando tiver o atributo requireSSL o <forms> elemento definido como true , o servidor responde com redireccionamentos repetidos para a página de início de sessão FormsAuthentication . Isto é causado por uma alteração na forma como o método FormsAuthenticationModule processa o atributo requireSSL . Se definir o atributo requireSSL como true , o método FormsAuthenticationModule cria um cookie que tem o atributo seguro definido. (Este comportamento é a mesma que o .NET Framework 1.1.) Quando utiliza o atributo de segurança , o cliente passará apenas o cookie para o servidor se o cliente estiver a utilizar SSL. Esta parte é óptima, porque o cliente, de facto, está a utilizar SSL. Vamos partem do princípio que tem uma página SecurePage.aspx que os utilizadores anónimos não podem aceder. Com o protocolo SSL e o atributo requireSSL , pode acabar com o tráfego seguinte um pedido inicial para SecurePage.aspx:
? > Cliente faz um pedido GET para SecurePage.aspx.

<-Servidor responde com um HTTP 302 (redireccionamento) para a página de início de sessão.

? > Cliente faz um pedido GET para Login.aspx.

<-Servidor responde com uma 200 OK. A página de início de sessão é apresentada ao cliente.

? > Cliente faz um pedido POST Login.aspx.

<-Servidor responde com uma 302 (redireccionamento) para SecurePage.aspx. Cabeçalho do cookie conjunto é enviado com oatributo de segurança para o cliente.

? > Cliente faz um pedido GET SecurePage.aspx. Cookie é transferido porque o cliente está a utilizar SSL.

<-Servidor responde com uma 302 (redireccionamento) para a página de início de sessão.

Obtém o redireccionamento no último pedido devido a uma alteração na classe FormsAuthenticationModule . Foi adicionada uma verificação adicional no ASP.NET 2.0 para determinar se o utilizador está a transmitir um cookie seguro através de um pedido de SSL não. ASP.NET 2.0 devolve a classe FormsAuthenticationTicket se a propriedade FormsAuthentication.RequireSSL estiver definida como false ou se o atributo Request.IsSecure é definido como true .
  • A propriedade FormsAuthentication.RequireSSL estiver definida como false se o atributo requireSSL é definido como false no ficheiro de configuração.
  • O atributo Request.IsSecure é definido como true se o servidor Web receber tráfego SSL.
Uma vez que, neste cenário, o servidor Web não está a receber tráfego SSL e o atributo requireSSL está definido como true , ambas as verificações return false . Como resultado, a classe FormsAuthenticationTicket não é devolvida e o cookie é removido da coleção Request.cookies .

O pedido que o utilizador está a efectuar é anónimo nesta altura porque o servidor não foi validado ainda as credenciais do utilizador. Como o pedido passa a tubagem ASP.NET, a classe UrlAuthorizationModule verifica se o utilizador tem acesso à página. Uma vez que um utilizador anónimo não tiver acesso a uma página SecurePage.aspx, a classe UrlAuthorizationModule devolve uma mensagem de 401 erro ("acesso negado"), que resulta num redireccionamento para a página de início de sessão.

Para evitar este comportamento, primeiro terá de remover o atributo requireSSL do <forms> tag no ficheiro de configuração. Em seguida, tem de definir programaticamente o atributo de segurança no FormsAuthentication cookie. O seguinte código efectua este procedimento, o cookie FormsAuthentication e o cookie de sessão .
void Application_EndRequest(object sender, EventArgs e)
{
     if (Response.Cookies.Count > 0)
     {
          foreach (string s in Response.Cookies.AllKeys)
          {
               if (s == FormsAuthentication.FormsCookieName || s.ToLower() == "asp.net_sessionid")
               {
                    Response.Cookies[s].Secure = true;
               }
          }
     }
}

Referências

Para obter mais informações sobre o menu de controlo, visite o seguinte Web site da Microsoft Developer Network (MSDN):
http://msdn2.microsoft.com/en-us/library/2xt3t8a7(vs.80).aspx
Para mais informações sobre o atributo requireSSL da propriedade FormsAuthentication.RequireSSL , visite o seguinte site da Web MSDN:
http://msdn2.microsoft.com/en-us/library/system.web.security.formsauthentication.requiressl.aspx
Para mais informações sobre o atributo IsSecure da propriedade HttpRequest.IsSecureConnection , visite o seguinte site da Web MSDN:
http://msdn2.microsoft.com/en-us/library/system.web.httprequest.issecureconnection(vs.71).aspx
Para obter mais informações sobre a classe FormsAuthenticationModule , visite o seguinte site da Web MSDN:
http://msdn2.microsoft.com/en-us/library/system.web.security.formsauthenticationmodule.aspx
Para obter mais informações sobre a classe UrlAuthorizationModule , visite o seguinte site da Web MSDN:
http://msdn2.microsoft.com/en-us/library/system.web.security.urlauthorizationmodule.aspx


Espero que encontrar estas informações úteis quando estiver a utilizar SSL fim e o Microsoft ASP.NET. Não se esqueça, as colunas de voz de suporte para si! Como sempre, vontade submeter ideias sobre tópicos que pretende no futuro corrigida colunas ou na base de dados de conhecimento utilizando o formulário Ask For It.

Propriedades

Artigo: 910444 - Última revisão: 22 de novembro de 2007 - Revisão: 1.3
A informação contida neste artigo aplica-se a:
  • Microsoft ASP.NET 2.0
Palavras-chave: 
kbmt kbhowto kbasp KB910444 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 910444
Exclusão de Responsabilidade para Conteúdo sem Suporte na KB
Este artigo foi escrito sobre produtos para os quais a Microsoft já não fornece suporte. Por conseguinte, este artigo é oferecido "tal como está" e deixará de ser actualizado.

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com