Ich bin mir nicht sicher, ob Sie bereits auf opensaml 3 upgraden konnten, aber da ich während des Upgrades auf dieses Upgrade gestoßen bin, dachte ich, ich werde dokumentieren, was ich gefunden habe.
Es gibt sehr wenig Dokumentation als offensichtlich ist es nicht eine Priorität für sie im Moment (auch hier erwähnt: OpenSaml3 Documentation), die am nützlichsten (auch wenn bei weitem nicht vollständig) Seite I ist dies eine gefunden: https://wiki.shibboleth.net/confluence/display/OS30/Initialization+and+Configuration
1) Es gibt eine Klasse SerializeSupport
mit einem Verfahren prettyPrintXML
in lib net.shibboleth.utilities:java-support
2) Initialisierung jetzt über InitializationService
zB erfolgt
InitializationService.initialize();
Sie können die Erbauer/Einweiser über XMLObjectProviderRegistrySupport
z abrufen .:
XMLObjectProviderRegistrySupport.getMarshallerFactory()
XMLObjectProviderRegistrySupport.getBuilderFactory()
XMLObjectProviderRegistrySupport.getUnmarshallerFactory()
Geist, der die Java Service Provider API verwendet OpenSAML. In meinem Fall (mit OSGi-Bundle org.apache.servicemix.bundles:org.apache.servicemix.bundles.opensaml
) für eine SAML-Assertion Parsen fügte ich die SPI Config META-INF/services/org.opensaml.core.config.Initializer
folgende Einträge:
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: Die oben in einem Test gearbeitet, aber in den OSGi-Containern nicht ausgeführt werden . Abhilfe für OSGi: OpenSAML3 resource not found 'default-config.xml' in OSGi container
Wenn Sie die Standard-Bibliotheken verwenden (org.opensaml:opensaml-core
, org.opensaml:opensaml-saml-api
, org.opensaml:opensaml-saml-impl
, ...) Sie dürfen keine SPI Config hinzufügen müssen, wie die Gläser bereits SPI configs mit einer Standardkonfiguration für die Initialisierung enthalten.
3) Es gibt eine Klasse BasicCredential
in lib org.opensaml:opensaml-security-api
. Ich sehe keine Alternative zur Bereitstellung eines Schlüssels während der Initialisierung.
Also, was könnte der Grund sein, wenn ich null immer noch statt dem (un) Einweiser aus der Fabrik? 'XMLObjectProviderRegistrySupport.getMarshallerFactory(). GetMarshaller (authnRequest.getElementQName())' – Gobliins
Haben Sie 'InitializationService.initialize();'? –
Unter https://git.shibboleth.net/view/?p=java-opensaml.git;a=blob;f=opensaml-saml-impl/src/test/java/org/opensaml/ gibt es einige hilfreiche Beispielcodes. saml/saml2/Metadaten/MetadataTest.java; hb = HEAD. Beachten Sie, dass ein Teil der Initialisierung in der Oberklasse bei 'org.opensaml.core.xml.XMLObjectBaseTestCase # initXMLObjectSupport' liegt, die wiederum von 'OpenSAMLInitBaseTestCase' (führt nur 'InitializationService.initialize()') aus. –