Question

Mon équipe et moi travaillons actuellement sur un projet assez important.Nous travaillons sur un jeu en ligne, qui sera accessible (pour le moment), de deux manières :-Via un navigateur web, une application full JavaScript (côté client), full Ajax (ce qui signifie essentiellement que l'interface utilisateur sera gérée côté client JS).-Via une application iPhone (l'UI sera gérée par l'application elle-même).

Entre les deux applications différentes, la logique de base reste la même, donc je pense (je peux me tromper) que la meilleure solution serait de créer un service Web (si possible en utilisant des standards tels que RESTful ou Rest) capable de gérer tout ce qui est nécessaire. opérations.

Suivant cette logique, j'ai rencontré un problème :l'authentification et la gestion de l'identité de l'utilisateur.Cela pose problème car les utilisateurs des applications doivent être authentifiés pour effectuer certaines opérations.

J'ai étudié la sécurité WS, mais cela nécessite évidemment que les mots de passe soient stockés en clair sur le serveur, ce qui n'est pas acceptable !Je me suis ensuite penché sur Oauth, mais à première vue cela m'a semblé beaucoup de travail à mettre en place et pas particulièrement adapté à mes besoins (la manière dont doivent être acceptées les candidatures ne me plaît pas puisque ce sera ma candidature et ma candidature uniquement en utilisant le service Web, pas une application externe).J’ai lu et entendu parler de nombreuses autres façons de faire ce que je veux, mais pour être honnête, je suis un peu confus et je ne sais pas quelles informations sont fiables et lesquelles ne le sont pas.

Je voudrais noter que j'utilise symfony2 pour le backend et jquery pour le JavaScript côté client.De plus, j'aimerais avoir une réponse détaillée, étape par étape, car je suis vraiment confus par rapport à tout ce que j'ai lu et entendu.

Merci pour votre temps et j'espère que quelqu'un pourra m'aider car c'est assez urgent.

Bonne soirée

Était-ce utile?

La solution

Je ne sais pas vraiment si cela répond à votre demande, mais comme l'interface utilisateur sera toujours gérée côté client, je pense que vous pourriez utiliser l'authentification HTTP sans état :

C'est le pare-feu dans security.yml:

security:
    firewalls:
        api:
            pattern: ^/api/ # or whatever path you want
            http_basic: ~
            stateless: true

Et puis l'idée est fondamentalement que sur le serveur, vous utilisez vos fournisseurs d'utilisateurs, encodeurs et autres pour obtenir une sécurité maximale, et sur le client, vous envoyez les en-têtes d'authentification HTTP, par exemple, dans jQuery :

$.ajax("...", {
    username: "Foo",
    password: "bar"
});

Veuillez noter que puisque l'authentification est sans état (aucun cookie n'est jamais créé), les en-têtes doivent être envoyés à chaque demande, mais je suppose que puisque l'application est presque entièrement côté client, ce n'est pas un problème.

Vous pouvez également vérifier le Manuel de sécurité Symfony2 pour plus d'informations sur la configuration de l'authentification HTTP.Assurez-vous également de forcer l'accès HTTPS dans votre ACL, afin que les requêtes contenant les informations d'identification soient sécurisées (requires_channel: https dans vos définitions ACL).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top