webservice de autenticação de utilizador e de gestão de identidade
Pergunta
A minha equipe e a mim, estão atualmente trabalhando em um grande projeto.Estamos trabalhando em um jogo online, que estará acessível (para o momento), de duas maneiras:-Através de um navegador web, uma aplicação completa JavaScript(client-side), completa Ajax (basicamente, o que significa que a INTERFACE de usuário será gerenciado javascript do lado do cliente).-Através de um aplicativo para iPhone (a INTERFACE de usuário será gerenciado pelo próprio aplicativo).
Entre as duas aplicações diferentes, o núcleo da lógica permanece a mesma, então eu acredito (posso estar errado), que a melhor solução seria a criação de um serviço web (se possível, utilizando padrões como de descanso ou Repouso), capaz de perming todas as operações necessárias.
Seguindo esta lógica, eu encontrei um problema:a autenticação e gerenciamento de identidade do usuário.Isto coloca um problema, como as aplicações que os usuários precisam estar autenticado para pré-determinadas operações.
Eu olhei para a especificação WS-security, mas isso, obviamente, requer que as senhas sejam armazenadas, sem criptografia no servidor, o que não é aceitável!Então eu olhei para o Oauth, mas, à primeira vista, parecia um monte de trabalho para configurar e não é particularmente adequado para as minhas necessidades de forma que as aplicações têm de ser aceites não me agrada, pois vai ser a minha candidatura e a minha aplicação usando apenas o serviço da web, não qualquer aplicação externa).Tenho lido e ouvido falar sobre um monte de outras maneiras de fazer o que eu quiser, mas para ser honesto, eu estou um pouco confuso e eu não sei o que a informação é confiável e o que não é.
Gostaria de salientar que estou usando o symfony2 para o back-end e jquery para o lado do cliente JavaScript.Além disso, eu gostaria de um detalhadas, passo-a-passo de resposta, porque eu realmente estou confusa com tudo o que tenho lido e ouvido.
Obrigado pelo seu tempo e espero que alguém possa me ajudar, como é bastante urgente.
Boa noite
Solução
Eu não sou inteiramente certo se isso responde a sua solicitação, mas desde que a INTERFACE do usuário irá sempre ser tratadas no lado do cliente, eu acho que você poderia usar sem monitoração de estado autenticação de HTTP:
Este é o firewall em security.yml
:
security:
firewalls:
api:
pattern: ^/api/ # or whatever path you want
http_basic: ~
stateless: true
E, em seguida, a ideia, basicamente, é que no servidor, você pode usar o seu usuário normal fornecedores, encoders e outros enfeites para alcançar o máximo de segurança, e no cliente, você pode enviar o HTTP cabeçalhos de autenticação, por exemplo, jQuery:
$.ajax("...", {
username: "Foo",
password: "bar"
});
Por favor, note que uma vez que a autenticação é stateless (sem cookie é criado sempre), os cabeçalhos devem ser enviadas com cada solicitação, mas, eu acho, uma vez que a aplicação é quase que inteiramente do lado do cliente, este não é um problema.
Você também pode verificar o Symfony2 de segurança manual para obter mais informações sobre como configurar a autenticação HTTP.Também certifique-se de forçar o acesso no ACL, para as solicitações que contém as credenciais são protegidas (requires_channel: https
em suas definições de ACL).