Site parcial SSL usando o controle de login do asp.net

Eu estou tentando converter um sistema de login caseiro para o controle de login asp.net padrão incluído no .net. Eu quero toda a comunicação no site para um usuário não logado estar em texto claro, mas bloquear tudo em SSL, uma vez que o usuário fizer login - incluindo a transmissão do nome de usuário e senha.

Eu tinha este trabalho antes, carregando uma segunda página - "loginaction.aspx" - com um prefixo https:, em seguida, retirando o nome de usuário e senha, procurando os controles de caixa de texto apropriados em Request.Form.Keys. Existe uma maneira de fazer algo semelhante usando os controles de login do .net? Eu não quero ter uma página de login separada, mas sim incluir esse controle (dentro de uma visualização de login) em todas as páginas do site.

0
adicionado
Visualizações: 1

3 Respostas

Você não será capaz de fazer o que está falando simplesmente, porque o postback (que é o que o controle de login usa) será qualquer que seja a segurança da página (SSL ou não-SSL).

Sua melhor aposta neste cenário é usar um IFRAME que contenha uma página HTTPS (SSL) que apenas contenha o controle de controle. Você pode ter que redirecionar para outra página após o login que permite saltar do IFRAME.

Plan B would be to have a separate form on the page (outside your main FORM) which has the ACTION property point to another page where you handle the login. You will have to roll your your own login code to handle the forms authentication.

0
adicionado
Esteja ciente de que o uso de uma dessas técnicas ainda não é seguro, pois é suscetível a um homem no meio do ataque. Para mais informações, leia isto. jlorenzen.blogspot.com/2009/11/…
adicionado o autor Erik Funkenbusch, fonte

Você não poderá ter seu site como não SSL, com uma caixa de login em todas as páginas e, em seguida, enviar o nome de usuário e senha via SSL.

A única maneira de realmente conseguir isso é usar quadros de algum tipo. Dessa forma, toda a sua página poderia ser não-SSL, mas o quadro de login teria que ser SSL.

As formas usuais de fazer isso é bloquear o site inteiro com SSL, não se preocupe em ter o nome de usuário e a senha SSL criptografados e vá para SSL depois que eles fizerem login, ou siga a rota do quadro que mencionei acima.

0
adicionado

Consegui fazer isso adicionando um evento OnClientClick ao controle do botão de login e defini-lo para a seguinte função javascript.
`

function forceSSLSubmit() 
{

                var strAction = document.forms[0].action.toString();

                if (strAction.toLowerCase().indexOf("http:") == 0) {
                    strAction = "https" + strAction.substring(4);

                    document.forms[0].action = strAction;
                }

        }

`

0
adicionado