Sto cercando di trovare un'architettura solida per l'autenticazione degli utenti rispetto a un database. Ho un client di gioco, con cui prevedo di presentare una richiesta. Il trasporto non ha molta importanza, ma a questo punto sto pensando a http e sfruttando SSL o ws-security per garantire la crittografia dei dati sul filo.
Vorrei evitare gli attacchi degli uomini centrali, se possibile, quindi mi sto appoggiando alla sicurezza della ws anche se so che costa di più.
Per quanto riguarda il servizio, mi piacerebbe utilizzare un framework di autenticazione come - link - per autenticare gli utenti da un database mysql. Non sono sicuro di poter sfruttare le funzionalità della sessione o meno, dato che non l'ho cercato, ma sarebbe bello se potessi.
Probabilmente sarà un mix di memorizzare alcune informazioni di sessione nel database e se posso sfruttare le funzionalità di sessione di Shiro, allora questo è un bonus.
La mia vera domanda è l'handshake tra il client e il server. Se uso ws-security non è tutto ciò che mi interessa? Vale solo per questo? Vale la pena?
Se no, cosa dovrei fare qui? Voglio assicurarmi che tutte le richieste da parte del client siano autenticate, ma non voglio nemmeno dover passare da un anello all'altro per farlo accadere. Funzionerebbe qualcosa di semplice come l'autenticazione http digest qui?
Un vincolo che ho è l'accesso alle librerie. Se non è gratuito e non può essere utilizzato in un prodotto commerciale, non posso sfruttarlo. Il mio cliente verrà scritto in C ++ e posso usare qualsiasi lingua lo renda più semplice (sono incline a java) per farlo accadere sul lato server.
Ho intenzione di aggiungere il supporto per gli utenti per l'acquisto di oggetti di gioco attraverso micropagamenti in fondo alla strada, quindi questo meccanismo di stretta di mano deve sicuramente essere sicuro.
Continuo a sentire persone suggerire REST + SSL e ad esaminare il collegamento
È un'alternativa valida? Se lo usassi + qualcosa come Apache Shiro avrei un vincitore?
Qualunque cosa io usi, deve essere scalabile in quanto il sistema crescerà con gli utenti / volume di richieste nel tempo.