Nie jestem pewien, czy udało Ci się uaktualnić do opensaml 3, ale ponieważ natknąłem się na to podczas próby aktualizacji sam, pomyślałem, że zamierzam udokumentować to, co znalazłem.
Jest bardzo mało dokumentacji jak najwyraźniej to nie jest dla nich priorytetem w tej chwili (wspomniane również tutaj: OpenSaml3 Documentation), najbardziej przydatny (nawet jeśli zdecydowanie nie zakończyć) Strona znalazłem jest to jedno: https://wiki.shibboleth.net/confluence/display/OS30/Initialization+and+Configuration
1) sposób klasy SerializeSupport
ze sposobem prettyPrintXML
lib net.shibboleth.utilities:java-support
2) Inicjowanie odbywa się teraz przez InitializationService
np
InitializationService.initialize();
Można pobierać Konstruktor/marshallers poprzez XMLObjectProviderRegistrySupport
np .:
XMLObjectProviderRegistrySupport.getMarshallerFactory()
XMLObjectProviderRegistrySupport.getBuilderFactory()
XMLObjectProviderRegistrySupport.getUnmarshallerFactory()
pamiętać, że opensaml używa Provider API Java serwisowym. W moim przypadku (przy użyciu OSGi wiązki org.apache.servicemix.bundles:org.apache.servicemix.bundles.opensaml
) do analizowania twierdzenia SAML dodałem config SPI META-INF/services/org.opensaml.core.config.Initializer
zawierający następujące dane:
org.opensaml.core.xml.config.XMLObjectProviderInitializer
org.opensaml.core.xml.config.GlobalParserPoolInitializer
org.opensaml.saml.config.XMLObjectProviderInitializer
org.opensaml.saml.config.SAMLConfigurationInitializer
org.opensaml.xmlsec.config.XMLObjectProviderInitializer
EDIT: Powyższy pracował w teście, ale nie działają w kontenerze OSGi . Obejście dla OSGi: OpenSAML3 resource not found 'default-config.xml' in OSGi container
Jeśli użyć standardowych bibliotek (org.opensaml:opensaml-core
, org.opensaml:opensaml-saml-api
, org.opensaml:opensaml-saml-impl
, ...) może nie trzeba dodawać żadnych config SPI jak słoiki zawierają już configs SPI o standardowej konfiguracji dla inicjalizacji.
3) Istnieje klasa BasicCredential
w bibliotece org.opensaml:opensaml-security-api
. Nie widzę alternatywy dla dostarczania klucza podczas inicjalizacji.
Więc co może być powodem kiedy wciąż zerowy zamiast (ONZ), naziemnego z fabryki? 'XMLObjectProviderRegistrySupport.getMarshallerFactory(). GetMarshaller (authnRequest.getElementQName())' – Gobliins
Czy masz 'InitializationService.initialize();'? –
Jest kilka przydatnych przykładowy kod na https://git.shibboleth.net/view/?p=java-opensaml.git;a=blob;f=opensaml-saml-impl/src/test/java/org/opensaml/ saml/saml2/metadata/MetadataTest.java; hb = HEAD. Zauważ, że część inicjalizacji znajduje się w superklasie w 'org.opensaml.core.xml.XMLObjectBaseTestCase # initXMLObjectSupport', która z kolei dziedziczy po' OpenSAMLInitBaseTestCase' (nie robi niczego poza 'InitializationService.initialize()'). –