2014-09-18 3 views
0

Im делает реализацию аутентификации SAML с использованием образца Spring SAML и базовую конфигурацию SAML в сервере идентичности WSO2Spring SAML WSO2

До сих пор я получаю эту ошибку после входа в систему, когда ответ WSO2 сервера на мой заявление.

И я понятия не имею, что посмотреть.

org.springframework.security.authentication.AuthenticationServiceException: Ошибка определения метаданных контракты на org.springframework.security.saml.SAMLProcessingFilter.attemptAuthentication (SAMLProcessingFilter.java:91) на org.springframework.security. web.authentication.AbstractAuthenticationProcessingFilter.doFilter (AbstractAuthenticationProcessingFilter.java:211) в org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter (FilterChainProxy.java:342) в org.springframework.security.web.FilterChainProxy.doFilterInternal (FilterChainProxy.java:192) at org.springframewo rk.security.web.FilterChainProxy.doFilter (FilterChainProxy.java:166) at org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter (FilterChainProxy.java:342) at org.springframework.security.web.context. request.async.WebAsyncManagerIntegrationFilter.doFilterInternal (WebAsyncManagerIntegrationFilter.java:50) на org.springframework.web.filter.OncePerRequestFilter.doFilter (OncePerRequestFilter.java:107) в org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter (FilterChainProxy.java:342) на org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter (SecurityContextPersistenceFilter.java:87) в org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter (FilterChainProxy.java:342) org.springframework.security.saml.metadata.MetadataGeneratorFilter.doFilter (MetadataGeneratorFilter.java:87) в org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter (FilterChainProxy.java:342) в org.springframework.security. web.FilterChainProxy.doFilterInternal (FilterChainProxy.java:192) на org.springframework.security.web.FilterChainProxy.doFilter (FilterChainProxy.java:160) на org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate (DelegatingFilterProxy.java: 344) в org.springframework.web.filter.DelegatingFilterProxy.doFilter (DelegatingFilterProxy.java:261) в org.eclipse.jetty.servlet.ServletHandler $ CachedChain.doFilter (ServletHandler.java:1636) в org.eclipse. jetty.servlet.ServletHandler.doHandle (ServletHandler.java:56 4) по адресу org.eclipse.jetty.server.handler.ScopedHandler.handle (ScopedHandler.java:143) at org.eclipse.jetty.security.SecurityHandler.handle (SecurityHandler.java:578) at org.eclipse. jetty.server.session.SessionHandler.doHandle (SessionHandler.java:221) at org.eclipse.jetty.server.handler.ContextHandler.doHandle (ContextHandler.java:1111) at org.eclipse.jetty.servlet.ServletHandler. doScope (ServletHandler.java:498) at org.eclipse.jetty.server.session.SessionHandler.doScope (SessionHandler.java:183) at org.eclipse.jetty.server.handler.ContextHandler.doScope (ContextHandler.java: 1045) на сайте org.eclipse.jetty.server.handler.ScopedHandler.handle (ScopedHandler.java:141) на org.eclipse.jetty.server.handler.Contex tHandlerCollection.handle (ContextHandlerCollection.java:199) at org.eclipse.jetty.server.handler.HandlerCollection.handle (HandlerCollection.java:109) at org.eclipse.jetty.server.handler.HandlerWrapper.handle (HandlerWrapper. java: 98) at org.eclipse.jetty.server.Server.handle (Server.java: 461) на org.eclipse.jetty.server.HttpChannel.handle (HttpChannel.java:284) на org.eclipse.jetty.server.HttpConnection.onFillable (HttpConnection.java:244) на org.eclipse. jetty.io.AbstractConnection $ 2.run (AbstractConnection.java:534) на org.eclipse.jetty.util.thread.QueuedThreadPool.runJob (QueuedThreadPool.java:607) на org.eclipse.jetty.util.thread.QueuedThreadPool $ 3.run (QueuedThreadPool.java:536) в java.lang.Thread.run (Thread.java:744) Вызванный: org.opensaml.saml2.metadata.provider.MetadataProviderException: Метаданные для эмитента что-то WASN 't найдено на org.springframework.security.saml.processor.SAMLProce ssorImpl.retrieveMessage (SAMLProcessorImpl.java:108) на org.springframework.security.saml.processor.SAMLProcessorImpl.retrieveMessage (SAMLProcessorImpl.java:172) на org.springframework.security.saml.SAMLProcessingFilter.attemptAuthentication (SAMLProcessingFilter.java: 77) ... 36

+0

я столкнулся точно такой же вопрос, как описано выше. Это 2 года, но я не хочу задавать один и тот же вопрос. Я использую WSO2 IS 5.2. Я исследовал исходный код и обнаружил, что ошибка возникает в классе SAMLProcessorImpl. В частности, здесь: if (samlContext.getPeerEntityMetadata() == null) { throw new MetadataProviderException («Метаданные для эмитента» + samlContext.getInboundMessageIssuer() + «не найден»); Вы нашли ответ? –

ответ

0

Я думаю, что образец весны SAML ищет метаданные IDP. Он может предположить, что WSO2 Identity Server поддерживает профиль метаданных SAML. Но, как я знаю, профиль this по-прежнему не поддерживается сервером идентификации. Однако может быть место, где вы можете вручную настроить метаданные IDP в образце. Поэтому, пожалуйста, проверьте это. Поскольку обычно не требуется поддерживать этот профиль всеми ВПЛ, должна быть некоторая возможность проигнорировать его и вручную сделать это.

Кроме того, вы можете найти IDP мета данные идентичности сервера, которые были созданы вручную из [этого] блога

+0

Да, я использую метаданные, которые я нашел в блоге. но я не жестко кодифицирую эмитент, упомянутый выше, я пытаюсь выяснить, игнорировать его или установить действительный. Спасибо. – Charlires

1

Я был в состоянии решить эту проблему, убедившись, что «Идентичность Provider Entity Id» соответствует «IdP идентификатор объекта метаданных ". Идентификатор узла идентификатора поставщика удостоверений находится в консоли управления WSO2 IS (версия 5.2.0) в разделе: Поставщики удостоверений/Резидентный идентификатор/SAML2 Web SSO Configuration.

«Идентификатор объекта метаданных IdP» является атрибутом тега EntityDescriptor (за spec). Я вручную создал метаданные WSP2 IdP. Вот мой IdP метаданные:

<EntityDescriptor entityID="localhost_wso2" validUntil="2023-09-23T06:57:15.396Z" xmlns="urn:oasis:names:tc:SAML:2.0:metadata" > 
<IDPSSODescriptor protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol"> 
<KeyDescriptor use="signing"> 
<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> 
    <ds:X509Data> 
    <ds:X509Certificate>...</ds:X509Certificate> 
    </ds:X509Data> 
</ds:KeyInfo> 
</KeyDescriptor> 
<SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://localhost:9443/samlsso" ResponseLocation="https://localhost:9443/samlsso"/> 
<SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://localhost:9443/samlsso"/> 
<SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://localhost:9443/samlsso"/> 
</IDPSSODescriptor> 
</EntityDescriptor> 

Я сослалась на выше IdP метаданные в моем Spring-SAML конфигурации, как так:

<bean id="metadata" class="org.springframework.security.saml.metadata.CachingMetadataManager"> 
<constructor-arg> 
    <list> 
    <!-- Example of classpath metadata with Extended Metadata --> 
    <bean class="org.springframework.security.saml.metadata.ExtendedMetadataDelegate"> 
     <constructor-arg> 
     <bean class="org.opensaml.saml2.metadata.provider.ResourceBackedMetadataProvider"> 
      <constructor-arg> 
      <bean class="java.util.Timer"/> 
      </constructor-arg> 
      <constructor-arg> 
      <bean class="org.opensaml.util.resource.ClasspathResource"> 
       <constructor-arg value="/metadata/wso2idp_metadata.xml"/> 
      </bean> 
      </constructor-arg> 
      <property name="parserPool" ref="parserPool"/> 
     </bean> 
     </constructor-arg> 
     <constructor-arg> 
     <bean class="org.springframework.security.saml.metadata.ExtendedMetadata"> 
     </bean> 
     </constructor-arg> 
    </bean> 
    </list> 
</constructor-arg> 
</bean> 
Смежные вопросы