2015-06-26 27 views
5

ModificaCome si configura un provider di identità Shibboleth 3?

Quindi, penso di esserci quasi. L'unica cosa ancora mancante è che Shibboleth IdP restituisce un NameId temporaneo crittografato e ho bisogno che restituisca il nome utente, non crittografato. Se qualcuno riesce a farmi superare questo ultimo blocco, segnerò la risposta.

(fine edit)

Ho cercato di creare uno Shibboleth IdP 3 (la nostra applicazione supporta SAML, e abbiamo bisogno di un ambiente di test).

Il mio obiettivo è un ambiente semplice che interroga la nostra directory LDAP per fornire l'autenticazione.

Ho impostato Shibboleth IdP 3 e sembra che esegua correttamente la query in AD, ma sto avendo davvero difficoltà a trovarlo per restituire gli attributi (uid, Nome, Cognome, indirizzo email) che sto richiedendo.

Sono quasi sicuro che il mio problema è nei miei file attribute-resolver.xml e attribute-filter.xml, ma non sto avendo fortuna a farlo funzionare.

Fondamentalmente quello che succede è che ho effettuato l'accesso con successo (per quanto riguarda Shibboleth), ma quando restituisce l'asserzione alla mia applicazione, nessuno degli attributi è lì.

Ho provato ad aggiungerli a Attribute-resolver.xml e attribute-filter.xml, ma poi ottengo errori in idp-warn.log (sotto). È un errore credenziale. Sono abbastanza sicuro che la password del nome utente sia corretta, perché shibboleth è in grado di autenticarmi (fallirebbe se fosse sbagliato, vero?) Quindi ci deve essere qualcos'altro che non va con il mio setup.

Ho anche provato a restituire il nome utente nell'identificativo del nome asserzione, ma tutto quello che sembra tornare è una stringa codificata in base 64 (la decodifica produce byte che non decodificano di nuovo in una stringa, quindi sono non sono sicuro di cosa ci sia dentro).

A questo punto, quello che potrei davvero usare come riferimento per un buon how-to per impostare Shibboleth IdP 3 con LDAP. Ho esaminato i loro documenti online e, anche se ci sono molti dati grezzi, è molto difficile ricavare un elenco di tutto ciò che deve essere fatto per farlo funzionare. Eventuali suggerimenti?

risposta

0

non è una risposta completa e non ho lavorato con shibboleth, ma abbiamo incontrato lo stesso problema con NameID durante l'impostazione di SAML.

credo questa pagina mostra caldo per impostare il cui nome id Shibboleth invierà: https://wiki.shibboleth.net/confluence/display/SHIB2/ResolverSAML2NameIDAttributeDefinition

e questa risposta descrive ciò che diversi schemi di nomi significano https://stackoverflow.com/a/21682789/143585

Quello che abbiamo fatto, però, è in config SAML per SAMLAuthenticationProvider abbiamo aggiunto UserDetails e c'era un bel pezzo di codice che sono molto orgoglioso di:

@Override 
public Object loadUserBySAML(SAMLCredential credential) throws UsernameNotFoundException { 
    try { 
     String login = credential.getAttributeByName("login").getAttributeValues().get(0).getDOM().getFirstChild().getNodeValue(); 
     return loadUserByUsername(login); 
    } catch (Exception e) { 
     LOG.error("could not get login name from saml credential", e); 
     throw new UsernameNotFoundException("Could not load user", e); 
    } 
} 

roba IDP è stata gestita da un 3rd party quindi immagino che erano loro che Adde d questo attributo personalizzato alla risposta saml. Immagino che tu possa configurare shibboleth per fare lo stesso.

+0

Ciao Denis: Grazie per la risposta. Il wiki di Shibboleth a cui ti sei collegato era per la v2. Sfortunatamente, hanno aggiornato il sistema di configurazione nella versione 3.È molto complicato ora e il modo v2 di specificare in Attribute-Resolver è considerato legacy. Alla fine sono riuscito a cavarmela e farlo funzionare, con l'aiuto di alcune persone sui forum degli utenti di Shibboleth. – JMarsch

+1

@ JMarsch, sì, l'implementazione dell'accesso a saml nella nostra app è stata straziante. Non ho idea del perché tutto debba essere così complicato. –

+0

Parlamene: è stato terribile. – JMarsch