Como a: postando Cross-Site e redirecionamento em ASP.NET webforms
-
04-07-2019 - |
Pergunta
Cenário:
A tarefa que temos em mãos é permitir uma solução de início de sessão único entre diferentes organizações / websites. Eu começar como um usuário autenticado no site da uma organização, informações específicas convertido em um documento XML, criptografar o documento com Triple DES e enviar essa página sobre como uma variável post para o segundo organizações login.
Pergunta:
Assim que eu tiver embalados meus dados xml, como faço para programaticamente executar um post para o segundo site e ter o browser do usuário redirecionado para segundo site também.
Esta deve se comportar apenas como ter uma forma como:
action = "http://www.www.com/posthere" method = "post"
... e ter um campo de texto oculto, como:
input type = "escondido" value = "meu xml criptografado"
Isto está sendo escrito em ASP.NET 2.0 webforms.
-
Editar: Nic pergunta por que o formulário HTML que descrevi acima não vai funcionar. Resposta: Eu não tenho controle sobre um ou outro local; Estou construindo o "homem médio" que faz tudo isso acontecer. Site 1 está encaminhando um usuário para a página que eu estou fazendo, eu tenho que construir o XML, e que, em seguida, encaminhá-lo para o site 2. Site 1 não deseja que o usuário para saber sobre meu site, o redirecionamento deve ser transparente.
O processo que eu descrevi acima é o que ambas as partes (Site A e Site B) mandato.
Solução
Enviar de volta um documento que contém a partir com a entrada escondida e incluem um manipulador onload que as mensagens do formulário imediatamente para o outro site. Usando document.ready do jQuery () resolve a questão de saber se o DOM é carregado antes do posto ocorre, embora existam outras maneiras de fazer isso sem jquery. Você pode querer incluir uma pequena mensagem na tela no sentido de que o usuário será reencaminhado dentro em breve e fornecer um link que também faz o post
...headers left out...
<script type='text/javascript'>
$(document).ready( function() {
$('form:first').submit();
});
</script>
<body>
<form action='othersiteurl' method='POST'>
<input type='hidden' value='your-encrypted-xml" />
</form>
</body>
Outras dicas
Você está pensando sobre isso também processo orientado, você levaria um mês de domingos para tentar e trabalhar para fora todos os bugs e partes móveis com o que você sugere.
Você já está fazendo um posto para outro servidor para que você realmente não precisa fazer nada. A forma que você tem já é perfeito, e quando os outros Server intercepta o pedido que é quando se toma a decisão de quer permitir para o usuário em e continuar em através do site, ou redirecioná-los de volta ao seu Referer (sic) no cabeçalho. Ao redirecionar de volta para o Referer eles podem querer orçada em uma mensagem que diz que estava errado, como? Erro = no_auth
Eu escrevi sobre isso para outra pergunta um back tempo. Espero que isso ajude:
Como você passar uma sessão authenticaticated entre aplicativo domínios