Sto refactoring per un client un'app che dovrebbe supportare OpenID, Facebook Connect e autenticazione personalizzata (email + password). crediate che io sia:Il modo migliore per supportare l'accesso multiplo su AppEngine
class MyUser(db.Model):
pass
class Item(db.Model):
owner = db.ReferenceProperty(MyUser)
Stavo pensando di implementare diversi sistemi di autenticazione in questo modo:
class OpenIDLogin(db.Model): # key_name is User.federated_identity()? User.user_id()?
user = db.ReferenceProperty(MyUser)
class FacebookLogin(db.Model): # key_name is Facebook uid
user = db.ReferenceProperty(MyUser)
class CustomLogin(db.Model): # key_name is the user email
user = db.ReferenceProperty(MyUser)
password = db.StringProperty()
C'è una soluzione migliore? C'è già una risposta here ma non riesco a capire se questa è la soluzione giusta per me. Ho già sviluppato un'app utilizzando l'API Users e un'altra utilizzando Facebook Connect in passato, quindi so come gestire entrambi, il problema è collegarli insieme. Passare a un altro framework non è un'opzione, purtroppo.
Facebook ora utilizza una versione bozza di OAuth 2.0, che dipende da https per sicurezza. Attenzione: il servizio URL Fetcher di App Engine attualmente non convalida i certificati https, il che significa che la tua app sarà vulnerabile agli attacchi di avvelenamento DNS e man-in-the-middle; esponendo potenzialmente le tue chiavi segrete di Facebook. Dovrai decidere autonomamente se pensi che qualcuno possa montare con successo un simile attacco sulle macchine Fetcher di URL di Google e se una tale perdita di chiavi segrete sia accettabile. –
Questo è sulla mia tabella di marcia in un paio di mesi, quindi apprezzerei anche una risposta. – mjhm
@Fest. Grazie per il testa a testa. Se capisco correttamente la potenziale minaccia di cui parli si trova tra i server GAE e i server di Facebook. Questa non è una minaccia "Starbucks WiFi" a livello utente. È corretto? – mjhm