OpenSAML, DefaultBootstrap DefaultSecurityConfigurationBootstrap, SAML.
DefaultSamlBootstrap CustomSamlBootstrap.
:
import org.opensaml.Configuration;
import org.opensaml.DefaultBootstrap;
import org.opensaml.xml.ConfigurationException;
public class CustomSamlBootstrap extends DefaultBootstrap {
public static synchronized void bootstrap() throws ConfigurationException {
initializeXMLSecurity();
initializeXMLTooling();
initializeArtifactBuilderFactories();
initializeGlobalSecurityConfiguration();
initializeParserPool();
initializeESAPI();
initializeHttpClient();
}
protected static void initializeGlobalSecurityConfiguration() {
Configuration.setGlobalSecurityConfiguration(YourCustomSecurityConfigurationBootstrap.buildDefaultConfig());
}
}
import org.opensaml.xml.security.BasicSecurityConfiguration;
import org.opensaml.xml.security.DefaultSecurityConfigurationBootstrap;
import org.opensaml.xml.signature.SignatureConstants;
public class YourCustomSecurityConfigurationBootstrap extends DefaultSecurityConfigurationBootstrap {
public static BasicSecurityConfiguration buildDefaultConfig() {
BasicSecurityConfiguration config = new BasicSecurityConfiguration();
populateSignatureParams(config);
populateEncryptionParams(config);
populateKeyInfoCredentialResolverParams(config);
populateKeyInfoGeneratorManager(config);
populateKeyParams(config);
return config;
}
protected static void populateSignatureParams(BasicSecurityConfiguration config) {
config.registerSignatureAlgorithmURI("RSA", SignatureConstants.ALGO_ID_SIGNATURE_RSA_SHA256);
config.registerSignatureAlgorithmURI("DSA", SignatureConstants.ALGO_ID_SIGNATURE_DSA);
config.registerSignatureAlgorithmURI("EC", SignatureConstants.ALGO_ID_SIGNATURE_ECDSA_SHA1);
config.registerSignatureAlgorithmURI("AES", SignatureConstants.ALGO_ID_MAC_HMAC_SHA1);
config.registerSignatureAlgorithmURI("DESede", SignatureConstants.ALGO_ID_MAC_HMAC_SHA1);
config.setSignatureCanonicalizationAlgorithm(SignatureConstants.ALGO_ID_C14N_EXCL_OMIT_COMMENTS);
config.setSignatureHMACOutputLength(null);
config.setSignatureReferenceDigestMethod(SignatureConstants.ALGO_ID_DIGEST_SHA1);
}
}
: , .
To do this, you can extend the appropriate subclass of BaseSAML2MessageEncoder to override the signMessage function. Then pass YourCustomSecurityConfigurationBootstrap as needed to SecurityHelper.prepareSignatureParams (signature signature, Credential signatureCredential, SecurityConfiguration config, String keyInfoGenName).
source
share