2013-09-19 4 views
2

У меня есть задача реализовать доступность служб федерации Active Directory (SSL) с LDAP позади. Сначала я должен сказать, что мой опыт в ADFS и SAML очень мал. Я решил принять расширение SAML для безопасности Spring, чтобы реализовать эту функцию. загрузить и установить расширение SAML для проекта Spring Security от GitHub: https://github.com/spring-projects/spring-security-samlSpring SAML ADFS: java.security.InvalidKeyException

я нашел в официальной документации http://docs.spring.io/spring-security-saml/docs/1.0.x/reference/html/ в пункте «6. Руководство по интеграции IDP» в инструкции, которые я все сделали.

  • загрузить метаданные из ADFS-сервера
  • Я хранятся загруженные метаданные под saml2-образца/WEB-INF/SRC/главная/ресурсы/безопасность/FederationMetadata.xml и повышения securityContext.xml, как это описывается
  • После запуска веб-приложения системы генерировать автоматически документ метаданных
  • я создаю metadata.xml и отдал его в системный администратор ADFS-сервера
  • системный администратор сделать остальные пункты сделанный.

После этого я хотел протестировать Вход. После того, как я выберу IDP и нажмите кнопку «Вход в систему», меня попросили ввести учетные данные. После передачи полномочий я получаю следующий результат/исключение:

- Evaluating security policy of type 'org.opensaml.ws.security.provider.BasicSecurityPolicy' for decoded message 
- SAML protocol message was not signed, skipping XML signature processing 
- Successfully decoded message. 
- Checking SAML message intended destination endpoint against receiver endpoint 
- Intended message destination endpoint: ........ 
- Actual message receiver endpoint: ........ 
- SAML message intended destination endpoint matched recipient endpoint 
- Verifying issuer of the message 
- Decrypting assertion 
- Getting key iterator from next resolver: class org.opensaml.xml.encryption.InlineEncryptedKeyResolver 
- Found matching encrypted key: [email protected] 
- Added decryption key algorithm criteria: RSA 
- Error decrypting the encrypted data element 
org.apache.xml.security.encryption.XMLEncryptionException: Illegal key size 
Original Exception was java.security.InvalidKeyException: Illegal key size 
    at org.apache.xml.security.encryption.XMLCipher.decryptToByteArray(Unknown Source) 
    at org.opensaml.xml.encryption.Decrypter.decryptDataToDOM(Decrypter.java:574) 
    at org.opensaml.xml.encryption.Decrypter.decryptUsingResolvedEncryptedKey(Decrypter.java:763) 
    at org.opensaml.xml.encryption.Decrypter.decryptDataToDOM(Decrypter.java:513) 
    at org.opensaml.xml.encryption.Decrypter.decryptDataToList(Decrypter.java:440) 
    at org.opensaml.xml.encryption.Decrypter.decryptData(Decrypter.java:401) 
    at org.opensaml.saml2.encryption.Decrypter.decryptData(Decrypter.java:141) 
    at org.opensaml.saml2.encryption.Decrypter.decrypt(Decrypter.java:69) 
    at org.springframework.security.saml.websso.WebSSOProfileConsumerImpl.processAuthenticationResponse(WebSSOProfileConsumerImpl.java:190) 
    at org.springframework.security.saml.SAMLAuthenticationProvider.authenticate(SAMLAuthenticationProvider.java:81) 
    at org.springframework.security.authentication.ProviderManager.authenticate(ProviderManager.java:156) 
    at org.springframework.security.saml.SAMLProcessingFilter.attemptAuthentication(SAMLProcessingFilter.java:84) 
    at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:195) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
    at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192) 
    at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:166) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
    at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
    at org.springframework.security.saml.metadata.MetadataGeneratorFilter.doFilter(MetadataGeneratorFilter.java:86) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
    at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192) 
    at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:160) 
    at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346) 
    at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) 
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) 
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    at java.lang.Thread.run(Thread.java:724) 

Может кто-нибудь помочь мне с этой проблемой?

С наилучшими пожеланиями Томасом

ответ

2

Это, вероятно, обусловлено изначально ограниченными возможностями шифрования Java. Документация расширения Spring Securtiy SAML, может дать один хит с этим вопросом:

Из-за экспорт США ограничений Java JDK поставляется с ограниченным набором возможностей криптографии. Использование расширения SAML может потребовать установки файлов политики политики неограниченной прочности, которые устраняет эти ограничения.

Вы можете подобрать Java Cryptography Extension (JCE) Безлимитный политики Сила Юрисдикция файлов 7 из http://www.oracle.com/technetwork/java/javase/downloads/index.html - это должно решить проблему.

1

Это, вероятно, потому что ключ вы сгенерировали был слишком мал - попробуйте параметр

-keysize 2048

в команде Keytool.

Смежные вопросы