2012-01-10 9 views
6

Ho ricevuto un paio di domande di implementazione SAML per chiarire la mia confusione ...Per implementare SAML ho bisogno di Shibboleth SP installato sul mio host?

Ho bisogno di implementare SSO in un'applicazione web Java.

  1. Per farlo, ho bisogno Shibboleth SP installato sul mio ospite like so, o posso fornire la funzionalità SP via OpenSAML?

  2. Suppongo che shibboleth stia facendo lo stesso di OpenSAML ma solo a livello di server Web, mentre OpenSAML lo farà da software. Questa supposizione è corretta?

EDIT: Così Shibboleth (secondo Scott Cantor) è costruire con OpenSAML ... non la mia ipotesi ancora tenere però?

  1. Quali saranno necessarie per utilizzare OpenSAML? Solo l'url IdP e una registrazione con l'idP?

  2. Devo fornire una directory SP, ad es. ActiveDirectory/LDAP?

EDIT: Grazie per le risposte, ma qualcuno può rispondere direttamente alle domande sopra ed elaborare su di loro ...

risposta

3

Cosa sarà necessario per utilizzare OpenSAML? Solo l'url IdP e una registrazione con l'idP?

È necessario Java e un contenitore Web e includere la libreria opensaml nella propria guerra.

È necessario memorizzare in cache i metadati IdP localmente o cercarli ogni volta quando si desidera inviare AuthnRequest o elaborare SAMLResponse. Inoltre devi registrare i tuoi metadati SP sul lato IdP.

Se si utilizza Shibboleth come IdP, i metadati SP devono essere impostati nel file conf/relying-party.xml.

Devo fornire una directory SP, ad es. ActiveDirectory/LDAP?

Per accedere all'IdP, è necessario impostare ldap o database server sul lato IdP e configurarlo in conf/attribute-resolver.xml e conf/login.config.

1

Si consiglia di inviare tali domande ai competenti mailing list gestito dal Progetto Shibboleth.

OpenSAML è un toolkit di livello molto basso per l'implementazione di soluzioni SAML, Shibboleth è un pacchetto SSO per applicazioni Web che supporta SAML che è stato realizzato con OpenSAML. Costruire soluzioni di sicurezza è complesso e richiede esperienza. Se non si dispone di tale esperienza, si farà un brutto lavoro, e OpenSAML non è documentato in modo tale che un tipico sviluppatore potrebbe creare una soluzione da zero.

Considerare l'utilizzo di un'implementazione completa, che si tratti di Shibboleth o qualcos'altro. Se non puoi vivere con Apache e codice nativo e hai bisogno di Java, dovresti provare una delle opzioni Java SP esistenti esistenti. Anche se fossero inadeguati, dovresti costruire su di loro e non duplicarli.

+1

Puoi fornire esempi di "opzioni Java SP esistenti"? – mahatmanich

13

aggiornamenti per risolvere le modifiche:

Ecco alcuni SAML 2 opzioni che è possibile utilizzare.

Shibboleth SP è un prodottoche implementa SAML 2.0 per voi, ma OpenSAML è solo una libreria con il quale è possibile implementare una soluzione di SAML 2.0. La libreria stessa è di basso livello e non è nemmeno lontanamente simile a una soluzione SSO. OpenSAML non è una soluzione SAML 2.0 da solo.

Per utilizzare OpenSAML o qualsiasi soluzione SAML 2.0, è necessario scambiare i metadati come indicato di seguito. Con OpenSAML dovrai generare a mano un file XML anche per il tuo MetaData. Sarà molto lavoro come indicato di seguito. I prodotti SAML 2.0 generano quel file MetaData XML e generano anche le chiavi RSA richieste utilizzate per la crittografia e la firma delle Asserzioni SAML 2.0. Con OpenSAML, avrai il supporto API per caricare parti dei file XML e API per generare e analizzare le tue Asserzioni, ma dovrai scrivere il codice Java che effettivamente costruisce l'interazione SSO.

L'SP fa non richiede necessariamente ActiveDirectory/LDAP, ma è necessario un tipo di directory nell'applicazione Web che tenga traccia degli utenti. Se la tua applicazione web ha già una nozione di utenti con alcune informazioni identificative che è possibile utilizzare per correlarle con la nozione di utenti di IdP, puoi semplicemente mappare quelli nella tua applicazione web in base ai valori dell'attributo nelle asserzioni SAML 2.0. (Se l'applicazione web non importa chi sono gli utenti, allora si può semplicemente permettere l'accesso all'applicazione in base all'utente di essere "valido".)

-

Integrazione Shibboleth2 SSO con un Web Java l'applicazione non è troppo difficile. Utilizzare OpenSAML per implementare l'SSO funzionerebbe, ma sarebbe molto più complicato dell'integrazione di un server Apache con Shibboleth.

L'utilizzo di Shibboleth richiede di avere Apache2 con il modulo Shibboleth abilitato e in cui è installato il daemon Shibboleth SP. In genere, quelli starebbero insieme nella stessa scatola. Se stai utilizzando Tomcat per ospitare l'applicazione Web Java, ti consiglio di utilizzare mod_proxy_ajp per comunicare tra il server HTTP Apache2 e Tomcat. In questo modo puoi raccogliere le variabili fornite da Shibolleth come attributi di richiesta servlet. (Devi impostare il prefisso variabile su "AJP_" in shibboleth2.xml.)

Il pacchetto SP di Shibboleth gestisce già tutti gli scenari SSO SAML standard che puoi aspettarti di incontrare, ma cercando di implementare anche uno di quelli con OpenSAML direttamente nella tua applicazione Java è pieno di pericoli sia dal farlo funzionare e anche dal renderlo sicuro. Aumenterai anche le dimensioni della tua app Web se utilizzi OpenSAML. Vale la pena notare che lo SP di Shibboleth non è scritto in Java, quindi non avrai esempi di utilizzo di OpenSAML per questo, ma potresti essere in grado di ottenere alcune informazioni guardando il codice IdP di Shibboleth, che è un'app web Java.

In entrambi i casi, dovrai scambiare i tuoi metadati SP (facilmente creati con il pacchetto Shibboleth SP) con il tuo provider di identità e anche ottenere i metadati del provider di identità sul tuo SP (anche facile con il pacchetto SP Shibboleth come semplicemente istituito un MetadataProvider).

La documentazione di Shibboleth online ti sarà di grande aiuto una volta che ti sarai abituato a utilizzarlo.

Penso che avrai maggiori possibilità di successo se puoi utilizzare il pacchetto SP Shibboleth invece di implementare una soluzione SSO SAML 2 con le librerie OpenSAML. Non riesco a parlare con le altre soluzioni SSO SAML 2 all-Java, ma sembrano tutte grandi e troppo complesse rispetto a un semplice Shibboleth 2 SP.

-3

Sì, è necessario installare SP nel server o nella macchina. E dipenderà dal tuo server web, come IIS o Apache.