2014-10-24 14 views
5

Ich versuche, Spring-Security-Saml mit einer vorhandenen Anwendung zu integrieren, damit diese Anwendung als Dienstanbieter fungieren kann.Unerwartete Stack-Trace-Form von Spring-Security-SAML beim Generieren von SP-Metadaten?

Leider kann ich nicht scheinen, dass der Metadatenfilter funktioniert. Die Webapp startet ohne viel Aufhebens, aber wenn ich auf $ contextPath/saml/metadata stoße, erhalte ich die folgende Stapelverfolgung in meinen Protokollen.

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] 

Meine Metadaten Konfiguration ist unten enthalten:

<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> 

Wir sind zur Zeit:

  • Feder Version: 4.0.4.RELEASE
  • Feder Sicherheit Version: 3.2.3 .RELEASE
  • feder-sicherheits-saml2 version: 1.0.0.RELEASE

An diesem Punkt bin ich weitgehend mit einem Verlust, da wir nicht ein Multi-tennancy Setup versuchen zu tun, was der einzige Ort ist, die alias ausführlich erwähnt wird, und von dem, was ich kann Sehen Sie, der metadataGenerator definiert einen Service Provider?

Antwort

7

Die metadataGeneratorFilter Bedürfnisse vor Aufruf des MetadataDisplayFilter ausgeführt werden, stellen Sie sicher, dass die folgende Erklärung in Ihrem <security:http> Element enthalten:

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

Auch scheint Ihr Wert für entityId vorschlagen, dass Sie verwenden denselben entityId für Ihre IDP (Shibboleth) und SP (Spring SAML-Anwendung). Stellen Sie sicher, dass der Wert einmalig für beide Entitäten ist.

+1

Hallo Vladimir, verstehen Sie zufällig, warum die äquivalente JavaConfig zu Ihrem obigen XML die Metadaten nicht generieren würde? 'http.addFilterBefore (metadataGeneratorFilter(), ChannelProcessingFilter.class) .addFilterAfter (samlFilter(), BasicAuthenticationFilter.class);' Vielen Dank, Mit freundlichen Grüßen – nuvio

+0

SAMLContextProviderImpl: 244 wird ein Null-EntityID erhalten, wie in dieser Frage beschrieben. – nuvio