aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/at/knowcenter/wag/egov/egiz/ldap/api/LDAPAPIImpl.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/at/knowcenter/wag/egov/egiz/ldap/api/LDAPAPIImpl.java')
-rw-r--r--src/main/java/at/knowcenter/wag/egov/egiz/ldap/api/LDAPAPIImpl.java120
1 files changed, 70 insertions, 50 deletions
diff --git a/src/main/java/at/knowcenter/wag/egov/egiz/ldap/api/LDAPAPIImpl.java b/src/main/java/at/knowcenter/wag/egov/egiz/ldap/api/LDAPAPIImpl.java
index 96409f6..6f4ca72 100644
--- a/src/main/java/at/knowcenter/wag/egov/egiz/ldap/api/LDAPAPIImpl.java
+++ b/src/main/java/at/knowcenter/wag/egov/egiz/ldap/api/LDAPAPIImpl.java
@@ -10,97 +10,117 @@ import java.util.List;
import org.apache.log4j.Logger;
import at.knowcenter.wag.egov.egiz.cfg.SettingsReader;
-import at.knowcenter.wag.egov.egiz.exceptions.NormalizeException;
import at.knowcenter.wag.egov.egiz.exceptions.SettingNotFoundException;
import at.knowcenter.wag.egov.egiz.exceptions.SettingsException;
import at.knowcenter.wag.egov.egiz.ldap.client.LDAPClient;
import at.knowcenter.wag.egov.egiz.ldap.client.LDAPClientFactory;
import at.knowcenter.wag.egov.egiz.ldap.client.LDAPException;
+import at.knowcenter.wag.egov.egiz.ldap.client.LDAPIssuerNameFilter;
import at.knowcenter.wag.egov.egiz.ldap.client.LDAPMapping;
import at.knowcenter.wag.egov.egiz.sig.LDAPAPI;
-import at.knowcenter.wag.egov.egiz.sig.SignatureObject;
-import at.knowcenter.wag.egov.egiz.tools.Normalizer;
/**
* @author <a href="mailto:thomas.knall@iaik.tugraz.at">Thomas Knall</a>
*/
public class LDAPAPIImpl implements LDAPAPI {
- private final Logger log = Logger.getLogger(getClass());
-
+ private final Logger log = Logger.getLogger(this.getClass());
+
/**
* Prefix for specific entry in config properties file.
*/
- private static final String PROP_LDAP_PREFIX = "ldap_mapping";
+ private static final String PROP_LDAP_PREFIX = "ldap_mapping";
+
private static final String PROP_ISSUER_NAME_POSTFIX = "issuer_name";
- private static final String PROP_LDAP_URL_POSTFIX = "url";
+
+ private static final String PROP_LDAP_URL_POSTFIX = "url";
+
private static final String PROP_SERIAL_ATTR_POSTFIX = "serial_attr";
-
- private static final String LDAP_FACTORY_IDENTIFIER = "PDF-AS LDAP Support";
+
+ private static final String LDAP_FACTORY_IDENTIFIER = "PDF-AS LDAP Support";
+
private LDAPClientFactory ldapClientFactory;
+ private LDAPIssuerNameFilter ldapIssuerNameFilter;
+
protected LDAPAPIImpl() {
- try {
- SettingsReader settings = SettingsReader.getInstance();
-
- ldapClientFactory = LDAPClientFactory.getInstance(LDAP_FACTORY_IDENTIFIER);
- // configure normalization of issuer according to method
- // normalizeIssuer(String) of at.knowcenter.wag.egov.egiz.sig.SignatureObject
- ldapClientFactory.setWhiteSpaceRemoval(true);
- ldapClientFactory.setNormalizer(new Normalizer().getInstance());
-
- List mappingKeys = settings.getKeys(PROP_LDAP_PREFIX);
- if (mappingKeys != null) {
- Iterator it = mappingKeys.iterator();
- while (it.hasNext()) {
- String keyPrefix = PROP_LDAP_PREFIX + "." + (String) it.next() + ".";
- String issuerName = settings.getSetting(keyPrefix + PROP_ISSUER_NAME_POSTFIX);
- String ldapURL = settings.getSetting(keyPrefix + PROP_LDAP_URL_POSTFIX);
- String serialAttr = settings.getSetting(keyPrefix + PROP_SERIAL_ATTR_POSTFIX, null);
-
- LDAPMapping ldapMapping = new LDAPMapping(issuerName, ldapURL, serialAttr);
- ldapClientFactory.registerMapping(ldapMapping);
+ this.ldapClientFactory = null;
+ this.ldapIssuerNameFilter = null;
+ }
+
+ private void initializeFactoryImpl() {
+ if (this.ldapClientFactory == null) {
+ try {
+ SettingsReader settings = SettingsReader.getInstance();
+
+ this.ldapClientFactory = LDAPClientFactory.getInstance(LDAP_FACTORY_IDENTIFIER);
+ this.ldapClientFactory.setLDAPIssuerNameFilter(this.ldapIssuerNameFilter);
+
+ List mappingKeys = settings.getKeys(PROP_LDAP_PREFIX);
+ if (mappingKeys != null) {
+ Iterator it = mappingKeys.iterator();
+ while (it.hasNext()) {
+ String keyPrefix = PROP_LDAP_PREFIX + "." + (String) it.next() + ".";
+ String issuerName = settings.getSetting(keyPrefix + PROP_ISSUER_NAME_POSTFIX);
+ String ldapURL = settings.getSetting(keyPrefix + PROP_LDAP_URL_POSTFIX);
+ String serialAttr = settings.getSetting(keyPrefix + PROP_SERIAL_ATTR_POSTFIX,
+ null);
+
+ LDAPMapping ldapMapping = new LDAPMapping(issuerName, ldapURL, serialAttr);
+ this.ldapClientFactory.registerMapping(ldapMapping);
+ }
+ } else {
+ StringBuffer buffer = new StringBuffer();
+ buffer.append(PROP_LDAP_PREFIX).append(".foo.").append(PROP_ISSUER_NAME_POSTFIX)
+ .append(", ");
+ buffer.append(PROP_LDAP_PREFIX).append(".foo.").append(PROP_LDAP_URL_POSTFIX)
+ .append(", ");
+ buffer.append(PROP_LDAP_PREFIX).append(".foo.").append(PROP_SERIAL_ATTR_POSTFIX);
+ this.log.warn("There are no LDAP mappings (" + buffer.toString()
+ + ") declared within config file.");
}
- } else {
- StringBuffer buffer = new StringBuffer();
- buffer.append(PROP_LDAP_PREFIX).append(".foo.").append(PROP_ISSUER_NAME_POSTFIX).append(", ");
- buffer.append(PROP_LDAP_PREFIX).append(".foo.").append(PROP_LDAP_URL_POSTFIX).append(", ");
- buffer.append(PROP_LDAP_PREFIX).append(".foo.").append(PROP_SERIAL_ATTR_POSTFIX);
- log.warn("There are no LDAP mappings (" + buffer.toString() + ") declared within config file.");
+
+ } catch (SettingsException e) {
+ this.log.error(e);
+ } catch (SettingNotFoundException e) {
+ this.log.error(e);
+ } catch (LDAPException e) {
+ this.log.error(e);
}
-
- } catch (SettingsException e) {
- log.error(e);
- } catch (SettingNotFoundException e) {
- log.error(e);
- } catch (LDAPException e) {
- log.error(e);
- } catch (NormalizeException e) {
- log.error(e);
- };
+ ;
+ }
}
-
+
public String getURL(String issuer) {
+ this.initializeFactoryImpl();
String url = null;
try {
- LDAPClient client = ldapClientFactory.createClient(issuer);
+ LDAPClient client = this.ldapClientFactory.createClient(issuer);
url = client.getUrl().toString();
} catch (LDAPException e) {
- log.error(e);
+ this.log.error(e);
}
return url;
}
public byte[] loadBase64CertificateFromLDAP(String serialNumber, String issuer) {
+ this.initializeFactoryImpl();
byte[] base64CertData = null;
try {
- LDAPClient client = ldapClientFactory.createClient(issuer);
+ LDAPClient client = this.ldapClientFactory.createClient(issuer);
X509Certificate x509certificate = client.retrieveCertificate(new BigInteger(serialNumber));
base64CertData = Util.Base64Encode(x509certificate.toByteArray());
} catch (LDAPException e) {
- log.error(e);
+ this.log.error(e);
}
return base64CertData;
}
+ public void setIssuerNameFilter(LDAPIssuerNameFilter filter) throws LDAPAPIException {
+ if (this.ldapClientFactory != null) {
+ throw new LDAPAPIException("LDAPIssuerNameFilter must be applied before mappings are registered.");
+ }
+ this.ldapIssuerNameFilter = filter;
+ }
+
}