public class MetadataCredentialResolver extends AbstractCriteriaFilteringCredentialResolver implements InitializableComponent
Credentials may be resolved either by directly supplying an instance of RoleDescriptor in
the input CriteriaSet, or by looking up the role descriptor via a supplied RoleDescriptorResolver.
The following resolution modes and associated Criterion
inputs are supported:
Direct resolution from a supplied RoleDescriptor:
RoleDescriptorCriterion - requiredUsageCriterion - optional; if absent, the effective value
UsageType.UNSPECIFIED will be used for credential resolution.RoleDescriptorResolver:
EntityIdCriterion - requiredEntityRoleCriterion - requiredProtocolCriterion - optional; if absent, credentials will be resolved from all matching roles,
regardless of protocol support.UsageCriterion - optional; if absent, the effective value
UsageType.UNSPECIFIED will be used for credential resolution.
In order to support resolution from a metadata source using EntityIdCriterion + EntityRoleCriterion,
an instance of RoleDescriptorResolver must be supplied. Otherwise it is optional.
An instance of KeyInfoCredentialResolver must always be supplied.
| Constructor and Description |
|---|
MetadataCredentialResolver() |
| Modifier and Type | Method and Description |
|---|---|
protected void |
extractCredentials(HashSet<Credential> accumulator,
KeyDescriptor keyDescriptor,
String entityID,
UsageType mdUsage)
Extract the credentials from the specified KeyDescriptor.
|
protected UsageType |
getEffectiveUsageInput(CriteriaSet criteriaSet)
Get the effective
UsageType input to use. |
KeyInfoCredentialResolver |
getKeyInfoCredentialResolver()
Get the KeyInfo credential resolver used by this entityDescriptorResolver resolver to handle KeyInfo elements.
|
RoleDescriptorResolver |
getRoleDescriptorResolver()
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 role descriptors which match the given entityID, role and protocol.
|
void |
initialize()
Initializes the component.
|
boolean |
isInitialized()
Gets whether this component is initialized.
|
protected boolean |
matchUsage(UsageType metadataUsage,
UsageType criteriaUsage)
Match usage enum type values from entityDescriptorResolver KeyDescriptor and from credential criteria.
|
protected void |
processRoleDescriptor(HashSet<Credential> accumulator,
RoleDescriptor roleDescriptor,
String entityID,
UsageType usage)
Process a RoleDescriptor by examing each of its KeyDescriptors.
|
protected Collection<Credential> |
resolveFromMetadata(CriteriaSet criteriaSet,
String entityID,
QName role,
String protocol,
UsageType usage)
Resolves credentials using this resolver's configured instance of
RoleDescriptorResolver. |
protected Collection<Credential> |
resolveFromRoleDescriptor(CriteriaSet criteriaSet,
RoleDescriptor roleDescriptor,
UsageType usage)
Resolves credentials using a supplied instance of
RoleDescriptor. |
protected Iterable<Credential> |
resolveFromSource(CriteriaSet criteriaSet)
Subclasses are required to implement this method to resolve credentials from the
implementation-specific type of underlying credential source.
|
void |
setKeyInfoCredentialResolver(KeyInfoCredentialResolver resolver)
Set the KeyInfo credential resolver used by this entityDescriptorResolver resolver to handle KeyInfo elements.
|
void |
setRoleDescriptorResolver(RoleDescriptorResolver resolver)
Set the metadata RoleDescriptor resolver instance used by this resolver.
|
isSatisfyAllPredicates, resolve, setSatisfyAllPredicatesresolveSinglepublic boolean isInitialized()
isInitialized in interface InitializableComponentpublic void initialize()
throws ComponentInitializationException
initialize in interface InitializableComponentComponentInitializationException - thrown if there is a problem initializing the component@Nullable public RoleDescriptorResolver getRoleDescriptorResolver()
This is optional. If not supplied, credentials may only be resolved via
input of a RoleDescriptorCriterion.
public void setRoleDescriptorResolver(@Nullable RoleDescriptorResolver resolver)
This is optional. If not supplied, credentials may only be resolved via
input of a RoleDescriptorCriterion.
resolver - the new RoleDescriptorResolver to use@NonnullAfterInit public KeyInfoCredentialResolver getKeyInfoCredentialResolver()
public void setKeyInfoCredentialResolver(@Nonnull KeyInfoCredentialResolver resolver)
resolver - the new KeyInfoCredentialResolver to use@Nonnull protected Iterable<Credential> resolveFromSource(@Nonnull CriteriaSet criteriaSet) throws ResolverException
resolveFromSource in class AbstractCriteriaFilteringCredentialResolvercriteriaSet - the set of criteria used to resolve credentials from the credential sourceResolverException - thrown if there is an error resolving credentials from the credential source@Nonnull protected UsageType getEffectiveUsageInput(@Nonnull CriteriaSet criteriaSet)
UsageType input to use.criteriaSet - the criteria set being processed@Nonnull protected Collection<Credential> resolveFromRoleDescriptor(@Nonnull CriteriaSet criteriaSet, @Nonnull RoleDescriptor roleDescriptor, @Nonnull UsageType usage) throws ResolverException
RoleDescriptor.criteriaSet - the criteria set being processedroleDescriptor - the role descriptor being processedusage - intended usage of resolved credentialsResolverException - thrown if the key, certificate, or CRL information is represented in an unsupported
format@Nonnull protected Collection<Credential> resolveFromMetadata(@Nonnull CriteriaSet criteriaSet, @Nonnull @NotEmpty String entityID, @Nonnull QName role, @Nullable String protocol, @Nonnull UsageType usage) throws ResolverException
RoleDescriptorResolver.criteriaSet - the criteria set being processedentityID - entityID of the credential ownerrole - role in which the entity is operatingprotocol - protocol over which the entity is operating (may be null)usage - intended usage of resolved credentialsResolverException - thrown if the key, certificate, or CRL information is represented in an unsupported
formatprotected void processRoleDescriptor(@Nonnull HashSet<Credential> accumulator, @Nonnull RoleDescriptor roleDescriptor, @Nullable String entityID, @Nonnull UsageType usage) throws ResolverException
accumulator - the set of credentials being accumulated for return to the callerroleDescriptor - the KeyDescriptor being processedentityID - the entity ID of the KeyDescriptor being processedusage - the credential usage type specified as resolve inputResolverException - if there is a problem resolving credentials from the KeyDescriptor's KeyInfo elementprotected void extractCredentials(@Nonnull HashSet<Credential> accumulator, @Nonnull KeyDescriptor keyDescriptor, @Nullable String entityID, @Nonnull UsageType mdUsage) throws ResolverException
accumulator - the set of credentials being accumulated for return to the callerkeyDescriptor - the KeyDescriptor being processedentityID - the entity ID of the KeyDescriptor being processedmdUsage - the effective credential usage type in effect for the resolved credentialsResolverException - if there is a problem resolving credentials from the KeyDescriptor's KeyInfo elementprotected boolean matchUsage(@Nonnull UsageType metadataUsage, @Nonnull UsageType criteriaUsage)
metadataUsage - the value from the 'use' attribute of a entityDescriptorResolver KeyDescriptor elementcriteriaUsage - the value from credential criteria@Nonnull protected Iterable<RoleDescriptor> getRoleDescriptors(@Nonnull CriteriaSet criteriaSet, @Nonnull String entityID, @Nonnull QName role, @Nullable String protocol) throws ResolverException
criteriaSet - criteria set being processedentityID - entity ID of the credential ownerrole - role in which the entity is operatingprotocol - protocol over which the entity is operating (may be null)ResolverException - thrown if there is an error retrieving role descriptors
from the entityDescriptorResolver providerCopyright © 2016 JBoss by Red Hat. All rights reserved.