Class SAMLMetadataEncryptionParametersResolver
- java.lang.Object
-
- org.opensaml.xmlsec.impl.AbstractSecurityParametersResolver<EncryptionParameters>
-
- org.opensaml.xmlsec.impl.BasicEncryptionParametersResolver
-
- org.opensaml.saml.security.impl.SAMLMetadataEncryptionParametersResolver
-
- All Implemented Interfaces:
Resolver<EncryptionParameters,CriteriaSet>,EncryptionParametersResolver
public class SAMLMetadataEncryptionParametersResolver extends BasicEncryptionParametersResolver
A specialization ofBasicEncryptionParametersResolverwhich resolves credentials and algorithm preferences against SAML metadata via aMetadataCredentialResolver.In addition to the
Criterioninputs documented inBasicEncryptionParametersResolver, the inputs and associated modes of operation documented forMetadataCredentialResolverare also supported and required.The
CriteriaSetinstance passed to the configured metadata credential resolver will be a copy of the input criteria set, with the addition of aUsageCriterioncontaining the valueUsageType.ENCRYPTION, which will replace any existing usage criterion instance.
-
-
Field Summary
Fields Modifier and Type Field Description private MetadataCredentialResolvercredentialResolverMetadata credential resolver.private org.slf4j.LoggerlogLogger.private booleanmergeMetadataRSAOAEPParametersWithConfigFlag indicating whether the resolver should attempt to merge RSAOAEPParameters values resolved from metadata with additional parameters from supplied instances ofEncryptionConfiguration.
-
Constructor Summary
Constructors Constructor Description SAMLMetadataEncryptionParametersResolver(MetadataCredentialResolver resolver)Constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected booleancredentialSupportsEncryptionMethod(Credential credential, EncryptionMethod encryptionMethod)Evaluate whether the specified credential is supported for use with the specifiedEncryptionMethod.protected booleanevaluateEncryptionMethodChildren(EncryptionMethod encryptionMethod, CriteriaSet criteria, Predicate<String> whitelistBlacklistPredicate)Evaluate the child elements of an EncryptionMethod for acceptability based on for example whitelist/blacklist policy and algorithm runtime support.protected booleanevaluateRSAOAEPChildren(EncryptionMethod encryptionMethod, CriteriaSet criteria, Predicate<String> whitelistBlacklistPredicate)Evaluate the child elements of an RSA OAEP EncryptionMethod for acceptability based on for example whitelist/blacklist policy and algorithm runtime support.protected MetadataCredentialResolvergetMetadataCredentialResolver()Get the metadata credential resolver instance to use to resolve encryption credentials.booleanisMergeMetadataRSAOAEPParametersWithConfig()Determine whether the resolver should attempt to merge RSAOAEPParameters values resolved from metadata with additional parameters from supplied instances ofEncryptionConfiguration.protected voidpopulateRSAOAEPParamsFromEncryptionMethod(RSAOAEPParameters params, EncryptionMethod encryptionMethod, Predicate<String> whitelistBlacklistPredicate)ExtractDigestMethod,MGFandOAEPparamsdata present on the supplied instance ofEncryptionMethodand populate it on the supplied instance of ofRSAOAEPParameters.protected voidresolveAndPopulateCredentialsAndAlgorithms(EncryptionParameters params, CriteriaSet criteria, Predicate<String> whitelistBlacklistPredicate)protected voidresolveAndPopulateRSAOAEPParams(EncryptionParameters params, CriteriaSet criteria, Predicate<String> whitelistBlacklistPredicate, EncryptionMethod encryptionMethod)Resolve and populate an instance ofRSAOAEPParameters, if appropriate for the selected key transport encryption algorithm.protected Pair<String,EncryptionMethod>resolveDataEncryptionAlgorithm(CriteriaSet criteria, Predicate<String> whitelistBlacklistPredicate, SAMLMDCredentialContext metadataCredContext)Determine the data encryption algorithm URI to use, also returning the associatedEncryptionMethodfrom metadata if relevant.protected Pair<String,EncryptionMethod>resolveKeyTransportAlgorithm(Credential keyTransportCredential, CriteriaSet criteria, Predicate<String> whitelistBlacklistPredicate, String dataEncryptionAlgorithm, SAMLMDCredentialContext metadataCredContext)Determine the key transport algorithm URI to use with the specified credential, also returning the associatedEncryptionMethodfrom metadata if relevant.voidsetMergeMetadataRSAOAEPParametersWithConfig(boolean flag)Set whether the resolver should attempt to merge RSAOAEPParameters values resolved from metadata with additional parameters from supplied instances ofEncryptionConfiguration.-
Methods inherited from class org.opensaml.xmlsec.impl.BasicEncryptionParametersResolver
credentialSupportsAlgorithm, generateDataEncryptionCredential, getAlgorithmRegistry, getAlgorithmRuntimeSupportedPredicate, getEffectiveDataEncryptionAlgorithms, getEffectiveDataEncryptionCredentials, getEffectiveKeyTransportAlgorithms, getEffectiveKeyTransportCredentials, getWhitelistBlacklistPredicate, isAutoGenerateDataEncryptionCredential, isDataEncryptionAlgorithm, isKeyTransportAlgorithm, logResult, populateRSAOAEPParams, processDataEncryptionCredentialAutoGeneration, resolve, resolveAndPopulateRSAOAEPParams, resolveDataEncryptionAlgorithm, resolveDataEncryptionAlgorithm, resolveDataKeyInfoGenerator, resolveKeyTransportAlgorithm, resolveKeyTransportAlgorithm, resolveKeyTransportAlgorithmPredicate, resolveKeyTransportKeyInfoGenerator, resolveSingle, setAlgorithmRegistry, setAutoGenerateDataEncryptionCredential, validate
-
Methods inherited from class org.opensaml.xmlsec.impl.AbstractSecurityParametersResolver
lookupKeyInfoGenerator, resolveAndPopulateWhiteAndBlacklists, resolveEffectiveBlacklist, resolveEffectiveWhitelist, resolveWhitelistBlacklistPrecedence, resolveWhitelistBlacklistPredicate
-
-
-
-
Field Detail
-
log
@Nonnull private org.slf4j.Logger log
Logger.
-
credentialResolver
@Nonnull private MetadataCredentialResolver credentialResolver
Metadata credential resolver.
-
mergeMetadataRSAOAEPParametersWithConfig
private boolean mergeMetadataRSAOAEPParametersWithConfig
Flag indicating whether the resolver should attempt to merge RSAOAEPParameters values resolved from metadata with additional parameters from supplied instances ofEncryptionConfiguration.
-
-
Constructor Detail
-
SAMLMetadataEncryptionParametersResolver
public SAMLMetadataEncryptionParametersResolver(@Nonnull @ParameterName(name="resolver") MetadataCredentialResolver resolver)
Constructor.- Parameters:
resolver- the metadata credential resolver instance to use to resolve encryption credentials
-
-
Method Detail
-
isMergeMetadataRSAOAEPParametersWithConfig
public boolean isMergeMetadataRSAOAEPParametersWithConfig()
Determine whether the resolver should attempt to merge RSAOAEPParameters values resolved from metadata with additional parameters from supplied instances ofEncryptionConfiguration.Defaults to:
false- Returns:
- true if should merge metadata parameters with configuration, false otherwise
-
setMergeMetadataRSAOAEPParametersWithConfig
public void setMergeMetadataRSAOAEPParametersWithConfig(boolean flag)
Set whether the resolver should attempt to merge RSAOAEPParameters values resolved from metadata with additional parameters from supplied instances ofEncryptionConfiguration.Defaults to:
false- Parameters:
flag- true if should merge metadata parameters with configuration, false otherwise
-
getMetadataCredentialResolver
@Nonnull protected MetadataCredentialResolver getMetadataCredentialResolver()
Get the metadata credential resolver instance to use to resolve encryption credentials.- Returns:
- the configured metadata credential resolver instance
-
resolveAndPopulateCredentialsAndAlgorithms
protected void resolveAndPopulateCredentialsAndAlgorithms(@Nonnull EncryptionParameters params, @Nonnull CriteriaSet criteria, @Nonnull Predicate<String> whitelistBlacklistPredicate)- Overrides:
resolveAndPopulateCredentialsAndAlgorithmsin classBasicEncryptionParametersResolver
-
resolveAndPopulateRSAOAEPParams
protected void resolveAndPopulateRSAOAEPParams(@Nonnull EncryptionParameters params, @Nonnull CriteriaSet criteria, @Nonnull Predicate<String> whitelistBlacklistPredicate, @Nullable EncryptionMethod encryptionMethod)Resolve and populate an instance ofRSAOAEPParameters, if appropriate for the selected key transport encryption algorithm.This method itself resolves the parameters data from the metadata
EncryptionMethod. If this results in a non-complete RSAOAEPParameters instance and ifisMergeMetadataRSAOAEPParametersWithConfig()evaluates true, then the resolver will delegate to the local config resolution process via the superclass to attempt to resolve and merge any null parameter values. (seeBasicEncryptionParametersResolver.resolveAndPopulateRSAOAEPParams(EncryptionParameters, CriteriaSet, Predicate)).- Parameters:
params- the current encryption parameters instance being resolvedcriteria- the criteria instance being evaluatedwhitelistBlacklistPredicate- the whitelist/blacklist predicate with which to evaluate the candidate data encryption and key transport algorithm URIsencryptionMethod- the method encryption method that was resolved along with the key transport encryption algorithm URI, if any. May be null.
-
populateRSAOAEPParamsFromEncryptionMethod
protected void populateRSAOAEPParamsFromEncryptionMethod(@Nonnull RSAOAEPParameters params, @Nonnull EncryptionMethod encryptionMethod, @Nonnull Predicate<String> whitelistBlacklistPredicate)ExtractDigestMethod,MGFandOAEPparamsdata present on the supplied instance ofEncryptionMethodand populate it on the supplied instance of ofRSAOAEPParameters.Whitelist/blacklist evaluation is applied to the digest method and MGF algorithm URIs.
- Parameters:
params- the existing RSAOAEPParameters instance being populatedencryptionMethod- the method encryption method that was resolved along with the key transport encryption algorithm URI, if any. May be null.whitelistBlacklistPredicate- the whitelist/blacklist predicate with which to evaluate the candidate data encryption and key transport algorithm URIs
-
resolveKeyTransportAlgorithm
@Nonnull protected Pair<String,EncryptionMethod> resolveKeyTransportAlgorithm(@Nonnull Credential keyTransportCredential, @Nonnull CriteriaSet criteria, @Nonnull Predicate<String> whitelistBlacklistPredicate, @Nullable String dataEncryptionAlgorithm, @Nullable SAMLMDCredentialContext metadataCredContext)
Determine the key transport algorithm URI to use with the specified credential, also returning the associatedEncryptionMethodfrom metadata if relevant.Any algorithms specified in metadata via the passed
SAMLMDCredentialContextare considered first, followed by locally configured algorithms.- Parameters:
keyTransportCredential- the key transport credential to evaluatecriteria- the criteria instance being evaluatedwhitelistBlacklistPredicate- the whitelist/blacklist predicate with which to evaluate the candidate data encryption and key transport algorithm URIsdataEncryptionAlgorithm- the optional data encryption algorithm URI to considermetadataCredContext- the credential context extracted from metadata- Returns:
- the selected algorithm URI and the associated encryption method from metadata, if any.
-
resolveDataEncryptionAlgorithm
@Nonnull protected Pair<String,EncryptionMethod> resolveDataEncryptionAlgorithm(@Nonnull CriteriaSet criteria, @Nonnull Predicate<String> whitelistBlacklistPredicate, @Nullable SAMLMDCredentialContext metadataCredContext)
Determine the data encryption algorithm URI to use, also returning the associatedEncryptionMethodfrom metadata if relevant.Any algorithms specified in metadata via the passed
SAMLMDCredentialContextare considered first, followed by locally configured algorithms.- Parameters:
criteria- the criteria instance being evaluatedwhitelistBlacklistPredicate- the whitelist/blacklist predicate with which to evaluate the candidate data encryption and key transport algorithm URIsmetadataCredContext- the credential context extracted from metadata- Returns:
- the selected algorithm URI and the associated encryption method from metadata, if any
-
evaluateEncryptionMethodChildren
protected boolean evaluateEncryptionMethodChildren(@Nonnull EncryptionMethod encryptionMethod, @Nonnull CriteriaSet criteria, @Nonnull Predicate<String> whitelistBlacklistPredicate)Evaluate the child elements of an EncryptionMethod for acceptability based on for example whitelist/blacklist policy and algorithm runtime support.- Parameters:
encryptionMethod- the EncryptionMethod being evaluatedcriteria- the criteria instance being evaluatedwhitelistBlacklistPredicate- the whitelist/blacklist predicate with which to evaluate the candidate data encryption and key transport algorithm URIs- Returns:
- true if the EncryptionMethod children are acceptable
-
evaluateRSAOAEPChildren
protected boolean evaluateRSAOAEPChildren(@Nonnull EncryptionMethod encryptionMethod, @Nonnull CriteriaSet criteria, @Nonnull Predicate<String> whitelistBlacklistPredicate)Evaluate the child elements of an RSA OAEP EncryptionMethod for acceptability based on for example whitelist/blacklist policy and algorithm runtime support.- Parameters:
encryptionMethod- the EncryptionMethod being evaluatedcriteria- the criteria instance being evaluatedwhitelistBlacklistPredicate- the whitelist/blacklist predicate with which to evaluate the candidate data encryption and key transport algorithm URIs- Returns:
- true if the EncryptionMethod children are acceptable
-
credentialSupportsEncryptionMethod
protected boolean credentialSupportsEncryptionMethod(@Nonnull Credential credential, @Nonnull @NotEmpty EncryptionMethod encryptionMethod)Evaluate whether the specified credential is supported for use with the specifiedEncryptionMethod.- Parameters:
credential- the credential to evaluateencryptionMethod- the encryption method to evaluate- Returns:
- true if credential may be used with the supplied encryption method, false otherwise
-
-