Domanda

La mia squadra e io stiamo attualmente lavorando su un progetto piuttosto grande. Stiamo lavorando a un gioco online, che sarà accessibile (per il momento), in due modi: -Via Un browser Web, un'applicazione full JavaScript (lato client), completo Ajax (fondamentalmente il significato che l'interfaccia utente verrà gestita nel lato client JS). -Via Un'applicazione per iPhone (l'UI sarà gestito dall'applicazione stessa).

Tra le due diverse applicazioni, la logica del nucleo rimane la stessa, quindi credo (potrei sbagliare), che la soluzione migliore sarebbe quella di creare un servizio Web (se possibile utilizzando gli standard come il riposante o il riposo) in grado di perming tutte le operazioni necessarie.

Seguendo questa logica, ho riscontrato un problema: l'autenticazione e la gestione dell'identità dell'utente. Questo pone il problema come gli utenti delle applicazioni devono essere autenticati per preformare determinate operazioni.

Ho esaminato la sicurezza WS, ma questo ovviamente richiede che le password vengano memorizzate, non criptate sul server, che non è accettabile! Allora guardai in OAuth, ma a prima vista sembrava un sacco di lavoro da allestire e non particolarmente adatto ai miei bisogni (il modo in cui le domande devono essere accettate non per favore, poiché sarà solo la mia applicazione e la mia applicazione Utilizzo del servizio Web, non di applicazione esterna). Ho letto e ho sentito parlare di molti altri modi per fare ciò che voglio, ma ad essere onesto, sono un po 'confuso e non so quali informazioni sono affidabili e cosa non è.

Vorrei notare che sto usando symfony2 per il backend e jquery per il lato client JavaScript. Inoltre, vorrei una risposta dettagliata e dettagliata, perché sono davvero confuso con tutto ciò che ho letto e ascoltato.

Grazie per il tuo tempo, e spero che qualcuno possa aiutarmi perché è piuttosto urgente.

Buona sera

È stato utile?

Soluzione

Non sono del tutto sicuro se questo risponde alla tua richiesta, ma poiché l'interfaccia utente verrà sempre gestita sul lato client, penso che potresti usare l'autenticazione HTTP apolide:

Questo è il firewall in security.yml:

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

E poi l'idea è fondamentalmente che sul server, si utilizzano i normali provider utente, encoder e whatnot per ottenere la massima sicurezza e sul client, si inviano le intestazioni di autenticazione HTTP, ad esempio, in jQuery: Si prega di notare che dal momento che l'autenticazione è apolide (nessun cookie viene creato), le intestazioni devono essere inviate con ogni richiesta, ma, immagino, poiché l'applicazione è quasi interamente lato client, questo non è un problema .

Puoi anche controllare il Symfony2 Manuale di sicurezza per ulteriori informazioni su come Imposta l'autenticazione HTTP. Assicurati anche di forzare l'accesso HTTPS nel tuo ACL, quindi le richieste contenenti le credenziali sono protette (requires_channel: https nelle definizioni ACL).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top