7RTC / sfcb

Aplicativo para criações de colagens no Facebook. Backend no Google App Engine.
http://sfcb.7rtc.com
MIT License
0 stars 1 forks source link

Refatorar o sistema de autenticação / gestão de tokens de acesso #7

Closed aaccioly closed 10 years ago

aaccioly commented 10 years ago

Original report by Anthony Accioly (Bitbucket: [Anthony Accioly](https://bitbucket.org/Anthony Accioly), ).


O sistema de autenticação atual depende de tokens de acesso, atualmente armazenados tanto em memcache (para a camada de endpoints) quanto em sessão (para os JSPS).

Está sendo utilizado um Servlet de login para requisitar um token de longa data (/login). Esse servlet é chamado através de requisição Ajax toda vez que o usuário acessa a raiz do site.


Problemas:

Se o usuário acessar a página de colagens (/colagem) com sua sessão espirada, acaba recebendo um erro genérico. Isso prejudica especialmente usuários que criarem um bookmark para essa página ao invés da raiz da aplicação.

O problema contrário também ocorre. Ou seja, usuários que fazem logout do Facebook e acessam /colagem enquanto a sessão não expirou ficam com um sistema parcialmente funcional. Funcionalidades server side como visualização de fotos respondem corretamente, mas funcionalidades que dependem do client como visualização de álbuns não funcionam.

Proposta:

  1. Refatorar o sistema de login (talvez transformando-o em um serviço), e desacoplando-o do redirect para /colagem.

  2. A página de colagem passará a monitorar usuários não autenticados no Facebook, propagando um logout na aplicação.

  3. Finalmente, a página monitorará usuários devidamente autenticados no Facebook que não possuam tokens de autenticação, evitando o erro genérico fatal. A proposta é que a página de colagem obtenha um token de autenticação para o usuário logado. Ainda não sabemos se isso será feito através de um refresh da página ou um request Ajax. A segunda escolha pode eliminar a dependência de sessões, porém temos que julgar o impacto disso em termos de performance e segurança.

aaccioly commented 10 years ago

Original comment by Anthony Accioly (Bitbucket: [Anthony Accioly](https://bitbucket.org/Anthony Accioly), ).


Adicionalmente pop-ups de login estão sendo bloqueadas ao clicar no botão postar. Isso ocorrer pois não é o clique que dispara o evento, e sim o callback da chamada a /me/permissions. A lógica deve ser refatorada para checar a existência dessa permissão durante a inicialização da página.

aaccioly commented 10 years ago

Original comment by Anthony Accioly (Bitbucket: [Anthony Accioly](https://bitbucket.org/Anthony Accioly), ).


Melhorias no sistema de autenticação

Fixes issue #7

aaccioly commented 10 years ago

Original comment by Anthony Accioly (Bitbucket: [Anthony Accioly](https://bitbucket.org/Anthony Accioly), ).


Por enquanto mantive o sistema de login baseado em servlets e sessão. Reabrirei a task caso seja decidido refatorar a lógica server-side do login.