OpenSAML 3 unmarshaller является нулевым
Привет я в настоящее время портирую приложение на opensaml3 и столкнулся со следующей проблемой:
InitializationService.initialize();
...
Unmarshaller unmarshaller = Configuration.getUnmarshallerFactory().getUnmarshaller(qName);
Я заменил DefaultBootstrap из opensaml2 и предыдущий функцией инициализации. Тем не менее, фабрика возвращает меня в ноль как маршаллер. Есть идеи, что здесь происходит?
Это результат выполнения инициализации:
[main] INFO org.opensaml.core.config.InitializationService - Initializing OpenSAML using the Java Services API
[main] INFO org.opensaml.xmlsec.algorithm.AlgorithmRegistry - Algorithm failed runtime support check, will not be usable: http://www.w3.org/2001/04/xmlenc#ripemd160
[main] INFO org.opensaml.xmlsec.algorithm.AlgorithmRegistry - Algorithm failed runtime support check, will not be usable: http://www.w3.org/2001/04/xmldsig-more#hmac-ripemd160
[main] INFO org.opensaml.xmlsec.algorithm.AlgorithmRegistry - Algorithm failed runtime support check, will not be usable: http://www.w3.org/2001/04/xmldsig-more#rsa-ripemd160
2 ответа
Я полагаю, что вы используете opensaml v3, поэтому вы должны создать объект UnmarshallerFactory с классом XMLObjectProviderRegistrySupport, как это работает отлично
UnmarshallerFactory umFactory=XMLObjectProviderRegistrySupport.getUnmarshallerFactory();
Unmarshaller unmarshaller=umFactory.getUnmarshaller(element);
Эта ошибка связана с отсутствием поддержки алгоритма в используемой вами реализации JCE. Даже если вы используете BouncyCastle, некоторые алгоритмы, похоже, не поддерживаются. Если вы не используете эти алгоритмы, вам не о чем беспокоиться. Установка банок с неограниченной силой юрисдикции JCE в jre решит эту проблему.
См. Расшифровка зашифрованного утверждения с использованием SAML 2.0 в Java, а также с использованием OpenSAML.