aboutsummaryrefslogtreecommitdiff
path: root/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/config/PVPConfiguration.java
diff options
context:
space:
mode:
authorThomas Lenz <tlenz@iaik.tugraz.at>2015-07-02 07:26:30 +0200
committerThomas Lenz <tlenz@iaik.tugraz.at>2015-07-02 07:26:30 +0200
commit5bc01dab26425144a41dbece04b642fb963e1315 (patch)
tree543fe5f7b8d576c7e85ba711c1f9bf03d3dc699f /id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/config/PVPConfiguration.java
parent06e63a4fb89dd92583fc3e72e12750becdd6c8ef (diff)
downloadmoa-id-spss-5bc01dab26425144a41dbece04b642fb963e1315.tar.gz
moa-id-spss-5bc01dab26425144a41dbece04b642fb963e1315.tar.bz2
moa-id-spss-5bc01dab26425144a41dbece04b642fb963e1315.zip
devel
Diffstat (limited to 'id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/config/PVPConfiguration.java')
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/config/PVPConfiguration.java101
1 files changed, 46 insertions, 55 deletions
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/config/PVPConfiguration.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/config/PVPConfiguration.java
index 5c473f32d..ca95ff90c 100644
--- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/config/PVPConfiguration.java
+++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/config/PVPConfiguration.java
@@ -24,10 +24,12 @@ package at.gv.egovernment.moa.id.protocols.pvp2x.config;
import iaik.x509.X509Certificate;
+import java.io.IOException;
import java.net.URL;
import java.security.cert.CertificateException;
import java.util.ArrayList;
import java.util.List;
+import java.util.Map;
import java.util.Properties;
import java.util.jar.Attributes;
import java.util.jar.Manifest;
@@ -46,18 +48,16 @@ import org.opensaml.saml2.metadata.SurName;
import org.opensaml.saml2.metadata.TelephoneNumber;
import at.gv.egovernment.moa.id.commons.config.MOAIDConfigurationConstants;
-import at.gv.egovernment.moa.id.commons.db.dao.config.OAPVP2;
import at.gv.egovernment.moa.id.config.ConfigurationException;
import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProviderFactory;
import at.gv.egovernment.moa.id.config.auth.IOAAuthParameters;
-import at.gv.egovernment.moa.id.config.auth.OAAuthParameter;
+import at.gv.egovernment.moa.id.protocols.pvp2x.metadata.MOAMetadataProvider;
import at.gv.egovernment.moa.id.protocols.pvp2x.utils.SAML2Utils;
import at.gv.egovernment.moa.logging.Logger;
+import at.gv.egovernment.moa.util.Base64Utils;
import at.gv.egovernment.moa.util.FileUtils;
import at.gv.egovernment.moa.util.MiscUtil;
-//TODO!!!!!
-
public class PVPConfiguration {
private static PVPConfiguration instance;
@@ -116,6 +116,9 @@ public class PVPConfiguration {
props = AuthConfigurationProviderFactory.getInstance().getGeneralPVP2ProperiesConfig();
rootDir = AuthConfigurationProviderFactory.getInstance().getRootConfigFileDir();
+ //load PVP2X metadata for all active online applications
+ MOAMetadataProvider.getInstance();
+
} catch (ConfigurationException e) {
e.printStackTrace();
}
@@ -201,52 +204,39 @@ public class PVPConfiguration {
return AuthConfigurationProviderFactory.getInstance().getConfigurationWithKey(
MOAIDConfigurationConstants.GENERAL_PROTOCOLS_PVP2X_METADATA_SERVICENAMME) + moaIDVersion;
}
-
- //TODO:
- public String getTargetForSP(String sp) {
-
- try {
- OAAuthParameter oaParam = AuthConfigurationProviderFactory.getInstance().getOnlineApplicationParameter(sp);
-
- if (oaParam != null)
- return oaParam.getTarget();
-
- Logger.warn("OnlineApplication with ID "+ sp + " is not found.");
- return null;
-
- } catch (ConfigurationException e) {
- Logger.warn("OnlineApplication with ID "+ sp + " is not found.");
- return null;
- }
-
- }
-
public iaik.x509.X509Certificate getTrustEntityCertificate(String entityID) {
+
+ try {
+ Logger.trace("Load metadata signing certificate for online application " + entityID);
+ IOAAuthParameters oaParam = AuthConfigurationProviderFactory.getInstance().getOnlineApplicationParameter(entityID);
+ if (oaParam == null) {
+ Logger.info("Online Application with ID " + entityID + " not found!");
+ return null;
+ }
- try {
- IOAAuthParameters oaParam = AuthConfigurationProviderFactory.getInstance().getOnlineApplicationParameter(entityID);
-
- if (oaParam == null) {
- Logger.warn("Online Application with ID " + entityID + " not found!");
- return null;
- }
-
- OAPVP2 pvp2param = oaParam.getPVP2Parameter();
-
- if (pvp2param == null) {
- return null;
- }
-
- Logger.info("Load TrustEntityCertificate ("+entityID+") from Database.");
- return new X509Certificate(pvp2param.getCertificate());
+ String pvp2MetadataCertificateString =
+ oaParam.getConfigurationValue(MOAIDConfigurationConstants.SERVICE_PROTOCOLS_PVP2X_CERTIFICATE);
+ if (MiscUtil.isEmpty(pvp2MetadataCertificateString)) {
+ Logger.info("Online Application with ID " + entityID + " include not PVP2X metadata signing certificate!");
+ return null;
+
+ }
+
+ X509Certificate cert = new X509Certificate(Base64Utils.decode(pvp2MetadataCertificateString, false));
+ Logger.debug("Metadata signing certificate is loaded for ("+entityID+") is loaded.");
+ return cert;
} catch (CertificateException e) {
- Logger.warn("Signer certificate can not be loaded from session database!", e);
+ Logger.warn("Metadata signer certificate is not parsed.", e);
return null;
} catch (ConfigurationException e) {
- e.printStackTrace();
+ Logger.error("Configuration is not accessable.", e);
+ return null;
+
+ } catch (IOException e) {
+ Logger.warn("Metadata signer certificate is not decodeable.", e);
return null;
}
}
@@ -254,16 +244,16 @@ public class PVPConfiguration {
public List<ContactPerson> getIDPContacts() throws ConfigurationException {
List<ContactPerson> list = new ArrayList<ContactPerson>();
- Properties contacts = AuthConfigurationProviderFactory.getInstance().getConfigurationWithPrefix(
+ Map<String, String> contacts = AuthConfigurationProviderFactory.getInstance().getConfigurationWithPrefix(
MOAIDConfigurationConstants.GENERAL_PROTOCOLS_PVP2X_METADATA_CONTACT + ".");
ContactPerson person = SAML2Utils
.createSAMLObject(ContactPerson.class);
- String type = contacts.getProperty(IDP_CONTACT_TYPE);
+ String type = contacts.get(IDP_CONTACT_TYPE);
if (type == null) {
- Logger.error("IDP Contact with SurName " + contacts.getProperty(IDP_CONTACT_SURNAME)
+ Logger.error("IDP Contact with SurName " + contacts.get(IDP_CONTACT_SURNAME)
+ " has no type defined!");
}
@@ -287,13 +277,13 @@ public class PVPConfiguration {
}
if (enumType == null) {
- Logger.error("IDP Contact with SurName " + contacts.getProperty(IDP_CONTACT_SURNAME)
+ Logger.error("IDP Contact with SurName " + contacts.get(IDP_CONTACT_SURNAME)
+ " has invalid type defined: " + type);
}
person.setType(enumType);
- String givenName = contacts.getProperty(IDP_CONTACT_GIVENNAME);
+ String givenName = contacts.get(IDP_CONTACT_GIVENNAME);
if (givenName != null) {
GivenName name = SAML2Utils
@@ -302,7 +292,7 @@ public class PVPConfiguration {
person.setGivenName(name);
}
- String company = contacts.getProperty(IDP_CONTACT_COMPANY);
+ String company = contacts.get(IDP_CONTACT_COMPANY);
if (company != null) {
Company comp = SAML2Utils.createSAMLObject(Company.class);
@@ -310,7 +300,7 @@ public class PVPConfiguration {
person.setCompany(comp);
}
- String surname = contacts.getProperty(IDP_CONTACT_SURNAME);
+ String surname = contacts.get(IDP_CONTACT_SURNAME);
if (surname != null) {
SurName name = SAML2Utils.createSAMLObject(SurName.class);
@@ -318,7 +308,7 @@ public class PVPConfiguration {
person.setSurName(name);
}
- String phone = contacts.getProperty(IDP_CONTACT_PHONE);
+ String phone = contacts.get(IDP_CONTACT_PHONE);
if (phone != null) {
TelephoneNumber telePhone = SAML2Utils
.createSAMLObject(TelephoneNumber.class);
@@ -326,7 +316,7 @@ public class PVPConfiguration {
person.getTelephoneNumbers().add(telePhone);
}
- String mail = contacts.getProperty(IDP_CONTACT_MAIL);
+ String mail = contacts.get(IDP_CONTACT_MAIL);
if (mail != null) {
EmailAddress mailAddress = SAML2Utils
.createSAMLObject(EmailAddress.class);
@@ -341,12 +331,12 @@ public class PVPConfiguration {
public Organization getIDPOrganisation() throws ConfigurationException {
Organization org = SAML2Utils.createSAMLObject(Organization.class);
- Properties organisation = AuthConfigurationProviderFactory.getInstance().getConfigurationWithPrefix(
+ Map<String, String> organisation = AuthConfigurationProviderFactory.getInstance().getConfigurationWithPrefix(
MOAIDConfigurationConstants.GENERAL_PROTOCOLS_PVP2X_METADATA_ORG + ".");
- String org_name = organisation.getProperty(IDP_ORG_NAME);
- String org_dispname = organisation.getProperty(IDP_ORG_DISPNAME);
- String org_url = organisation.getProperty(IDP_ORG_URL);
+ String org_name = organisation.get(IDP_ORG_NAME);
+ String org_dispname = organisation.get(IDP_ORG_DISPNAME);
+ String org_url = organisation.get(IDP_ORG_URL);
if (org_name == null || org_dispname == null || org_url == null) {
return null;
@@ -373,6 +363,7 @@ public class PVPConfiguration {
private String parseMOAIDVersionFromManifest() {
try {
+ @SuppressWarnings("rawtypes")
Class clazz = PVPConfiguration.class;
String className = clazz.getSimpleName() + ".class";
String classPath = clazz.getResource(className).toString();