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.

Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top