[java-identity-provider] branch master updated: Add executableSearchBuilderRef to LDAP connector schema.
Scott Cantor
cantor.2 at osu.edu
Fri Jun 9 10:53:25 EDT 2017
This is an automated email from the git hooks/post-receive script.
scantor pushed a commit to branch master
in repository java-identity-provider.
View the commit online:
http://git.shibboleth.net/view/?p=java-identity-provider.git;a=commit;h=461a5c218590003c3404a23d2eddb980a4a817bd
The following commit(s) were added to refs/heads/master by this push:
new 461a5c2 Add executableSearchBuilderRef to LDAP connector schema.
461a5c2 is described below
commit 461a5c218590003c3404a23d2eddb980a4a817bd
Author: Scott Cantor <cantor.2 at osu.edu>
AuthorDate: Fri Jun 9 10:53:22 2017 -0400
Add executableSearchBuilderRef to LDAP connector schema.
---
.../dc/ldap/impl/LDAPDataConnectorParser.java | 21 +++++++++++--
.../dc/ldap/LDAPDataConnectorParserTest.java | 23 +++++++++++++++
.../ldap-attribute-resolver-spring-context.xml | 2 +-
.../ldap-attribute-resolver-v2-flat-hybrid.xml | 34 ++++++++++++++++++++++
.../schema/shibboleth-attribute-resolver.xsd | 11 +++++--
5 files changed, 86 insertions(+), 5 deletions(-)
diff --git a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/impl/LDAPDataConnectorParser.java b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/impl/LDAPDataConnectorParser.java
index e7ed570..1fce93e 100644
--- a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/impl/LDAPDataConnectorParser.java
+++ b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/impl/LDAPDataConnectorParser.java
@@ -174,7 +174,15 @@ public class LDAPDataConnectorParser extends AbstractWarningDataConnectorParser
provider.addPropertyValue("providerConfig", providerConfig.getBeanDefinition());
connectionFactory.addPropertyValue("provider", provider.getBeanDefinition());
- builder.addPropertyValue("executableSearchBuilder", v2Parser.createTemplatedExecutableSearchFilterBuilder());
+ final String searchBuilderID = v2Parser.getBeanSearchBuilderID();
+ if (searchBuilderID != null) {
+ builder.addPropertyReference("executableSearchBuilder", searchBuilderID);
+ } else {
+ final BeanDefinition def = v2Parser.createTemplateBuilder();
+ if (def != null) {
+ builder.addPropertyValue("executableSearchBuilder", def);
+ }
+ }
final BeanDefinition connectionPool = v2Parser.createConnectionPool(connectionFactory.getBeanDefinition());
BeanDefinitionBuilder pooledConnectionFactory = null;
@@ -409,11 +417,20 @@ public class LDAPDataConnectorParser extends AbstractWarningDataConnectorParser
}
/**
+ * Get the bean ID of an externally defined search builder.
+ *
+ * @return search builder bean ID
+ */
+ @Nullable public String getBeanSearchBuilderID() {
+ return AttributeSupport.getAttributeValue(configElement, null, "executableSearchBuilderRef");
+ }
+
+ /**
* Construct the definition of the template driven search builder.
*
* @return the bean definition for the template search builder.
*/
- @Nonnull public BeanDefinition createTemplatedExecutableSearchFilterBuilder() {
+ @Nonnull public BeanDefinition createTemplateBuilder() {
final BeanDefinitionBuilder templateBuilder =
BeanDefinitionBuilder.genericBeanDefinition(TemplatedExecutableSearchFilterBuilder.class);
templateBuilder.setInitMethodName("initialize");
diff --git a/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/LDAPDataConnectorParserTest.java b/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/LDAPDataConnectorParserTest.java
index b036452..2fb247d 100644
--- a/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/LDAPDataConnectorParserTest.java
+++ b/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/LDAPDataConnectorParserTest.java
@@ -409,6 +409,29 @@ public class LDAPDataConnectorParserTest {
Assert.assertNotNull(attrs.get("entryDN"));
}
+ @Test public void flatHybridConfig() throws Exception {
+ final LDAPDataConnector dataConnector =
+ getLdapDataConnector(new String[] {
+ "net/shibboleth/idp/attribute/resolver/spring/dc/ldap/ldap-attribute-resolver-v2-flat-hybrid.xml",
+ "net/shibboleth/idp/attribute/resolver/spring/dc/ldap/ldap-attribute-resolver-spring-context.xml"});
+ Assert.assertNotNull(dataConnector);
+ doTest(dataConnector);
+
+ dataConnector.initialize();
+ final StringAttributeValueMappingStrategy mappingStrategy =
+ (StringAttributeValueMappingStrategy) dataConnector.getMappingStrategy();
+ Assert.assertEquals(mappingStrategy.getResultRenamingMap().size(), 1);
+ Assert.assertEquals(mappingStrategy.getResultRenamingMap().get("homephone"), "phonenumber");
+ final AttributeResolutionContext context =
+ TestSources.createResolutionContext(TestSources.PRINCIPAL_ID, TestSources.IDP_ENTITY_ID,
+ TestSources.SP_ENTITY_ID);
+ final Map<String, IdPAttribute> attrs = dataConnector.resolve(context);
+ Assert.assertNotNull(attrs);
+ Assert.assertNull(attrs.get("homephone"));
+ Assert.assertNotNull(attrs.get("phonenumber"));
+ Assert.assertNotNull(attrs.get("entryDN"));
+ }
+
protected LDAPDataConnector getLdapDataConnector(final Resource properties, final String[] beanDefinitions) throws IOException {
final GenericApplicationContext context = new FilesystemGenericApplicationContext() ;
setTestContext(context);
diff --git a/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/ldap-attribute-resolver-spring-context.xml b/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/ldap-attribute-resolver-spring-context.xml
index b6b484f..e58fa3d 100644
--- a/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/ldap-attribute-resolver-spring-context.xml
+++ b/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/ldap-attribute-resolver-spring-context.xml
@@ -64,7 +64,7 @@
</bean>
<bean class="org.ldaptive.SearchExecutor" p:baseDn="ou=people,dc=shibboleth,dc=net" p:returnAttributes="uid,homephone,mail" p:timeLimit="7000" />
<bean id="cache" class="com.google.common.cache.Cache" factory-bean="cacheBuilderExternal" factory-method="build" />
- <bean class="net.shibboleth.idp.attribute.resolver.dc.ldap.impl.TemplatedExecutableSearchFilterBuilder"
+ <bean id="filter" class="net.shibboleth.idp.attribute.resolver.dc.ldap.impl.TemplatedExecutableSearchFilterBuilder"
p:templateText="(uid=${resolutionContext.principal})" p:velocityEngine-ref="shibboleth.VelocityEngine"
init-method="initialize" />
<bean id="mappings" class="net.shibboleth.idp.attribute.resolver.dc.ldap.impl.StringAttributeValueMappingStrategy"
diff --git a/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/ldap-attribute-resolver-v2-flat-hybrid.xml b/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/ldap-attribute-resolver-v2-flat-hybrid.xml
new file mode 100644
index 0000000..7ab6cff
--- /dev/null
+++ b/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/ldap-attribute-resolver-v2-flat-hybrid.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<AttributeResolver xmlns="urn:mace:shibboleth:2.0:resolver" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="urn:mace:shibboleth:2.0:resolver http://shibboleth.net/schema/idp/shibboleth-attribute-resolver.xsd">
+
+ <DataConnector id="myLDAP" xsi:type="LDAPDirectory" ldapURL="ldap://localhost:10389"
+ baseDN="ou=people,dc=shibboleth,dc=net" principal="cn=Directory Manager" principalCredential="password"
+ useStartTLS="true" searchTimeLimit="PT7S"
+ executableSearchBuilderRef="filter" mappingStrategyRef="mappings" validatorRef="validator" noRetryDelay="PT5M"
+ connectTimeout="PT2S" responseTimeout="PT4S">
+ <LDAPProperty name="name1" value="value1" />
+ <LDAPProperty name="name2" value="value2" />
+ <StartTLSTrustCredential xsi:type="security:X509Inline" xmlns:security="urn:mace:shibboleth:2.0:security"
+ id="LDAPtoIdPCredential">
+ <security:Certificate>
+ MIICATCCAWoCCQCZy4ovDlQTvDANBgkqhkiG9w0BAQUFADBFMRMwEQYKCZImiZPy
+ LGQBGRYDbmV0MRowGAYKCZImiZPyLGQBGRYKc2hpYmJvbGV0aDESMBAGA1UEAxMJ
+ bG9jYWxob3N0MB4XDTEzMDkyMDA0NDE1OFoXDTIzMDkxODA0NDE1OFowRTETMBEG
+ CgmSJomT8ixkARkWA25ldDEaMBgGCgmSJomT8ixkARkWCnNoaWJib2xldGgxEjAQ
+ BgNVBAMTCWxvY2FsaG9zdDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA+Pj+
+ Rk0FosrK8tdNJLASSbfRFEJDf0498bnwtor76PONwkTLjnm7paTMAy7oGIAccuBf
+ n7183mlo/yh22x+7Fdux4ESvdp1FWl7nGlBBWUrLZzXwwGybC0qv3/Cmvfkvm6zh
+ zgY7YyQYlA/RCjTk/pUfrXaIIaKwd+B2miBDrDUCAwEAATANBgkqhkiG9w0BAQUF
+ AAOBgQCKQsndxYjsGIvK3lnlztIuKQmRlj7IHL/T6abBYwmQcyMa5o3hv6/Rx+Ze
+ NSRfyhakPY4v5yUBi1fyIVIGcAbnak+GQIfsO8uDhzZt6DwshzHrnCbHTLQx6NTB
+ 4mvLjAdt7riBIl5y5n3tbtrZdpTgFhQxjLWTBpWIO0XKxqtBhw==
+ </security:Certificate>
+ </StartTLSTrustCredential>
+ <ConnectionPool minPoolSize="5" maxPoolSize="10" blockWaitTime="PT5S" expirationTime="PT10M"
+ validatePeriodically="true" validateTimerPeriod="PT15M" validateDN="dc=shibboleth,dc=net" validateFilter="(ou=people)" failFastInitialize="false" />
+ <Column columnName="homephone" attributeID="phonenumber" />
+ <ResultCacheBean>cache</ResultCacheBean>
+ </DataConnector>
+
+</AttributeResolver>
diff --git a/idp-schema/src/main/resources/schema/shibboleth-attribute-resolver.xsd b/idp-schema/src/main/resources/schema/shibboleth-attribute-resolver.xsd
index b79bc95..2f46dc1 100644
--- a/idp-schema/src/main/resources/schema/shibboleth-attribute-resolver.xsd
+++ b/idp-schema/src/main/resources/schema/shibboleth-attribute-resolver.xsd
@@ -1102,6 +1102,13 @@
<documentation>Name of the template engine defined within the application.</documentation>
</annotation>
</attribute>
+ <attribute name="executableSearchBuilderRef" type="string">
+ <annotation>
+ <documentation>
+ Reference to a Spring bean providing the ExecutableSearchBuilder implementation to use.
+ </documentation>
+ </annotation>
+ </attribute>
<attribute name="mappingStrategyRef" type="string">
<annotation>
<documentation>
@@ -1968,7 +1975,7 @@
<complexType name="SAML1StringNameIdentifier">
<annotation>
- <documentation>Defines a SAML 1 string encoder for a NameIdentifier.</documentation>
+ <documentation>DEPRECATED: Defines a SAML 1 string encoder for a NameIdentifier.</documentation>
</annotation>
<complexContent>
<extension base="resolver:BaseAttributeEncoderType">
@@ -1988,7 +1995,7 @@
<complexType name="SAML2StringNameID">
<annotation>
- <documentation>Defines a SAML 2 string encoder for a NameID.</documentation>
+ <documentation>DEPRECATED: Defines a SAML 2 string encoder for a NameID.</documentation>
</annotation>
<complexContent>
<extension base="resolver:BaseAttributeEncoderType">
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the commits
mailing list