Pergunta

Atualmente, estou trabalhando em um projeto que se estende em frente vários domínios. O que eu quero é para que o usuário seja capaz de fazer login em um site e estar conectado em todos os outros ao mesmo tempo.

A sessão de usuários são armazenadas no banco de dados, os cookies que eu definir em cada domínio contêm o ID da sessão.

Então, basicamente, quando um usuário se autentica em example.com um cookie é criado com o seu ID de sessão, os dados da sessão é armazenado no banco de dados. Uma vez feito isso um biscoito precisa ser criado em todos os outros domínios com este ID de sessão exclusiva para que, como o usuário viaja de site para site eles serão automaticamente logado.

Agora eu encontrei uma maneira de fazer isso no Firefox (usando tags de imagem que executa scripts PHP sobre os outros domínios, criando essencialmente os diferentes cookies em diferentes domínios), mas este método não funciona no IE (havn't testado Opera ou Safari etc. ainda).

Alguém tem alguma idéia sobre como posso chegar a este trabalho no IE?

Foi útil?

Solução

Tenha um olhar para a minha pergunta entre domínios de rastreamento de usuário .

O que você precisa fazer é adicionar outro cabeçalho HTTP para a "imagem".

variáveis ??de sessão são perdidas se você usar o conjunto de quadros no Internet Explorer 6 :

Você pode adicionar uma política compacta P3P cabeçalho para o seu conteúdo filho, e você pode declarar que as ações não maliciosos são realizadas com os dados do do utilizador. Se o Internet Explorer detecta uma política satisfatória, Internet, em seguida, Explorador permite o cookie para ser definido.

A política compacta simples que cumpre este critério seguinte:

P3P: CP = "CAO PSA NOSSO"

Este código de exemplo mostra que o site dá-lhe acesso ao seu próprio informações de contato (CAO), que qualquer dados analisados ??apenas "Analisados ??pseudo-", o que significa que os dados são conectados à sua linha persona e não para o seu físico identidade (PSA), e que seus dados estão não fornecido a quaisquer agências externas para essas agências para uso (o nosso).

Você pode definir este cabeçalho se você usar o método Response.AddHeader num ASP página. Em ASP.NET, você pode usar o método Response.AppendHeader. Você pode usar o IIS snap-in Gestão (Inetmgr) para adicionar a um arquivo estático.

Siga estas etapas para adicionar este cabeçalho para um arquivo estático:

  1. Clique em Iniciar, clique em Executar e digite inetmgr.
  2. Na página de navegação à esquerda, clique no arquivo apropriado ou diretório em seu Web site para o qual você deseja adicionar o cabeçalho, clique com o botão direito no arquivo e clique em Propriedades.
  3. Clique na guia cabeçalhos HTTP.
  4. Na caixa de grupo personalizado cabeçalhos HTTP, clique em Adicionar.
  5. Tipo de P3P para o nome do cabeçalho, e depois para a política compacta corda, tipo CP = ..., onde "..." é o código apropriado para o seu compacto política.

Outras dicas

Não tenho certeza se é uma boa sugestão neste momento no seu desenvolvimento, mas você deve definitivamente olhar para Single Sign-on se você quiser fazê-lo da maneira "certa".

É apenas mim, ou faz parecer que seu CSRFing-se com a sua técnica usando imagens que funciona no Firefox?

abordagem interessante, embora eu espero que você não está abrindo-se a uma ameaça de segurança lá.

Eu não fiz isso sozinho, mas eu acho que você está indo no caminho certo. Eu provavelmente faria o mesmo, exceto em vez de uma imagem que eu iria usar um arquivo Javascript. Ele seria gerado no lado do serverer e vai atualizar os biscoitos no lado do cliente.

Possivelmente eu ser um pouco tolo, mas você não pode definir os cookies para cada nome de domínio no login? Então ao invés de eles terem um cookie quando eles login para Site A, eles têm cinco, ou no entanto muitos sites que você tem?

setcookie(A, $sessid, expire, path, domainA.com);
setcookie(B, $sessid, expire, path, domainB.com);
setcookie(C, $sessid, expire, path, domainC.com);
setcookie(D, $sessid, expire, path, domainD.com);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top