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, setSatisfyAllPredicates
resolveSingle
public boolean isInitialized()
isInitialized
in interface InitializableComponent
public void initialize() throws ComponentInitializationException
initialize
in interface InitializableComponent
ComponentInitializationException
- 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 AbstractCriteriaFilteringCredentialResolver
criteriaSet
- 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.