Como posso compartilhar sessões de usuário em vários domínios usando Rails?
-
07-07-2019 - |
Pergunta
Alguém tem conhecimento de quaisquer gemas, tutoriais, ou soluções que permitem que um usuário entrar em um website em um domínio e automaticamente dado acesso a outros domínios de parceiros na mesma sessão?
Eu tenho duas aplicações Rails em execução, vamos chamá-los App-A e App-B. App-A tem um banco de dados associado com ele, alimentando o registro e login no App-A.com. Eu agora gostaria de dar a todos os usuários com App-A.com contas acesso a App-B.com, sem fazê-los reregister ou manualmente de login para App-B.com separadamente.
Agradecemos antecipadamente por qualquer ajuda! --Mark
Solução
Você pode definir a mesma session_key em ambos os aplicativos. Em Appa environment.rb mudar o session_key, como este
Rails::Initializer.run do |config|
...
config.action_controller.session = {
:session_key => '_portal_session',
:secret => '72bf006c18d459acf51836d2aea01e0afd0388f860fe4b07a9a57dedd25c631749ba9b65083a85af38bd539cc810e81f559e76d6426c5e77b6064f42e14f7415'
}
...
end
Faça o mesmo em AppB. (Lembre-se de usar o mesmo segredo)
sessões Agora você tem compartilhado. Digamos que você use restfull_authentication, wich define uma variável de sessão chamado user_id . Quando você autenticar no Appa ele define o user_id na sessão. Agora, em AppB você só tem que verificar se user_id existe na sessão.
Este é o esquema geral, você pode elaborar mais usando essa idéia.
Outras dicas
Se você quiser criar single sign-on solução para as suas aplicações, em seguida, eu recomendo dar uma olhada em RubyCAS solução. Pode ser usado também para fornecer single sign-on para outros não-Rails aplicações, assim como você pode integrar a autenticação com o LDAP ou outros provedores de autenticação.