Class BasicX509CredentialNameEvaluator
- All Implemented Interfaces:
X509CredentialNameEvaluator
X509CredentialNameEvaluator
which evaluates various identifiers
extracted from an X509Credential
's entity certificate against a set of trusted names.
Supported types of entity certificate-derived names for name checking purposes are:
- Subject alternative names.
- The first (i.e. most specific) common name (CN) from the subject distinguished name.
- The complete subject distinguished name.
Name checking is enabled by default for all of the supported name types. The types of subject alternative names to
process are specified by using the appropriate constant values defined in X509Support
. By default the
following types of subject alternative names are checked: DNS (X509Support.DNS_ALT_NAME
)
and URI (X509Support.URI_ALT_NAME
).
The subject distinguished name from the entity certificate is compared to the trusted key names for complete DN
matching purposes by parsing each trusted key name into an X500Principal
as returned by the configured
instance of X500DNHandler
. The resulting distinguished name is then compared with the certificate subject
using X500Principal.equals(Object)
. The default X500DNHandler used is InternalX500DNHandler
.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate boolean
Flag as to whether to perform name checking using credential's subject alt names.private boolean
Flag as to whether to perform name checking using credential's subject DN.private boolean
Flag as to whether to perform name checking using credential's subject DN's common name (CN).private final org.slf4j.Logger
Class logger.The set of types of subject alternative names to process.private X500DNHandler
Responsible for parsing and serializing X.500 names to/fromX500Principal
instances. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionboolean
Gets whether to check the credential's entity certificate subject alt names against the trusted key name values.boolean
Gets whether to check the credential's entity certificate subject DN against the trusted key name values.boolean
Gets whether to check the credential's entity certificate subject DN's common name (CN) against the trusted key name values.boolean
evaluate
(X509Credential credential, Set<String> trustedNames) Evaluate the specified credential against the specified set of trusted names.Get the set of types of subject alternative names to process.Get the handler which process X.500 distinguished names.boolean
Gets whether any of the supported name type checking is currently enabled.protected boolean
processNameChecks
(X509Credential credential, Set<String> trustedNames) Process any name checks that are enabled.protected boolean
processSubjectAltNames
(X509Certificate certificate, Set<String> trustedNames) Process name checking for the subject alt names within the certificate.protected boolean
processSubjectDN
(X509Certificate certificate, Set<String> trustedNames) Process name checking for the certificate subject DN.protected boolean
processSubjectDNCommonName
(X509Certificate certificate, Set<String> trustedNames) Process name checking for a certificate subject DN's common name.void
setCheckSubjectAltNames
(boolean check) Sets whether to check the credential's entity certificate subject alt names against the trusted key name values.void
setCheckSubjectDN
(boolean check) Sets whether to check the credential's entity certificate subject DN against the trusted key name values.void
setCheckSubjectDNCommonName
(boolean check) Sets whether to check the credential's entity certificate subject DN's common name (CN) against the trusted key name values.void
setSubjectAltNameTypes
(Set<Integer> nameTypes) Set the set of types of subject alternative names to process.void
setX500DNHandler
(X500DNHandler handler) Set the handler which process X.500 distinguished names.
-
Field Details
-
log
private final org.slf4j.Logger logClass logger. -
checkSubjectAltNames
private boolean checkSubjectAltNamesFlag as to whether to perform name checking using credential's subject alt names. -
checkSubjectDNCommonName
private boolean checkSubjectDNCommonNameFlag as to whether to perform name checking using credential's subject DN's common name (CN). -
checkSubjectDN
private boolean checkSubjectDNFlag as to whether to perform name checking using credential's subject DN. -
subjectAltNameTypes
The set of types of subject alternative names to process. -
x500DNHandler
Responsible for parsing and serializing X.500 names to/fromX500Principal
instances.
-
-
Constructor Details
-
BasicX509CredentialNameEvaluator
public BasicX509CredentialNameEvaluator()Constructor.
-
-
Method Details
-
isNameCheckingActive
public boolean isNameCheckingActive()Gets whether any of the supported name type checking is currently enabled.- Returns:
- true if any of the supported name type checking categories is currently enabled, false otherwise
-
getSubjectAltNameTypes
Get the set of types of subject alternative names to process. Name types are represented using the constant OID tag name values defined inX509Support
.- Returns:
- the immutable set of alt name identifiers
-
setSubjectAltNameTypes
Set the set of types of subject alternative names to process. Name types are represented using the constant OID tag name values defined inX509Support
.- Parameters:
nameTypes
- the new set of alt name identifiers
-
checkSubjectAltNames
public boolean checkSubjectAltNames()Gets whether to check the credential's entity certificate subject alt names against the trusted key name values.- Returns:
- whether to check the credential's entity certificate subject alt names against the trusted key names
-
setCheckSubjectAltNames
public void setCheckSubjectAltNames(boolean check) Sets whether to check the credential's entity certificate subject alt names against the trusted key name values.- Parameters:
check
- whether to check the credential's entity certificate subject alt names against the trusted key names
-
checkSubjectDNCommonName
public boolean checkSubjectDNCommonName()Gets whether to check the credential's entity certificate subject DN's common name (CN) against the trusted key name values.- Returns:
- whether to check the credential's entity certificate subject DN's CN against the trusted key names
-
setCheckSubjectDNCommonName
public void setCheckSubjectDNCommonName(boolean check) Sets whether to check the credential's entity certificate subject DN's common name (CN) against the trusted key name values.- Parameters:
check
- whether to check the credential's entity certificate subject DN's CN against the trusted key names
-
checkSubjectDN
public boolean checkSubjectDN()Gets whether to check the credential's entity certificate subject DN against the trusted key name values.- Returns:
- whether to check the credential's entity certificate subject DN against the trusted key names
-
setCheckSubjectDN
public void setCheckSubjectDN(boolean check) Sets whether to check the credential's entity certificate subject DN against the trusted key name values.- Parameters:
check
- whether to check the credential's entity certificate subject DN against the trusted key names
-
getX500DNHandler
Get the handler which process X.500 distinguished names. Defaults toInternalX500DNHandler
.- Returns:
- returns the X500DNHandler instance
-
setX500DNHandler
Set the handler which process X.500 distinguished names. Defaults toInternalX500DNHandler
.- Parameters:
handler
- the new X500DNHandler instance
-
evaluate
public boolean evaluate(@Nonnull X509Credential credential, @Nullable Set<String> trustedNames) throws SecurityException Evaluate the specified credential against the specified set of trusted names.The types of names supported, and the manner in which they are evaluated, is implementation-specific.
If the set of trusted names is null or empty, or if no supported name types are configured to be checked, then the evaluation is considered successful.
- Specified by:
evaluate
in interfaceX509CredentialNameEvaluator
- Parameters:
credential
- the X.509 credential to evaluatetrustedNames
- trusted names against which the credential will be evaluated- Returns:
- true if the name evaluation succeeds, false otherwise
- Throws:
SecurityException
- thrown if there is an error during name evaluation
-
processNameChecks
protected boolean processNameChecks(@Nonnull X509Credential credential, @Nonnull Set<String> trustedNames) Process any name checks that are enabled.- Parameters:
credential
- the credential for the entity to validatetrustedNames
- trusted names against which the credential will be evaluated- Returns:
- true iff the name check succeeds
-
processSubjectDNCommonName
protected boolean processSubjectDNCommonName(@Nonnull X509Certificate certificate, @Nonnull Set<String> trustedNames) Process name checking for a certificate subject DN's common name.- Parameters:
certificate
- the certificate to processtrustedNames
- the set of trusted names- Returns:
- true if the subject DN common name matches the set of trusted names, false otherwise
-
processSubjectDN
protected boolean processSubjectDN(@Nonnull X509Certificate certificate, @Nonnull Set<String> trustedNames) Process name checking for the certificate subject DN.- Parameters:
certificate
- the certificate to processtrustedNames
- the set of trusted names- Returns:
- true if the subject DN matches the set of trusted names, false otherwise
-
processSubjectAltNames
protected boolean processSubjectAltNames(@Nonnull X509Certificate certificate, @Nonnull Set<String> trustedNames) Process name checking for the subject alt names within the certificate.- Parameters:
certificate
- the certificate to processtrustedNames
- the set of trusted names- Returns:
- true if one of the subject alt names matches the set of trusted names, false otherwise
-