/ / É possível usar dois aplicativos de sessão de primavera diferentes com um servidor redis? - primavera, sessão de primavera

É possível usar dois aplicativos de sessão de primavera diferentes com um servidor redis? - primavera, sessão de primavera

Eu comecei a usar a sessão de primavera com sucessocom um nginx, dois tomcats e um servidor redis para implementar sessões em cluster e algumas questões surgiram. Primeiro de tudo, quero dizer dois aplicativos completamente quando falo sobre diferentes aplicativos, não falo sobre duas instâncias do mesmo aplicativo.

Posso usar dois ou mais aplicativos de sessão de primavera diferentes para armazenar sessões com apenas um servidor de redis em produção?

Esses aplicativos podem ser executados em diferentes instâncias de tomcats?

Como a sessão do Spring evita o conflito de id de sessão entre diferentes aplicativos com um servidor redis?

É necessário acrescentar o sufixo ou o prefixo id para evitar esse problema?

Respostas:

2 para resposta № 1

A Spring Session não oferece suporte nativo a sessões de escopo neste momento. Vejo gh-166 para detalhes sobre o rastreamento disso.

Spring Session gera um id aleatório seguro com alto nível de entropia para id de sessão, portanto há uma probabilidade extremamente baixa de ocorrer colisões.

Isso significa que você pode usar a mesma instância do Redis para vários aplicativos usando o Spring Session, desde que você esteja bem com a seguinte declaração:

Um usuário mal-intencionado pode usar o ID de sessão do Aplicativo A com o Aplicativo B. Por que isso é importante? Considere o seguinte cenário:

  • O aplicativo A é um aplicativo público para o qual qualquer usuário pode criar uma conta.
  • O aplicativo B é um aplicativo particular que somente usuários convidados podem se inscrever.
  • O usuário mal-intencionado cria uma conta e autentica com o Aplicativo A
  • O usuário copia seu ID de sessão para o Aplicativo A. Eles navegam para o Aplicativo B e colam o ID da sessão em seus cookies para o Aplicativo B e agora são autenticados.

Isso pode não ser um problema para você. Por exemplo, uma boa prática de segurança garantiria que o usuário fosse devidamente autorizado procurando uma função ADMIN no Aplicativo B. O Aplicativo A não preencheria essa função, portanto, enquanto o usuário é autenticado com o Aplicativo B, ele não está autorizado a usá-lo.