2012-04-10 12 views
7

Sto scrivendo un server utilizzato modello ASP.NET Web Api e implementando servizi di riposo. Questo server sarà un back-end per un gioco mobile in cui memorizzerà i punteggi massimi, i progressi e altre informazioni degli utenti. Ho dato un'occhiata a un numero di approcci (this, this e this) e ho difficoltà a decidere quale approccio utilizzare. Nel mio caso, vorrei evitare la frode dei punteggi principalmente poiché ogni account utente conterrà informazioni limitate (al di fuori della loro e-mail). Ecco cosa sarebbe idealmente accadendo. apreAutenticazione e autorizzazione tramite REST e ASP.NET Web Api da applicazioni mobili multipiattaforma

  1. utente app per la prima volta
  2. utente è dato l'opzione per il nome utente personalizzato e questo è controllato dal server in modo non ci sono duplicati
  3. utente viene assegnato un numero di pin generato in modo casuale a sei cifre (in modo da poter utilizzare lo stesso account su telefoni diversi)
  4. utente inserisce l'indirizzo e-mail
  5. nuovo utente viene creato sul server (server verifica che l'account è stato creato da un'istanza valida della mia applicazione client)
  6. L'utente gioca al gioco, carica i risultati (tramite autenticazione di base?)
  7. L'utente può visualizzare i risultati globali (nessuna sicurezza sui metodi GET che non sono utente specifico)

Ho problemi restringendo che tipo di autenticazione (schermate del browser di login e simili) e l'autorizzazione metodi da usare Qualsiasi aiuto sarebbe molto apprezzato.

-Tamas

+0

Forse l'authenicazione di base sarebbe sufficiente in questo caso? Ma sono ancora insicuro su come assicurarsi che qualcuno stia accedendo al resto dell'APP tramite un client valido. – tamaslnagy

risposta

5

Anche se si utilizza l'autenticazione di base, si desidera utilizzare HTTPS. Se si utilizza HTTPS, è possibile utilizzare i certificati client per verificare anche il client. Solo i clienti con un certificato valido avranno accesso. Se non si apre questa API ad altri utenti e verrà utilizzata solo da un client sviluppato dall'utente, è possibile prendere in considerazione WS-Security e WCF. C'è una descrizione divertente delle differenze usando i driver di moto nudi come una metafora here.

+0

Utilizzerò più lingue (Java, Obj-C e C# /. NET), quindi non so se il metodo ws-security/wcf funzionerebbe. Il metodo del certificato client è multipiattaforma? – tamaslnagy

+0

Se sarà multipiattaforma, consiglierei di attenersi a REST. Il certificato del cliente è multipiattaforma. –

+0

Sembra buono. Lo esaminerò.Inoltre, non ho mai capito come si è verificata la registrazione iniziale con il sistema di autenticazione di base, ovvero quando il nome utente e la password immessi non sono ancora nel database del server. – tamaslnagy

1

Se è da diversi client/dispositivi, qualcosa come l'autenticazione basata su token potrebbe funzionare per voi.

L'idea è semplice, si dispone del metodo di autenticazione nel proprio servizio Web. Questo metodo è responsabile del controllo delle credenziali e dell'emissione di "token". Alcune strutture semplici come la stringa SHA1 o MD5 che utilizzano tutte le altre chiamate client.

Se il client è autenticato, memorizza il token per l'intera durata della sessione. Il resto dei metodi di servizio Web, come SaveScore, accetta solo token come parametro. Hanno quindi il compito di verificare se è valido o meno. Se il token non è valido, la chiamata non viene servita.

+0

Se possibile, preferirei l'autenticazione di base su metodi basati su token. – tamaslnagy

Problemi correlati