2014-11-26 20 views
5

Sto integrando l'estensione spring-security-saml per supportare SSO nella mia applicazione web, la mia applicazione dovrebbe consentire a diversi clienti di aggiungere i loro metadati IDP e il loro certificato alla mia webapp (che è un SP) in modo che la mia webapp possa avviare SSO contro il loro idp.Come aggiungere nuovi metadati idp in primavera-SAML al runtime

In questo momento sto definendo un bean "metadata" nella mia java config in cui aggiungo i metadati idp a CachingMetadataManager. Ma questo accade solo una volta, non sono in grado di capire come aggiungere un nuovo metadata idp a MetadataManager in fase di runtime (senza riavviare la mia app). Posso ottenere il bean di metadati da Spring ApplicationContext e aggiungervi un nuovo provider? Funzionerà?

Qual è la prassi generale per supportare il caso di utilizzo di cui sopra (aggiungendo nuovi idp in fase di runtime) con spring-SAML? ci sono altre librerie java che supportano questo.

Grazie in anticipo

+1

Lo hai implementato correttamente, se sì, come? – articuno

+0

Potresti condividere una soluzione per altre persone come te che inciampano in questo problema? – theLearner

risposta

6

Il CachingMetadataManager è sincronizzato ed è possibile aggiungere/rimuovere MetadataProviders durante il runtime da ottenere il fagiolo dal contesto di applicazione e chiamando addMetadataProvider/removeMetadataProvider.

+2

Ma se lo faccio, il cliente1 non può vedere gli IDP configurati da customer2? – articuno

+0

@articuno Hai qualche fortuna con la tua implementazione relativa a customer1 e customer2? come lo separerai? – sunder