[java-opensaml COMMIT] in /trunk/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/impl: AbstractD...
noreply at shibboleth.net
noreply at shibboleth.net
Wed Feb 11 17:05:05 EST 2015
Author: putmanb
Date: Wed Feb 11 17:05:04 2015
New Revision: 4220
URL: http://svn.shibboleth.net/view/java-opensaml?rev=4220&view=rev
Log:
Checkpoint work on HTTPS TLS TrustEngines.
Modified:
trunk/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/impl/AbstractDynamicHTTPMetadataResolver.java
trunk/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/impl/HTTPMetadataResolver.java
Modified: trunk/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/impl/AbstractDynamicHTTPMetadataResolver.java
URL: http://svn.shibboleth.net/view/java-opensaml/trunk/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/impl/AbstractDynamicHTTPMetadataResolver.java?rev=4220&r1=4219&r2=4220&view=diff
==============================================================================
--- trunk/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/impl/AbstractDynamicHTTPMetadataResolver.java (original)
+++ trunk/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/impl/AbstractDynamicHTTPMetadataResolver.java Wed Feb 11 17:05:04 2015
@@ -52,6 +52,10 @@
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.opensaml.core.xml.XMLObject;
import org.opensaml.core.xml.io.UnmarshallingException;
+import org.opensaml.security.credential.Credential;
+import org.opensaml.security.httpclient.HttpClientSecurityConstants;
+import org.opensaml.security.httpclient.impl.TrustEngineTLSSocketFactory;
+import org.opensaml.security.trust.TrustEngine;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -87,6 +91,9 @@
/** HttpClient credentials provider. */
private CredentialsProvider credentialsProvider;
+ /** Optional trust engine used in evaluating server TLS credentials. */
+ private TrustEngine<Credential> tlsTrustEngine;
+
/**
* Constructor.
*
@@ -110,6 +117,20 @@
// The default handler
responseHandler = new BasicMetadataResponseHandler();
+ }
+
+ /**
+ * Sets the optional trust engine used in evaluating server TLS credentials.
+ *
+ * <p>
+ * Must be used in conjunction with an HttpClient instance which is configured with a
+ * {@link TrustEngineTLSSocketFactory}, otherwise has no effect.
+ * </p>
+ *
+ * @param engine the trust engine instance to use
+ */
+ public void setTLSTrustEngine(@Nullable final TrustEngine<Credential> engine) {
+ tlsTrustEngine = engine;
}
/**
@@ -248,7 +269,24 @@
HttpClientContext context = buildHttpClientContext();
- return httpClient.execute(request, responseHandler, context);
+ XMLObject result = httpClient.execute(request, responseHandler, context);
+ checkTLSCredentialTrusted(context, request);
+ return result;
+ }
+
+ /**
+ * Check that trust engine evaluation of the server TLS credential was actually performed.
+ *
+ * @param context the current HTTP context instance in use
+ * @param request the HTTP URI request
+ */
+ protected void checkTLSCredentialTrusted(HttpClientContext context, HttpUriRequest request) {
+ if ("https".equalsIgnoreCase(request.getURI().getScheme()) && tlsTrustEngine != null) {
+ if (context.getAttribute(HttpClientSecurityConstants.CONTEXT_KEY_SERVER_TLS_CREDENTIAL_TRUSTED) == null) {
+ log.warn("Configured TLS trust engine was not used to verify server TLS credential, "
+ + "the appropriate socket factory was likely not configured");
+ }
+ }
}
/**
@@ -294,6 +332,9 @@
final HttpClientContext context = HttpClientContext.create();
if (credentialsProvider != null) {
context.setCredentialsProvider(credentialsProvider);
+ }
+ if (tlsTrustEngine != null) {
+ context.setAttribute(HttpClientSecurityConstants.CONTEXT_KEY_TRUST_ENGINE, tlsTrustEngine);
}
return context;
}
Modified: trunk/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/impl/HTTPMetadataResolver.java
URL: http://svn.shibboleth.net/view/java-opensaml/trunk/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/impl/HTTPMetadataResolver.java?rev=4220&r1=4219&r2=4220&view=diff
==============================================================================
--- trunk/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/impl/HTTPMetadataResolver.java (original)
+++ trunk/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/impl/HTTPMetadataResolver.java Wed Feb 11 17:05:04 2015
@@ -39,6 +39,10 @@
import org.apache.http.client.protocol.HttpClientContext;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.util.EntityUtils;
+import org.opensaml.security.credential.Credential;
+import org.opensaml.security.httpclient.HttpClientSecurityConstants;
+import org.opensaml.security.httpclient.impl.TrustEngineTLSSocketFactory;
[... 75 lines stripped ...]
More information about the commits
mailing list