2012-07-10 15 views
12

Abbiamo due prodotti separati, inclusi l'app Web e il server.Come implementare o integrare il single sign on con SAML e Shibboleth

Vogliamo implementare il Single Sign-On per entrambi, quindi quando un utente ha effettuato l'accesso a un prodotto, può accedere automaticamente alle risorse dell'altro prodotto che gli appartiene.

Ho esplorato un po 'e ho trovato che SAML è un buon approccio che possiamo adottare, ma non siamo sicuri di come vogliamo procedere.

È una buona idea implementare il nostro fornitore di servizi? Ho guardato Shib SP, ma sembra che se voglio integrarlo nei miei prodotti, non sarà altrettanto facile.

Quindi sto solo cercando alcuni suggerimenti da persone che hanno riscontrato un problema simile prima.

Un'altra domanda è quale risorsa posso studiare se devo implementare un SP utilizzando OpenSaml? Sembra che non ci siano molti tutorial o esempi a cui posso riferire.

Sarei anche molto apprezzato se qualcuno può solo indicare alcune grandi procedure o componenti che il mio SP deve contenere.

EDIT 1:

solo cercare di fornire maggiori dettagli su ciò che voglio. Abbiamo due prodotti separati. Attualmente siamo in grado di esternalizzare il database degli utenti. Ad esempio, i nostri prodotti possono essere configurati per connettersi al server LDAP o qualsiasi altro DB utente esterno purché implementino correttamente un servizio.

Ora il nostro obiettivo è che vogliamo SSO per entrambi i nostri prodotti. Uno scenario è che abbiamo la nostra componente SP (che implementa o integra) in entrambi i prodotti. Il cliente può avere il proprio IdP. Con alcune configurazioni, il nostro SP può connettersi al proprio IdP e fare l'autenticazione da lì, e l'utente non deve effettuare il login due volte per accedere a entrambi i prodotti. Di causa, possiamo fornire un IdP immediato se il cliente non lo possiede.

risposta

13

La più grande difficoltà con Shibboleth è che è, in effetti, un'implementazione di riferimento della specifica SAML v2.0.

Per la maggior parte delle installazioni di routine, tuttavia, è effettivamente necessaria una minima parte delle specifiche SAML per abilitare un paio di app Web per SSO.

Ma poiché Shibboleth implementa il tutto, con tutte le sue capacità, può essere un orso da configurare.

Abbiamo fatto un progetto con Shibboleth (ed è stato dichiaratamente un caso d'uso marginale), e, per me, un debuttante SAML al momento, è stato davvero un lavoro ingrato per far funzionare tutto.

Per il nostro tentativo successivo, ho esaminato lo SAML spec per SSO tramite il profilo Web. Se lo leggi, in realtà è abbastanza semplice per questo caso d'uso limitato. E abbiamo deciso che invece di usare di nuovo Shibboleth, scriveremmo i nostri IdP e SP usando le librerie OpenSAML.

Potremmo avere Shibboleth a lavorare più velocemente? Probabilmente. Ma non penso che avremmo la comprensione di ciò che facciamo per conto nostro. Un po 'di non-inventato-qui, certo, ma questa roba è abbastanza confusa quando capisci il software e il vocabolario, tanto meno quando non lo fai. E SAML è pieno zeppo di nuovo vocabolario.

Puoi anche considerare l'utilizzo di SimpleSAML come un IdP e scrivere il tuo SP personale per le tue app web. SimpleSAML è in PHP, ma è un po 'più user friendly. Puoi trattarlo come un servizio apache autonomo.

Dirò che il nostro SP pesa circa 1000 righe di codice javadoc'd, ma è principalmente il cablaggio di roba OpenSAML insieme e alcune utilità. In verità non è così spaventoso. Preparatevi a divertirvi davvero leggendo i BLOB XML firmati.

E 'frustrante che questo non è davvero più semplice, ma è un po' un pollo/cosa uovo per quanto riguarda l'adozione ecc

E se nessuno di che fa per voi, si può guardare OAuth2 e alcuni dei suoi profili.

+0

Ho esattamente la stessa sensazione quando cerco di creare una demo usando Shib SP e IdP. È troppo potente e flessibile. Ho passato così tanto tempo a leggere il loro wiki e google altre risorse correlate. Ci sono molti nuovi vocabolari che dobbiamo capire.Grazie mille per il tuo post. Mi rende più coraggioso provare a implementare il nostro SP. Puoi condividere con me alcune risorse o esempi a cui ti sei riferito mentre scrivevi il tuo codice SP? Non vedo molto su Internet. – performanceuser

+0

Ho cercato su google e ho trovato http://code.google.com/p/websso/. Non l'ho usato da solo, ma come primo taglio sembra piuttosto buono. Ha entrambi i lati SP e IdP dell'equazione. Il checkout svn è ... grande. Ho anche trovato http://www.capcourse.com/Library/OpenSAML/index.html, ma il suo codice non ha (evidente) licenza, quindi non l'ho guardato troppo da vicino. Ma ha esempi SAML generici che potresti essere in grado di guardare se rimani bloccato. –

+0

Grazie mille. Darò un'occhiata a questi esempi. – performanceuser

3

Se si desidera implementare SSO tra 2 prodotti, penso di sì, creare qualcosa da zero è più semplice. Se è Java, l'OpenSaml di Shibboleth è una buona alternativa.

Come si inizia a implementare più cose e alcuni scenari complessi, andare per qualcosa già costruito è la scelta migliore. Dovresti anche essere a conoscenza di diversi elementi che potresti scrivere su una base per sistema (ad esempio generazione di asserzioni, xml-dsig, convalida, ecc.).

A prima vista, potrebbe sembrare che i prodotti già costruiti siano troppo complessi o difficili da scalare o adattarsi alle esigenze specifiche. Ma il tuo impegno nello scrivere connettori e implementazioni può essere ricompensato quando hai voglia di esplodere tutte le funzionalità SAML.

Sarebbe molto utile, però, se è possibile spiegare con maggiori dettagli cosa si vuole raggiungere; La tua domanda è abbastanza aperta ...

+0

Grazie. Ho aggiornato il mio post originale. Sono d'accordo che la domanda è abbastanza aperta. Ho cercato di fornire quanti più dettagli possibile. – performanceuser

+0

@performanceuser dato il tuo aggiornamento, e se non va oltre, ti consiglio di scrivere una semplice asserzione SAML che consuma endpoint che fa tutta la logica, e chiede al tuo cliente di postare lì per abilitare il login dalla tua parte. Devi ancora occuparti di alcune cose (cioè, logout, sicurezza) ma penso che il tempo per scriverlo e conoscere il vincolo sia inferiore a quello necessario per comprendere il prodotto completo di Shibo. –

+0

Grazie. Proverò a implementarne uno. Puoi condividere con me alcune risorse o esempi sull'implementazione di SP usando openSAML? Non vedo molto su Internet. – performanceuser

0

Non ho esperienza personale con Shibboleth Service Provider, ma attualmente sto sviluppando un'architettura che utilizza Idib di Shibboleth, Servizio di individuazione di Shibboleth e Guanxi Service Provider. Integrare il modulo Guard leggero del Guanxi Service Provider con Java webapp è un gioco da ragazzi e puoi facilmente ottenere un'architettura basata su Shibboleth senza scrivere i tuoi moduli. C'è localhost tutorial per l'impostazione di Guanxi SP, basta saltare le parti su Guanxi WAYF e IdP e utilizzare i componenti Shibboleth al loro posto.

+0

Grazie per le vostre informazioni. Questa è la prima volta che ho sentito parlare di Guanxi. Sai se è gratuito? – performanceuser

+0

[1]: https://github.com/guanxi/guanxi-sp-engine/blob/master/README [2]: https://github.com/guanxi/guanxi-sp-guard/blob/ master/README – Erwin

Problemi correlati