Class MetadataPKIXValidationInformationResolver
- java.lang.Object
-
- net.shibboleth.utilities.java.support.component.AbstractInitializableComponent
-
- net.shibboleth.idp.saml.security.impl.MetadataPKIXValidationInformationResolver
-
- All Implemented Interfaces:
Component,DestructableComponent,InitializableComponent,Resolver<PKIXValidationInformation,CriteriaSet>,PKIXValidationInformationResolver
public class MetadataPKIXValidationInformationResolver extends AbstractInitializableComponent implements PKIXValidationInformationResolver
An implementation ofPKIXValidationInformationResolverwhich resolvesPKIXValidationInformationbased on information stored in SAML 2 metadata. Validation information is retrieved from Shibboleth-specific metadata extensions toEntityDescriptorrepresented by instances ofKeyAuthority, as well as instances ofPKIXValidationInformationwhich have been previously populated within the data set available fromXMLObject.getObjectMetadata(). Resolution of trusted names for an entity is also supported, based onKeyNameinformation contained within theKeyInfoof a role descriptor'sKeyDescriptorelement.
-
-
Field Summary
Fields Modifier and Type Field Description static intKEY_AUTHORITY_VERIFY_DEPTH_DEFAULTDefault value for Shibboleth KeyAuthority verify depth.private org.slf4j.LoggerlogClass logger.private RoleDescriptorResolverroleDescriptorResolverMetadata RoleDescriptor resolver used to resolve metadata information.
-
Constructor Summary
Constructors Constructor Description MetadataPKIXValidationInformationResolver(RoleDescriptorResolver resolver)Constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidcheckCriteriaRequirements(CriteriaSet criteriaSet)Check that all necessary criteria are available.protected voidextractPKIXInfo(Collection<PKIXValidationInformation> accumulator, KeyAuthority keyAuthority)Retrieves validation information from the Shibboleth KeyAuthority resolver extension element.RoleDescriptorResolvergetRoleDescriptorResolver()Get the metadata RoleDescriptor resolver instance used by this resolver.protected Iterable<RoleDescriptor>getRoleDescriptors(CriteriaSet criteriaSet, String entityID, QName role, String protocol)Get the list of resolver role descriptors which match the given entityID, role and protocol.protected voidgetTrustedNames(Set<String> accumulator, KeyInfo keyInfo)Extract trusted names from a KeyInfo element.protected booleanmatchUsage(UsageType metadataUsage, UsageType criteriaUsage)Match usage enum type values from resolver KeyDescriptor and from specified resolution criteria.Iterable<PKIXValidationInformation>resolve(CriteriaSet criteriaSet)protected voidresolvePKIXInfo(Collection<PKIXValidationInformation> accumulator, Extensions extensions)Retrieves validation information from the resolver extension element.protected voidresolvePKIXInfo(Collection<PKIXValidationInformation> accumulator, RoleDescriptor roleDescriptor)Retrieves validation information from the provided role descriptor.PKIXValidationInformationresolveSingle(CriteriaSet criteriaSet)Set<String>resolveTrustedNames(CriteriaSet criteriaSet)protected Collection<PKIXValidationInformation>retrievePKIXInfoFromMetadata(CriteriaSet criteriaSet, String entityID, QName role, String protocol)Retrieves validation information from the provided resolver.protected Set<String>retrieveTrustedNamesFromMetadata(CriteriaSet criteriaSet, String entityID, QName role, String protocol, UsageType usage)Retrieves trusted name information from the provided resolver.booleansupportsTrustedNameResolution()-
Methods inherited from class net.shibboleth.utilities.java.support.component.AbstractInitializableComponent
destroy, doDestroy, doInitialize, initialize, isDestroyed, isInitialized
-
-
-
-
Field Detail
-
KEY_AUTHORITY_VERIFY_DEPTH_DEFAULT
public static final int KEY_AUTHORITY_VERIFY_DEPTH_DEFAULT
Default value for Shibboleth KeyAuthority verify depth.- See Also:
- Constant Field Values
-
log
@Nonnull private final org.slf4j.Logger log
Class logger.
-
roleDescriptorResolver
@Nonnull private RoleDescriptorResolver roleDescriptorResolver
Metadata RoleDescriptor resolver used to resolve metadata information.
-
-
Constructor Detail
-
MetadataPKIXValidationInformationResolver
public MetadataPKIXValidationInformationResolver(@Nonnull @ParameterName(name="resolver") RoleDescriptorResolver resolver)
Constructor.- Parameters:
resolver- role descriptor resolver
-
-
Method Detail
-
getRoleDescriptorResolver
@Nonnull public RoleDescriptorResolver getRoleDescriptorResolver()
Get the metadata RoleDescriptor resolver instance used by this resolver.- Returns:
- the resolver's RoleDescriptor metadata resolver instance
-
resolveSingle
public PKIXValidationInformation resolveSingle(CriteriaSet criteriaSet) throws ResolverException
- Specified by:
resolveSinglein interfaceResolver<PKIXValidationInformation,CriteriaSet>- Throws:
ResolverException
-
resolve
public Iterable<PKIXValidationInformation> resolve(CriteriaSet criteriaSet) throws ResolverException
- Specified by:
resolvein interfaceResolver<PKIXValidationInformation,CriteriaSet>- Throws:
ResolverException
-
resolveTrustedNames
@Nonnull public Set<String> resolveTrustedNames(CriteriaSet criteriaSet) throws ResolverException
- Specified by:
resolveTrustedNamesin interfacePKIXValidationInformationResolver- Throws:
ResolverException
-
supportsTrustedNameResolution
public boolean supportsTrustedNameResolution()
- Specified by:
supportsTrustedNameResolutionin interfacePKIXValidationInformationResolver
-
checkCriteriaRequirements
protected void checkCriteriaRequirements(CriteriaSet criteriaSet)
Check that all necessary criteria are available.- Parameters:
criteriaSet- the criteria set to evaluate
-
retrievePKIXInfoFromMetadata
protected Collection<PKIXValidationInformation> retrievePKIXInfoFromMetadata(CriteriaSet criteriaSet, String entityID, QName role, String protocol) throws ResolverException
Retrieves validation information from the provided resolver.- Parameters:
criteriaSet- the criteria set being processedentityID- entity ID for which to resolve validation informationrole- role in which the entity is operatingprotocol- protocol over which the entity is operating (may be null)- Returns:
- collection of resolved validation information, possibly empty
- Throws:
ResolverException- thrown if the key, certificate, or CRL information is represented in an unsupported format
-
resolvePKIXInfo
protected void resolvePKIXInfo(Collection<PKIXValidationInformation> accumulator, RoleDescriptor roleDescriptor) throws ResolverException
Retrieves validation information from the provided role descriptor.- Parameters:
roleDescriptor- the role descriptor from which to resolve information.accumulator- accumulator of PKIX validation information to return- Throws:
ResolverException- thrown if the key, certificate, or CRL information is represented in an unsupported format
-
resolvePKIXInfo
protected void resolvePKIXInfo(Collection<PKIXValidationInformation> accumulator, Extensions extensions) throws ResolverException
Retrieves validation information from the resolver extension element.- Parameters:
extensions- the extension element from which to resolve informationaccumulator- accumulator of PKIX validation information to return- Throws:
ResolverException- thrown if the key, certificate, or CRL information is represented in an unsupported format
-
extractPKIXInfo
protected void extractPKIXInfo(@Nonnull Collection<PKIXValidationInformation> accumulator, @Nonnull KeyAuthority keyAuthority) throws ResolverExceptionRetrieves validation information from the Shibboleth KeyAuthority resolver extension element.- Parameters:
keyAuthority- the Shibboleth KeyAuthority element from which to resolve informationaccumulator- accumulator of PKIX validation information to return- Throws:
ResolverException- thrown if the key, certificate, or CRL information is represented in an unsupported format
-
retrieveTrustedNamesFromMetadata
protected Set<String> retrieveTrustedNamesFromMetadata(CriteriaSet criteriaSet, String entityID, QName role, String protocol, UsageType usage) throws ResolverException
Retrieves trusted name information from the provided resolver.- Parameters:
criteriaSet- the criteria set being processedentityID- entity ID for which to resolve trusted namesrole- role in which the entity is operatingprotocol- protocol over which the entity is operating (may be null)usage- usage specifier for role descriptor key descriptors to evaluate- Returns:
- collection of resolved trusted name information, possibly empty
- Throws:
SecurityException- thrown if there is an error extracting trusted name informationResolverException- if we have an error getting the role descriptors
-
getTrustedNames
protected void getTrustedNames(Set<String> accumulator, KeyInfo keyInfo)
Extract trusted names from a KeyInfo element.- Parameters:
keyInfo- the KeyInfo instance from which to extract trusted namesaccumulator- set of trusted names to return
-
matchUsage
protected boolean matchUsage(UsageType metadataUsage, UsageType criteriaUsage)
Match usage enum type values from resolver KeyDescriptor and from specified resolution criteria.- Parameters:
metadataUsage- the value from the 'use' attribute of a resolver KeyDescriptor elementcriteriaUsage- the value from specified criteria- Returns:
- true if the two usage specifiers match for purposes of resolving validation information, false otherwise
-
getRoleDescriptors
protected Iterable<RoleDescriptor> getRoleDescriptors(CriteriaSet criteriaSet, String entityID, QName role, String protocol) throws ResolverException
Get the list of resolver role descriptors which match the given entityID, role and protocol.- Parameters:
criteriaSet- the criteria set being processedentityID- entity ID of the resolver entity descriptor to resolverole- role in which the entity is operatingprotocol- protocol over which the entity is operating (may be null)- Returns:
- a list of role descriptors matching the given parameters, or null
- Throws:
ResolverException- thrown if there is an error retrieving role descriptors from the resolver provider
-
-