2014-10-24 13 views
5

Sto tentando di integrare spring-security-saml con un'applicazione esistente per consentire a tale applicazione di fungere da provider di servizi.Inaspettato stack trace forma Spring-Security-SAML durante la generazione di metadati SP?

Sfortunatamente, non riesco a far funzionare il filtro dei metadati. La webapp si avvia senza problemi, ma quando premo $ contextPath/saml/metadata, ricevo la seguente traccia di stack nei miei log.

2014-10-24 13:52:38,779 54025 [[email protected]] WARN org.mortbay.log - /sf/saml/metadata/ 
org.opensaml.saml2.metadata.provider.MetadataProviderException: No hosted service provider is configured and no alias was selected 
     at org.springframework.security.saml.context.SAMLContextProviderImpl.populateLocalEntity(SAMLContextProviderImpl.java:311) ~[spring-security-saml2-core 
-1.0.0.RELEASE.jar:1.0.0.RELEASE] 
     at org.springframework.security.saml.context.SAMLContextProviderImpl.populateLocalContext(SAMLContextProviderImpl.java:216) ~[spring-security-saml2-cor 
e-1.0.0.RELEASE.jar:1.0.0.RELEASE] 
     at org.springframework.security.saml.context.SAMLContextProviderImpl.getLocalEntity(SAMLContextProviderImpl.java:107) ~[spring-security-saml2-core-1.0. 
0.RELEASE.jar:1.0.0.RELEASE] 
     at org.springframework.security.saml.metadata.MetadataDisplayFilter.processMetadataDisplay(MetadataDisplayFilter.java:114) ~[spring-security-saml2-core-1.0.0.RELEASE.jar:1.0.0.RELEASE] 
     at org.springframework.security.saml.metadata.MetadataDisplayFilter.doFilter(MetadataDisplayFilter.java:88) ~[spring-security-saml2-core-1.0.0.RELEASE.jar:1.0.0.RELEASE] 
     at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) ~[spring-security-web-3.2.3.RELEASE.jar:3.2.3.RELEASE] 
     at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192) ~[spring-security-web-3.2.3.RELEASE.jar:3.2.3.RELEASE] 
     at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:166) ~[spring-security-web-3.2.3.RELEASE.jar:3.2.3.RELEASE] 

La mia configurazione dei metadati è riportato qui di seguito:

<bean id="metadataGeneratorFilter" class="org.springframework.security.saml.metadata.MetadataGeneratorFilter"> 
    <constructor-arg ref="metadataGenerator"/> 
    </bean> 

    <bean id="metadataGenerator" class="org.springframework.security.saml.metadata.MetadataGenerator"> 
    <!--<property name="entityBaseURL" value="${env.shibboleth.entityBaseUrl"/>--> 
    <property name="bindingsSSO"> 
     <list> 
      <value>redirect</value> 
      <value>artifact</value> 
     </list> 
    </property> 
    <property name="entityId" value="${env.shibboleth.entityId}"/> 
    <prop 
    </bean> 

Attualmente stiamo utilizzando: versione

  • primavera: 4.0.4.RELEASE
  • versione di sicurezza a molla: 3.2.3 .RELEASE
  • spring-security-saml2 versione: 1.0.0.RELEASE

A questo punto, sono in gran parte in perdita, come noi non stiamo cercando di fare una configurazione multi-tennancy, che è l'unico luogo che alias è menzionato a lungo, e da quello che posso vedi, metadataGenerator definisce un fornitore di servizi?

risposta

7

Le metadataGeneratorFilter deve essere eseguito prima di invocazione del MetadataDisplayFilter, assicurarsi di includere la seguente dichiarazione nel vostro <security:http> elemento:

<security:custom-filter before="FIRST" ref="metadataGeneratorFilter"/> 

Inoltre, il rapporto qualità-entityId sembra suggerire che si sta utilizzando lo stesso entityId sia per il tuo IDP (Shibboleth) che per SP (Spring SAML application). Assicurati che il valore sia unico per entrambe le entità.

+1

Ciao Vladimir, capisci perché l'equivalente JavaConfig al tuo xml sopra non genererebbe i metadati? 'http.addFilterBefore (metadataGeneratorFilter(), ChannelProcessingFilter.class) .addFilterAfter (samlFilter(), BasicAuthenticationFilter.class);' Grazie, migliori riguardi – nuvio

+0

SAMLContextProviderImpl: 244 riceverà un null EntityID come descritto in questa domanda. – nuvio

Problemi correlati