Ho già fatto molte ricerche su questo argomento e ho implementato molte soluzioni da solo.Il modo migliore per implementare l'accesso Single Sign-On con tutti i principali fornitori?
Includendo OpenID, Facebook Connect (utilizzando la vecchia API Rest e la nuova API Graph OAuth 2.0), Accedi con Twitter (che è stato aggiornato a OpenID completamente qualificato ormai per quanto ne so) e così via. ..
Ma quello che mi manca ancora è la perfetta soluzione tutto in uno.
Durante la mia ricerca ho inciampato su alcuni progetti interessanti:
- Janrain (formerly RPX) - a commercial solution
- Gigya - a free but externally hosted solution with javascript and rest apis
- AnyOpenID - a free solution for clients, commercial for websites
Ma io non voglio fare affidamento su un fornitore esterno e vorrei come una soluzione gratuita, quindi non sono limitato nell'implementazione.
Ho visto anche sviluppatori che implementano un servizio dopo l'altro seguendo diligentemente le istruzioni dei provider e impostando modelli e tabelle di database per tutto.
Naturalmente questo funziona, ma è un casino di lavoro e ha sempre bisogno di sviluppo e cambiamenti nella vostra applicazione ecc
Quello che sto cercando è un livello di astrazione che prende tutti i servizi là fuori per uno standard che può essere integrato nel mio sito web. Quando viene visualizzato un nuovo servizio, voglio solo aggiungere un modello che si occupa dell'astrazione di quel fornitore specifico in modo da poterlo integrare senza problemi nella mia applicazione.
O meglio, trovare una soluzione già esistente che posso semplicemente scaricare.
Idealmente questo servizio di astrazione sarebbe ospitato in modo indipendente dalla mia applicazione in modo che possa essere utilizzato per diverse applicazioni ed essere aggiornato indipendentemente.
L'ultima delle 3 soluzioni sopra sembra promettente dal concetto. Tutto è appena trasferito a un OpenID sintetico e l'intestazione del sito Web deve implementare OpenID.
Dopo un po 'ho trovato Django socialauth, un sistema di autenticazione basato su python per il Webframework di Django. Ma sembra che funzioni come descritto sopra e penso che questo sia lo stesso sistema di login che StackOverflow utilizza (o almeno qualche fork modificato ...).
L'ho scaricato e ho provato a configurarlo e vedere se poteva essere impostato come soluzione autonoma, ma non ho avuto fortuna, perché non lo sono neanche per Python.
Mi piacerebbe una soluzione basata su PHP.
Così, dopo questo lungo testo la mia domanda è proprio:
- Come ti implementare SSO, qualche idea migliore di porting tutto e hanno OpenID come base?
- Quali sono i pro e i contro di ciò?
- Conosci qualche soluzione già esistente? Preferibilmente open source.
Spero che questa domanda non sia troppo soggettiva, grazie in anticipo.
Aggiornamento: Ho concluso che la creazione di un proxy/wrapper o di quello che si potrebbe chiamare per Facebook, per portarlo su un OpenID in modo che diventi un endpoint/provider OpenID sarebbe l'opzione migliore. Così esattamente quello che ho fatto.
Si prega di vedere la mia risposta qui sotto.
Ho aggiunto la taglia per ottenere feedback/discussioni su di essa. Maby il mio approccio non è così buono come penso che sia attualmente!
ho modificato la mia classe un po 'e corretto alcuni bug! lo metterà su github o qualcosa del genere quando è fatto, favorisce la domanda per ottenere l'aggiornamento. –
Non credo che questa domanda sia abbastanza non costruttiva da essere chiusa. – markus
nevermind @ markus-tharkun, mi sento come se effettivamente aiutarmi a vicenda è diventato irrilevante in SO. è più simile a un regime con le sue definizioni di ciò che fa e non fa una buona domanda e il desiderio di dare la caccia a tutti gli altri e umiliare l'interrogante in modo che non possa mai più tornare. –