[java-identity-provider] branch main updated: IDP-1706: Enhance StaticPKIXFactoryBean to support PKIXTrustEvaluator...

Brent Putman putmanb at georgetown.edu
Fri Nov 6 18:15:49 UTC 2020


This is an automated email from the git hooks/post-receive script.

putmanb pushed a commit to branch main
in repository java-identity-provider.

View the commit online:
http://git.shibboleth.net/view/?p=java-identity-provider.git;a=commit;h=f4323376878d59f50360c7f5a9814fd94864d3a0

The following commit(s) were added to refs/heads/main by this push:
       new  f43233768 IDP-1706: Enhance StaticPKIXFactoryBean to support PKIXTrustEvaluator...
f43233768 is described below

commit f4323376878d59f50360c7f5a9814fd94864d3a0
Author: Brent Putman <putmanb at georgetown.edu>
AuthorDate: Fri Nov 6 12:54:14 2020 -0500

    IDP-1706: Enhance StaticPKIXFactoryBean to support PKIXTrustEvaluator...
    
    Enhance to sanity check the inputs around revocation checking.
---
 .../spring/factory/StaticPKIXFactoryBean.java      | 35 +++++++++++++++++++++-
 1 file changed, 34 insertions(+), 1 deletion(-)

diff --git a/idp-profile-spring/src/main/java/net/shibboleth/idp/profile/spring/factory/StaticPKIXFactoryBean.java b/idp-profile-spring/src/main/java/net/shibboleth/idp/profile/spring/factory/StaticPKIXFactoryBean.java
index 058ed590a..17af5255c 100644
--- a/idp-profile-spring/src/main/java/net/shibboleth/idp/profile/spring/factory/StaticPKIXFactoryBean.java
+++ b/idp-profile-spring/src/main/java/net/shibboleth/idp/profile/spring/factory/StaticPKIXFactoryBean.java
@@ -19,6 +19,7 @@ package net.shibboleth.idp.profile.spring.factory;
 
 import java.io.IOException;
 import java.io.InputStream;
+import java.security.Security;
 import java.security.cert.CRLException;
 import java.security.cert.CertificateException;
 import java.security.cert.X509CRL;
@@ -37,6 +38,7 @@ import org.opensaml.security.x509.X509Support;
 import org.opensaml.security.x509.impl.BasicPKIXValidationInformation;
 import org.opensaml.security.x509.impl.BasicX509CredentialNameEvaluator;
 import org.opensaml.security.x509.impl.CertPathPKIXTrustEvaluator;
+import org.opensaml.security.x509.impl.CertPathPKIXValidationOptions;
 import org.opensaml.security.x509.impl.PKIXX509CredentialTrustEngine;
 import org.opensaml.security.x509.impl.StaticPKIXValidationInformationResolver;
 import org.opensaml.security.x509.impl.X509CredentialNameEvaluator;
@@ -48,6 +50,7 @@ import org.springframework.core.io.Resource;
 
 import net.shibboleth.ext.spring.factory.AbstractComponentAwareFactoryBean;
 import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
+import net.shibboleth.utilities.java.support.primitive.StringSupport;
 
 /**
  * File system specific bean for PKIXX509CredentialTrustEngine.
@@ -238,7 +241,37 @@ public class StaticPKIXFactoryBean extends AbstractComponentAwareFactoryBean<PKI
                 credentialNameEvaluator != null ? credentialNameEvaluator :
                     (checkNames ? new BasicX509CredentialNameEvaluator() : null);
 
+        validateConfiguration(pkixTrustEvaluator);
+
         return new PKIXX509CredentialTrustEngine(resolver, pkixTrustEvaluator, credNameEvaluator);
     }
-    
+
+    /**
+     * Validate the configuration of the effective {@link PKIXTrustEvaluator}.
+     *
+     * @param pkixTrustEvaluator the instance whose configuration is to be evaluated
+     *
+     * @throws Exception if configuration issues are encountered
+     */
+    protected void validateConfiguration(@Nonnull final PKIXTrustEvaluator pkixTrustEvaluator) throws Exception {
+        if (CertPathPKIXTrustEvaluator.class.isInstance(pkixTrustEvaluator)
+                && CertPathPKIXValidationOptions.class.isInstance(pkixTrustEvaluator.getPKIXValidationOptions())) {
+            
+            final CertPathPKIXValidationOptions certPathOptions =
+                    CertPathPKIXValidationOptions.class.cast(pkixTrustEvaluator.getPKIXValidationOptions());
+
+           if (certPathOptions.isForceRevocationEnabled() && certPathOptions.isRevocationEnabled()
+                   && getCRLs().isEmpty()
+                   && ! Boolean.getBoolean("com.sun.security.enableCRLDP")
+                   && ! "true".equalsIgnoreCase(StringSupport.trimOrNull(Security.getProperty("oscp.enable"))) ) {
+
+               log.error("Certificate revocation checking was force enabled, "
+                       + "but no static CRLs were supplied and both CRLDP and OCSP processing is disabled");
+
+               throw new FatalBeanException("Certificate revocation checking was force enabled, "
+                       + "but no static CRLs were supplied and both CRLDP and OCSP processing is disabled");
+           }
+        }
+    }
+
 }
\ No newline at end of file

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the commits mailing list