2014-10-24 10 views
5

Próbuję zintegrować spring-security-saml z istniejącą aplikacją, aby ta aplikacja działała jako dostawca usług.Nieoczekiwany formularz śledzenia stosu Spring-Security-SAML podczas generowania metadanych SP?

Niestety, nie mogę sprawić, że filtr metadanych zadziała. Webapp uruchamia się bez żadnego zamieszania, ale kiedy trafię $ contextPath/saml/metadata, otrzymuję następujący ślad stosu w moich dziennikach.

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] 

Moja konfiguracja metadane są zawarte poniżej:

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

Obecnie używamy: Wersja

  • wiosny: 4.0.4.RELEASE
  • wersji zabezpieczeń wiosny: 3.2.3 .RELEASE
  • spring-security-saml2 version: 1.0.0.RELEASE

W tym momencie jestem w dużej mierze ze stratą, ponieważ nie próbujesz zrobić konfiguracji multi-tennancy, który jest jedynym miejscem, które alias jest wymieniona na długości, a od czego mogę zobacz, metadataGenerator definiuje usługodawcę?

Odpowiedz

7

The metadataGeneratorFilter musi zostać zrealizowany przed wezwaniem MetadataDisplayFilter, upewnij się, że obejmują następujące oświadczenie w <security:http> element:

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

także swoją wartość dla entityId zdaje się sugerować, że używasz samo entityId zarówno dla twojego IDP (Shibboleth) i SP (Spring SAML application). Upewnij się, że dla każdej z tych wartości jest unikalna.

+1

Witaj Vladimir, czy zdajesz sobie sprawę, dlaczego odpowiednik JavaConfig do powyższego xml nie wygenerowałby metadanych? 'http.addFilterBefore (metadataGeneratorFilter(), ChannelProcessingFilter.class) .addFilterAfter (samlFilter(), BasicAuthenticationFilter.class);' Wielkie dzięki, pozdrawiam – nuvio

+0

SAMLContextProviderImpl: 244 otrzyma null identyfikator podmiotu, jak opisano w tej kwestii. – nuvio

Powiązane problemy