Frage

Mein Team und ich arbeiten derzeit an einem ziemlich großen Projekt.Wir arbeiten an einem Online-Spiel, das (vorerst) auf zwei Arten zugänglich sein wird:- Über einen Webbrowser, eine Anwendung mit vollständigem JavaScript (clientseitig) und vollständigem Ajax (was im Grunde bedeutet, dass die Benutzeroberfläche auf der JS-Clientseite verwaltet wird).-Über eine iPhone-Anwendung (die Benutzeroberfläche wird von der Anwendung selbst verwaltet).

Zwischen den beiden verschiedenen Anwendungen bleibt die Kernlogik dieselbe, daher glaube ich (ich könnte mich irren), dass die beste Lösung darin besteht, einen Webdienst zu erstellen (wenn möglich unter Verwendung von Standards wie RESTful oder Rest), der in der Lage ist, alles Notwendige zu gewährleisten Operationen.

Wenn ich dieser Logik folge, bin ich auf ein Problem gestoßen:die Authentifizierung und Identitätsverwaltung des Benutzers.Dies stellt ein Problem dar, da die Anwendungsbenutzer authentifiziert werden müssen, um bestimmte Vorgänge durchzuführen.

Ich habe mich mit der WS-Sicherheit befasst, aber dafür müssen Passwörter natürlich unverschlüsselt auf dem Server gespeichert werden, was nicht akzeptabel ist!Ich habe mich dann mit Oauth befasst, aber auf den ersten Blick schien die Einrichtung eine Menge Arbeit zu sein und nicht besonders für meine Bedürfnisse geeignet zu sein (die Art und Weise, wie Bewerbungen angenommen werden müssen, gefällt mir nicht, da es sich um meine Bewerbung und nur um meine Bewerbung handelt). Nutzung des Webdienstes, nicht einer externen Anwendung).Ich habe viele andere Möglichkeiten gelesen und gehört, das zu tun, was ich will, aber um ehrlich zu sein, bin ich etwas verwirrt und weiß nicht, welche Informationen zuverlässig sind und welche nicht.

Ich möchte darauf hinweisen, dass ich Symfony2 für das Backend und JQuery für das clientseitige JavaScript verwende.Darüber hinaus hätte ich gerne eine ausführliche Schritt-für-Schritt-Antwort, da ich bei allem, was ich gelesen und gehört habe, wirklich verwirrt bin.

Vielen Dank für Ihre Zeit und ich hoffe, dass mir jemand helfen kann, da es ziemlich dringend ist.

Guten Abend

War es hilfreich?

Lösung

Ich bin mir nicht ganz sicher, ob dies Ihre Anfrage beantwortet, aber da die Benutzeroberfläche immer auf der Clientseite verwaltet wird, könnten Sie meiner Meinung nach eine zustandslose HTTP-Authentifizierung verwenden:

Dies ist die Firewall in security.yml:

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

Und dann besteht die Grundidee darin, dass Sie auf dem Server Ihre normalen Benutzerprovider, Encoder und so weiter verwenden, um maximale Sicherheit zu erreichen, und auf dem Client die HTTP-Authentifizierungsheader senden, beispielsweise in jQuery:

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

Bitte beachten Sie, dass die Header bei jeder Anfrage gesendet werden müssen, da die Authentifizierung zustandslos ist (es wird nie ein Cookie erstellt). Da die Anwendung jedoch fast ausschließlich clientseitig ist, ist dies meiner Meinung nach kein Problem.

Sie können auch die überprüfen Sicherheitshandbuch für Symfony2 Weitere Informationen zum Einrichten der HTTP-Authentifizierung finden Sie hier.Stellen Sie außerdem sicher, dass Sie den HTTPS-Zugriff in Ihrer ACL erzwingen, damit die Anforderungen mit den Anmeldeinformationen geschützt sind (requires_channel: https in Ihren ACL-Definitionen).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top