use of java.net.MalformedURLException in project OpenAM by OpenRock.
the class ToolServiceManager method loadResources.
/**
* Sets the given resource path(s).
*/
private void loadResources(final String id) {
ToolServiceClassLoader cl = getServiceClassLoader(id);
try {
List<String> resBundles = registry.getResourceBundles(id);
String path = registry.getServiceHome(id).getFile();
for (String resource : resBundles) {
String urlPath = path + resource;
File f = new File(urlPath);
URL rpath = IOUtils.convertFileToURL(f);
cl.addURLToPath(rpath);
}
} catch (MalformedURLException re) {
Debug.getInstance(ToolConstants.DEBUG_NAME).error("ToolServiceManager.loadResources : " + "Malformed url exception", re);
} catch (IOException rie) {
Debug.getInstance(ToolConstants.DEBUG_NAME).error("ToolServiceManager.loadResources : " + "URL access i/o error", rie);
} catch (Exception ex) {
Debug.getInstance(ToolConstants.DEBUG_NAME).error("ToolServiceManager.loadResources : " + "Exception occured in loading resources", ex);
}
}
use of java.net.MalformedURLException in project OpenAM by OpenRock.
the class SAMLServiceManager method setValues.
// implemented as synchronized to preserve the event handling order.
private static synchronized void setValues() {
if (ci == null) {
// set the values as default
Map newMap = new HashMap();
newMap.put(SAMLConstants.ARTIFACT_TIMEOUT_NAME, new Integer(SAMLConstants.ARTIFACT_TIMEOUT_DEFAULT));
newMap.put(SAMLConstants.ASSERTION_TIMEOUT_NAME, new Integer(SAMLConstants.ASSERTION_TIMEOUT_DEFAULT));
newMap.put(SAMLConstants.ARTIFACT_NAME, SAMLConstants.ARTIFACT_NAME_DEFAULT);
newMap.put(SAMLConstants.TARGET_SPECIFIER, SAMLConstants.TARGET_SPECIFIER_DEFAULT);
newMap.put(SAMLConstants.ASSERTION_MAX_NUMBER_NAME, new Integer(SAMLConstants.ASSERTION_MAX_NUMBER_DEFAULT));
newMap.put(SAMLConstants.CLEANUP_INTERVAL_NAME, new Integer(SAMLConstants.CLEANUP_INTERVAL_DEFAULT));
newMap.put(SAMLConstants.SIGN_REQUEST, Boolean.valueOf(SAMLConstants.SIGN_REQUEST_DEFAULT));
newMap.put(SAMLConstants.SIGN_RESPONSE, Boolean.valueOf(SAMLConstants.SIGN_RESPONSE_DEFAULT));
newMap.put(SAMLConstants.SIGN_ASSERTION, Boolean.valueOf(SAMLConstants.SIGN_ASSERTION_DEFAULT));
map = newMap;
} else {
// set the values
try {
Map newMap = new HashMap();
Map attrs = ci.getConfiguration(null, null);
// retrieve not before time skew period
Set values = (Set) attrs.get(SAMLConstants.NOTBEFORE_TIMESKEW_NAME);
int value = SAMLConstants.NOTBEFORE_TIMESKEW_DEFAULT;
if ((values != null) && (values.size() == 1)) {
try {
value = Integer.parseInt((String) values.iterator().next());
} catch (NumberFormatException nfe) {
SAMLUtilsCommon.debug.error("SAMLServiceManager:invalid" + " not before time skew period value: " + value + ", using default.", nfe);
value = SAMLConstants.NOTBEFORE_TIMESKEW_DEFAULT;
}
if (value <= 0) {
SAMLUtilsCommon.debug.error("SAMLServiceManager:invalid" + " not before time skew period value=" + value + ", using default.");
value = SAMLConstants.NOTBEFORE_TIMESKEW_DEFAULT;
}
}
Integer newValue = new Integer(value);
newMap.put(SAMLConstants.NOTBEFORE_TIMESKEW_NAME, newValue);
// retrieve artifact timeout
values = (Set) attrs.get(SAMLConstants.ARTIFACT_TIMEOUT_NAME);
value = SAMLConstants.ARTIFACT_TIMEOUT_DEFAULT;
if ((values != null) && (values.size() == 1)) {
try {
value = Integer.parseInt((String) values.iterator().next());
} catch (NumberFormatException nfe) {
SAMLUtilsCommon.debug.error("SAMLServiceManager:invalid" + " artifact timeout value: " + value + ", using default.", nfe);
value = SAMLConstants.ARTIFACT_TIMEOUT_DEFAULT;
}
if (value <= 0) {
SAMLUtilsCommon.debug.error("SAMLServiceManager:invalid" + " artifact timeout value=" + value + ", using default.");
value = SAMLConstants.ARTIFACT_TIMEOUT_DEFAULT;
}
}
newValue = new Integer(value);
newMap.put(SAMLConstants.ARTIFACT_TIMEOUT_NAME, newValue);
// retrieve assertion timeout
values = (Set) attrs.get(SAMLConstants.ASSERTION_TIMEOUT_NAME);
value = SAMLConstants.ASSERTION_TIMEOUT_DEFAULT;
if ((values != null) && (values.size() == 1)) {
try {
value = Integer.parseInt((String) values.iterator().next());
} catch (NumberFormatException nfe) {
SAMLUtilsCommon.debug.error("SAMLServiceManager:invalid" + " assertion timeout value: " + value + ", using default.", nfe);
value = SAMLConstants.ASSERTION_TIMEOUT_DEFAULT;
}
if (value <= 0) {
SAMLUtilsCommon.debug.error("SAMLServiceManager:invalid" + " assertion timeout value=" + value + ", using default.");
value = SAMLConstants.ASSERTION_TIMEOUT_DEFAULT;
}
}
newValue = new Integer(value);
newMap.put(SAMLConstants.ASSERTION_TIMEOUT_NAME, newValue);
values = (Set) attrs.get(SAMLConstants.ASSERTION_MAX_NUMBER_NAME);
value = SAMLConstants.ASSERTION_MAX_NUMBER_DEFAULT;
if ((values != null) && (values.size() == 1)) {
try {
value = Integer.parseInt((String) values.iterator().next());
} catch (NumberFormatException nfe) {
SAMLUtilsCommon.debug.error("SAMLServiceManager:invalid" + " assertion max number value: " + value + ", using default.", nfe);
value = SAMLConstants.ASSERTION_MAX_NUMBER_DEFAULT;
}
if (value < 0) {
SAMLUtilsCommon.debug.error("SAMLServiceManager:invalid" + " assertion max number value=" + value + ", using default.");
value = SAMLConstants.ASSERTION_MAX_NUMBER_DEFAULT;
}
}
newValue = new Integer(value);
newMap.put(SAMLConstants.ASSERTION_MAX_NUMBER_NAME, newValue);
values = (Set) attrs.get(SAMLConstants.CLEANUP_INTERVAL_NAME);
value = SAMLConstants.CLEANUP_INTERVAL_DEFAULT;
if ((values != null) && (values.size() == 1)) {
try {
value = Integer.parseInt((String) values.iterator().next());
} catch (NumberFormatException nfe) {
SAMLUtilsCommon.debug.error("SAMLServiceManager:invalid" + " cleanup interval value: " + value + ", using default.", nfe);
value = SAMLConstants.CLEANUP_INTERVAL_DEFAULT;
}
if (value <= 0) {
SAMLUtilsCommon.debug.error("SAMLServiceManager:invalid" + " cleanup interval value=" + value + ", using default.");
value = SAMLConstants.CLEANUP_INTERVAL_DEFAULT;
}
}
newValue = new Integer(value);
newMap.put(SAMLConstants.CLEANUP_INTERVAL_NAME, newValue);
// retrieve the Artifact Name from the SAML saml config file
String artifactName = CollectionHelper.getMapAttr(attrs, SAMLConstants.ARTIFACT_NAME, SAMLConstants.ARTIFACT_NAME_DEFAULT);
newMap.put(SAMLConstants.ARTIFACT_NAME, artifactName);
values = (Set) attrs.get(SAMLConstants.NAME_ID_FORMAT_MAP);
Map nameIDFormatAttrMap = null;
if ((values != null) && (!values.isEmpty())) {
for (Iterator iter = values.iterator(); iter.hasNext(); ) {
String str = (String) iter.next();
int index = str.indexOf("=");
if (index != -1) {
String nameIDFormat = str.substring(0, index).trim();
String attrName = str.substring(index + 1).trim();
if ((nameIDFormat.length() != 0) && (attrName.length() != 0)) {
if (nameIDFormatAttrMap == null) {
nameIDFormatAttrMap = new HashMap();
}
nameIDFormatAttrMap.put(nameIDFormat, attrName);
}
}
}
newMap.put(SAMLConstants.NAME_ID_FORMAT_MAP, nameIDFormatAttrMap);
}
values = (Set) attrs.get(SAMLConstants.ATTRIBUTE_MAP);
Map attrMap = null;
if ((values != null) && (!values.isEmpty())) {
for (Iterator iter = values.iterator(); iter.hasNext(); ) {
String str = (String) iter.next();
int index = str.indexOf("=");
if (index != -1) {
String samlAttr = str.substring(0, index).trim();
String localAttr = str.substring(index + 1).trim();
if ((samlAttr.length() != 0) && (localAttr.length() != 0)) {
if (attrMap == null) {
attrMap = new HashMap();
}
attrMap.put(samlAttr, localAttr);
}
}
}
newMap.put(SAMLConstants.ATTRIBUTE_MAP, attrMap);
}
// get the targets which accept POST
Set targets = (Set) attrs.get(SAMLConstants.POST_TO_TARGET_URLS);
if ((targets == null) || (targets.size() == 0)) {
SAMLUtilsCommon.debug.message("SAMLServiceManager: No POST " + "to targets found");
} else {
Set targetsNoProtocol = Collections.synchronizedSet(new HashSet());
// strip off protocol from the URL
Iterator it = targets.iterator();
String targetString = null;
while (it.hasNext()) {
try {
targetString = (String) it.next();
URL url = new URL(targetString);
String targetNoProtocol = new StringBuffer(url.getHost().toLowerCase()).append(":").append(String.valueOf(url.getPort())).append("/").append(url.getPath()).toString();
targetsNoProtocol.add(targetNoProtocol);
} catch (MalformedURLException me) {
SAMLUtilsCommon.debug.error("SAMLServiceManager: " + "Malformed Url in the POST to target " + "list, skipping entry:" + targetString);
}
}
if (targetsNoProtocol.size() > 0) {
newMap.put(SAMLConstants.POST_TO_TARGET_URLS, targetsNoProtocol);
} else {
SAMLUtilsCommon.debug.error("SAMLServiceManager: All" + " POST to target URLs malformed");
}
}
// retrieve site id and site issuer name list
// get my server host and port info
serverProtocol = SystemConfigurationUtil.getProperty(SAMLConstants.SERVER_PROTOCOL);
serverHost = SystemConfigurationUtil.getProperty(SAMLConstants.SERVER_HOST);
serverPort = SystemConfigurationUtil.getProperty(SAMLConstants.SERVER_PORT);
serverURI = SystemConfigurationUtil.getProperty(SAMLConstants.SERVER_URI);
String legacyId = serverProtocol + "://" + serverHost + ":" + serverPort;
serverURL = legacyId + serverURI;
String sb = serverURL;
Map siteidMap = new HashMap();
Map issuerNameMap = new HashMap();
Map instanceMap = new HashMap();
Set siteIDNameList = (Set) attrs.get(SAMLConstants.SITE_ID_ISSUER_NAME_LIST);
if (siteIDNameList.size() == 0) {
SAMLUtilsCommon.debug.error("SAMLServiceManager: No Site ID" + " or Issuer Name in the SAML service config.");
} else {
String entry = null;
StringTokenizer tok1 = null;
String instanceID = null;
String siteID = null;
String issuerName = null;
String element = null;
String key = null;
Iterator iter = siteIDNameList.iterator();
while (iter.hasNext()) {
entry = (String) iter.next();
// reset
instanceID = null;
siteID = null;
issuerName = null;
tok1 = new StringTokenizer(entry, "|");
while (tok1.hasMoreElements()) {
element = tok1.nextToken();
int pos = -1;
if ((pos = element.indexOf("=")) == -1) {
SAMLUtilsCommon.debug.error("SAMLSManager: " + "wrong format: " + element);
break;
}
int nextpos = pos + 1;
if (nextpos >= element.length()) {
SAMLUtilsCommon.debug.error("SAMLSManager: " + "wrong format: " + element);
break;
}
key = element.substring(0, pos);
if (key.equalsIgnoreCase(SAMLConstants.INSTANCEID)) {
instanceID = element.substring(nextpos);
} else if (key.equalsIgnoreCase(SAMLConstants.SITEID)) {
siteID = element.substring(nextpos);
} else if (key.equalsIgnoreCase(SAMLConstants.ISSUERNAME)) {
issuerName = element.substring(nextpos);
} else {
SAMLUtilsCommon.debug.error("SAMLSManager: " + "wrong format: " + element);
}
}
if (instanceID == null) {
SAMLUtilsCommon.debug.error("SAMLServiceManager: " + "missing instanceID:" + entry);
break;
}
boolean thisSite = instanceID.equalsIgnoreCase(sb) || instanceID.equalsIgnoreCase(legacyId);
if (siteID != null) {
siteID = SAMLUtilsCommon.getDecodedSourceIDString(siteID);
if (siteID != null) {
siteidMap.put(instanceID, siteID);
instanceMap.put(siteID, instanceID);
if (SAMLUtilsCommon.debug.messageEnabled()) {
SAMLUtilsCommon.debug.message("SAMLSMangr: " + "add instanceID: " + instanceID + ", serverURL=" + sb + ", legacy serverURL=" + legacyId + ", isthissite=" + thisSite);
}
if (thisSite) {
newMap.put(SAMLConstants.SITE_ID, siteID);
}
}
}
if (issuerName != null) {
issuerNameMap.put(instanceID, issuerName);
if (thisSite) {
newMap.put(SAMLConstants.ISSUER_NAME, issuerName);
}
}
}
// end of looping all the entries in the list
}
// set default site id
if (!siteidMap.containsKey(sb) && !siteidMap.containsKey(legacyId)) {
String siteID = SAMLSiteID.generateSourceID(sb);
if (SAMLUtilsCommon.debug.warningEnabled()) {
SAMLUtilsCommon.debug.warning("SAMLSManager: site " + sb + " not configured, create new " + siteID);
}
if (siteID != null) {
siteID = SAMLUtilsCommon.getDecodedSourceIDString(siteID);
if (siteID != null) {
siteidMap.put(sb, siteID);
instanceMap.put(siteID, sb);
newMap.put(SAMLConstants.SITE_ID, siteID);
} else {
SAMLUtilsCommon.debug.error("Missing Site ID.");
}
}
}
// set default issuer name
if (!issuerNameMap.containsKey(sb) && !issuerNameMap.containsKey(legacyId)) {
if (SAMLUtilsCommon.debug.warningEnabled()) {
SAMLUtilsCommon.debug.warning("SAMLSManager:issuer for " + sb + " not configured, set to " + sb);
}
issuerNameMap.put(sb, sb);
newMap.put(SAMLConstants.ISSUER_NAME, sb);
}
newMap.put(SAMLConstants.SITE_ID_LIST, siteidMap);
newMap.put(SAMLConstants.INSTANCE_LIST, instanceMap);
newMap.put(SAMLConstants.ISSUER_NAME_LIST, issuerNameMap);
Boolean signRequest = Boolean.valueOf(CollectionHelper.getMapAttr(attrs, SAMLConstants.SIGN_REQUEST, SAMLConstants.SIGN_REQUEST_DEFAULT));
newMap.put(SAMLConstants.SIGN_REQUEST, signRequest);
Boolean signResponse = Boolean.valueOf(CollectionHelper.getMapAttr(attrs, SAMLConstants.SIGN_RESPONSE, SAMLConstants.SIGN_RESPONSE_DEFAULT));
newMap.put(SAMLConstants.SIGN_RESPONSE, signResponse);
Boolean signAssertion = Boolean.valueOf(CollectionHelper.getMapAttr(attrs, SAMLConstants.SIGN_ASSERTION, SAMLConstants.SIGN_ASSERTION_DEFAULT));
newMap.put(SAMLConstants.SIGN_ASSERTION, signAssertion);
//retrieve target name
String targetName = CollectionHelper.getMapAttr(attrs, SAMLConstants.TARGET_SPECIFIER, SAMLConstants.TARGET_SPECIFIER_DEFAULT);
newMap.put(SAMLConstants.TARGET_SPECIFIER, targetName);
//retrieve the partner URL list
Set soapRevList = Collections.synchronizedSet(new HashSet());
soapRevList = (Set) attrs.get(SAMLConstants.PARTNER_URLS);
if (soapRevList.size() == 0) {
if (SAMLUtilsCommon.debug.messageEnabled()) {
SAMLUtilsCommon.debug.message("SAMLServiceManager: " + "No entry in partner url config!");
}
} else {
Set _Sites = Collections.synchronizedSet(new HashSet());
Map _Soaps = Collections.synchronizedMap(new HashMap());
Object[] soapObjects = soapRevList.toArray();
int size = soapObjects.length;
String e = null;
String element = null;
for (int i = 0; i < size; i++) {
String _siteID = null;
String _samlUrl = null;
String postUrl = null;
String host = null;
int port = -1;
String _destID = null;
String _soapRevUrl = null;
String _authType = null;
String _user = null;
String basic_auth_user = null;
String basic_auth_passwd = null;
String _certAlias = null;
String preferVersion = null;
PartnerAccountMapper _partnerAccountMapper = null;
SiteAttributeMapper _siteAttributeMapper = null;
PartnerSiteAttributeMapper _partnerSiteAttributeMapper = null;
ConsumerSiteAttributeMapper consumerSiteAttrMapper = null;
NameIdentifierMapper niMapper = null;
AttributeMapper attrMapper = null;
ActionMapper actionMapper = null;
String _issuer = null;
Set hostSet = null;
Set origHostSet = null;
e = (String) soapObjects[i];
// retrieve the trusted server list
if (e.toUpperCase().indexOf(SAMLConstants.SOURCEID) == -1) {
SAMLUtilsCommon.debug.error("Ignore this trusted " + "site since SourceID is absent:" + e);
continue;
}
StringTokenizer tok1 = new StringTokenizer(e, "|");
while (tok1.hasMoreElements()) {
// break on "|"
element = tok1.nextToken();
if (SAMLUtilsCommon.debug.messageEnabled()) {
SAMLUtilsCommon.debug.message("SAMLSManager:" + " PartnerUrl List:" + element);
}
//manually break on "=" since sourceid may contain "="
int pos = -1;
//ignore the attribute which not include "="
if ((pos = element.indexOf("=")) == -1) {
SAMLUtilsCommon.debug.error("SAMLSManager:" + " illegal format of PartnerUrl:" + element);
break;
}
int nextpos = pos + 1;
//ignore the attribute which is like "SOAPUrl="
if (nextpos >= element.length()) {
break;
}
String key = element.substring(0, pos);
if (key.equalsIgnoreCase(SAMLConstants.SOURCEID)) {
_destID = SAMLUtilsCommon.getDecodedSourceIDString(element.substring(nextpos));
} else if (key.equalsIgnoreCase(SAMLConstants.TARGET)) {
_siteID = element.substring(nextpos);
} else if (key.equalsIgnoreCase(SAMLConstants.SAMLURL)) {
_samlUrl = element.substring(nextpos).trim();
} else if (key.equalsIgnoreCase(SAMLConstants.POSTURL)) {
postUrl = element.substring(nextpos).trim();
} else if (key.equalsIgnoreCase(SAMLConstants.SOAPUrl)) {
_soapRevUrl = element.substring(nextpos).trim();
} else if (key.equalsIgnoreCase(SAMLConstants.AUTHTYPE)) {
_authType = element.substring(nextpos);
if (SAMLUtilsCommon.debug.messageEnabled()) {
SAMLUtilsCommon.debug.message("authtype =" + _authType);
}
} else if (key.equalsIgnoreCase(SAMLConstants.UID)) {
_user = element.substring(nextpos);
if (SAMLUtilsCommon.debug.messageEnabled()) {
SAMLUtilsCommon.debug.message("user = " + _user);
}
} else if (key.equalsIgnoreCase(SAMLConstants.AUTH_UID)) {
basic_auth_user = element.substring(nextpos);
if (SAMLUtilsCommon.debug.messageEnabled()) {
SAMLUtilsCommon.debug.message("basic auth user=" + basic_auth_user);
}
} else if (key.equalsIgnoreCase(SAMLConstants.AUTH_PASSWORD)) {
basic_auth_passwd = SAMLUtilsCommon.decodePassword(element.substring(nextpos));
} else if (key.equalsIgnoreCase(SAMLConstants.ACCOUNTMAPPER)) {
try {
Object temp = Class.forName(element.substring(nextpos)).newInstance();
if (temp instanceof PartnerAccountMapper) {
_partnerAccountMapper = (PartnerAccountMapper) temp;
} else {
SAMLUtilsCommon.debug.error("SAMLServiceManager:Invalid account " + "mapper");
}
} catch (InstantiationException ie) {
SAMLUtilsCommon.debug.error("SAMLSManager:" + ie);
} catch (IllegalAccessException ae) {
SAMLUtilsCommon.debug.error("SAMLSManager:" + ae);
} catch (ClassNotFoundException ce) {
SAMLUtilsCommon.debug.error("SAMLSManager:" + ce);
_partnerAccountMapper = null;
}
} else if (key.equalsIgnoreCase(SAMLConstants.PARTNERACCOUNTMAPPER)) {
// for backward compatibility
try {
_partnerAccountMapper = (PartnerAccountMapper) Class.forName(element.substring(nextpos)).newInstance();
} catch (InstantiationException ie) {
SAMLUtilsCommon.debug.error("SAMLSManager:", ie);
} catch (IllegalAccessException ae) {
SAMLUtilsCommon.debug.error("SAMLSManager:", ae);
} catch (ClassNotFoundException ce) {
SAMLUtilsCommon.debug.error("SAMLSManager:", ce);
_partnerAccountMapper = null;
}
} else if (key.equalsIgnoreCase(SAMLConstants.CERTALIAS)) {
_certAlias = element.substring(nextpos);
if (SAMLUtilsCommon.debug.messageEnabled()) {
SAMLUtilsCommon.debug.message("certAlias = " + _certAlias);
}
} else if (key.equalsIgnoreCase(SAMLConstants.SITEATTRIBUTEMAPPER)) {
try {
Object temp = Class.forName(element.substring(nextpos)).newInstance();
if (temp instanceof SiteAttributeMapper) {
_siteAttributeMapper = (SiteAttributeMapper) temp;
} else if (temp instanceof PartnerSiteAttributeMapper) {
_partnerSiteAttributeMapper = (PartnerSiteAttributeMapper) temp;
} else if (temp instanceof ConsumerSiteAttributeMapper) {
consumerSiteAttrMapper = (ConsumerSiteAttributeMapper) temp;
} else {
SAMLUtilsCommon.debug.error("SAMLServiceManager:Invalid site " + "attribute mapper");
}
} catch (InstantiationException ie) {
SAMLUtilsCommon.debug.error("SAMLSManager:" + ie);
} catch (IllegalAccessException ae) {
SAMLUtilsCommon.debug.error("SAMLSManager:" + ae);
} catch (ClassNotFoundException ce) {
SAMLUtilsCommon.debug.error("SAMLSManager:" + ce);
_siteAttributeMapper = null;
}
} else if (key.equalsIgnoreCase(SAMLConstants.PARTNERSITEATTRIBUTEMAPPER)) {
try {
Object temp = Class.forName(element.substring(nextpos)).newInstance();
if (temp instanceof PartnerSiteAttributeMapper) {
_partnerSiteAttributeMapper = (PartnerSiteAttributeMapper) temp;
} else if (temp instanceof ConsumerSiteAttributeMapper) {
consumerSiteAttrMapper = (ConsumerSiteAttributeMapper) temp;
} else {
SAMLUtilsCommon.debug.error("SAMLServiceManager:Invalid site " + "partner attribute mapper");
}
} catch (InstantiationException ie) {
SAMLUtilsCommon.debug.error("SAMLSManager:", ie);
} catch (IllegalAccessException ae) {
SAMLUtilsCommon.debug.error("SAMLSManager:", ae);
} catch (ClassNotFoundException ce) {
SAMLUtilsCommon.debug.error("SAMLSManager:", ce);
_partnerSiteAttributeMapper = null;
}
} else if (key.equalsIgnoreCase(SAMLConstants.NAMEIDENTIFIERMAPPER)) {
try {
niMapper = (NameIdentifierMapper) Class.forName(element.substring(nextpos)).newInstance();
} catch (Exception ex) {
SAMLUtilsCommon.debug.error("SAMLSManager:", ex);
}
} else if (key.equalsIgnoreCase(SAMLConstants.ATTRIBUTEMAPPER)) {
try {
attrMapper = (AttributeMapper) Class.forName(element.substring(nextpos)).newInstance();
} catch (Exception ex) {
SAMLUtilsCommon.debug.error("SAMLSManager:" + ex);
}
} else if (key.equalsIgnoreCase(SAMLConstants.ACTIONMAPPER)) {
try {
actionMapper = (ActionMapper) Class.forName(element.substring(nextpos)).newInstance();
} catch (Exception ex) {
SAMLUtilsCommon.debug.error("SAMLSManager:" + ex);
}
} else if (key.equalsIgnoreCase(SAMLConstants.ISSUER)) {
_issuer = element.substring(nextpos).trim();
if (SAMLUtilsCommon.debug.messageEnabled()) {
SAMLUtilsCommon.debug.message("issuer = " + _issuer);
}
} else if (key.equalsIgnoreCase(SAMLConstants.HOST_LIST)) {
origHostSet = new HashSet();
hostSet = new HashSet();
/* calling InetAddress.getAllByName here has
two purposes:
- emmit any errors if there is any
- call the getAllByName method to init
the jvm caching
*/
StringTokenizer st = new StringTokenizer(element.substring(nextpos), ",");
InetAddress[] addr = null;
while (st.hasMoreTokens()) {
String token = st.nextToken().trim();
try {
addr = InetAddress.getAllByName(token);
for (int m = 0, length = addr.length; m < length; m++) {
hostSet.add(addr[m].getHostAddress());
}
} catch (Exception ne) {
if (SAMLUtilsCommon.debug.warningEnabled()) {
SAMLUtilsCommon.debug.warning("SAML Service" + " Manager: possible wrong " + "hostname in the host list.");
}
}
//add here anyways, since
// it could be an alias name too
hostSet.add(token);
origHostSet.add(token);
}
if (SAMLUtilsCommon.debug.messageEnabled()) {
SAMLUtilsCommon.debug.message("hostSet = " + hostSet);
}
} else if (key.equalsIgnoreCase(SAMLConstants.VERSION)) {
preferVersion = element.substring(nextpos);
}
}
//provide default auth type
if (_authType == null) {
_authType = SAMLConstants.NOAUTH;
}
// provide default AccountMapper
if (_partnerAccountMapper == null) {
try {
_partnerAccountMapper = (PartnerAccountMapper) Class.forName(DEFAULT_PARTNER_ACCOUNT_MAPPER).newInstance();
} catch (Exception ex0) {
// ignore
}
}
// provide default AttributeMapper
if (attrMapper == null) {
attrMapper = new DefaultAttributeMapper();
}
// default version
if (preferVersion == null || preferVersion.length() == 0) {
try {
preferVersion = SystemConfigurationUtil.getProperty(SAMLConstants.SAML_PROTOCOL_VERSION).trim();
} catch (Exception pe) {
preferVersion = SAMLConstants.PROTOCOL_VERSION_1_0;
}
}
// create truseted server set
if (_destID == null || _destID.length() == 0) {
SAMLUtilsCommon.debug.error("Ignore this trusted " + "site since SourceID is misconfigured: " + e);
} else {
if (_siteID == null || _siteID.length() == 0 || ((_samlUrl == null || _samlUrl.length() == 0) && (postUrl == null || postUrl.length() == 0))) {
SAMLUtilsCommon.debug.warning("Target or both" + " SAMLUrl and POSTUrl are misconfigured:" + e);
}
if (_siteID != null && _siteID.length() != 0) {
StringTokenizer tok2 = new StringTokenizer(_siteID, ",");
while (tok2.hasMoreElements()) {
String el = tok2.nextToken();
if (SAMLUtilsCommon.debug.messageEnabled()) {
SAMLUtilsCommon.debug.message("SAMLServiceManager:target= " + el);
}
// break the target url to host and port
StringTokenizer pt = new StringTokenizer(el, ":");
if (pt.countTokens() == 2) {
host = pt.nextToken().trim();
port = Integer.parseInt(pt.nextToken().trim());
} else {
host = el;
port = -1;
}
}
SiteEntry server = new SiteEntry(host, port, _destID, _samlUrl, postUrl, preferVersion);
_Sites.add(server);
}
// create the soap receiver map
SOAPEntry server = new SOAPEntry(_destID, _soapRevUrl, _authType, _user, basic_auth_user, basic_auth_passwd, _certAlias, _partnerAccountMapper, _siteAttributeMapper, _partnerSiteAttributeMapper, consumerSiteAttrMapper, niMapper, attrMapper, actionMapper, _issuer, origHostSet, preferVersion);
_Soaps.put(_destID, server);
if (_issuer != null) {
_Soaps.put(_issuer, server);
}
}
}
newMap.put(SAMLConstants.TRUSTED_SERVER_LIST, _Sites);
newMap.put(SAMLConstants.PARTNER_URLS, _Soaps);
}
map = newMap;
} catch (Exception e) {
SAMLUtilsCommon.debug.error("SAMLServiceManager.setValues:" + " Exception:", e);
}
}
}
use of java.net.MalformedURLException in project OpenAM by OpenRock.
the class SAMLUtils method equalURL.
/**
* Compares two URLs to see if they are equal. Two URLs are equal if
* they have same protocol, host, port and path (case ignored).
* Note : the method is provided to avoid URL.equals() call which requires
* name lookup. Name lookup is a blocking operation and very expensive
* if the hostname could not be resolved.
*
* @return true if the URLs are equal, false otherwise.
*/
private static boolean equalURL(String url1, String url2) {
try {
URL u1 = new URL(url1);
URL u2 = new URL(url2);
int port1 = u1.getPort();
if (port1 == -1) {
port1 = u1.getDefaultPort();
}
int port2 = u2.getPort();
if (port2 == -1) {
port2 = u2.getDefaultPort();
}
if ((u1.getProtocol().equalsIgnoreCase(u2.getProtocol())) && (u1.getHost().equalsIgnoreCase(u2.getHost())) && (port1 == port2) && (u1.getPath().equalsIgnoreCase(u2.getPath()))) {
return true;
} else {
return false;
}
} catch (MalformedURLException m) {
debug.message("Error in SAMLUtils.equalURL", m);
return false;
}
}
use of java.net.MalformedURLException in project OpenAM by OpenRock.
the class IDPSSOUtil method getACSurl.
/**
* Returns the assertion consumer service (ACS) URL for the entity.
* @param entityId entity ID of provider
* @param realm realm of the provider
* @param wreply the ACSURL supplied by the requestor. If supplied, this is
* checked against the URLs registered for the provider.
* @return assertion consumer service (ACS) URL for the entity.
*/
public static String getACSurl(String entityId, String realm, String wreply) throws WSFederationMetaException {
WSFederationMetaManager metaManager = WSFederationUtils.getMetaManager();
FederationElement sp = metaManager.getEntityDescriptor(realm, entityId);
if (wreply == null) {
// Get first ACS URL for this SP
return metaManager.getTokenIssuerEndpoint(sp);
} else {
// Just return first TokenIssuerEndpoint in the Federation
for (Object o : sp.getAny()) {
if (o instanceof TokenIssuerEndpointElement) {
try {
URL replyUrl = new URL(wreply);
URL thisUrl = new URL(((TokenIssuerEndpointElement) o).getAddress().getValue());
if (replyUrl.equals(thisUrl))
return wreply;
} catch (MalformedURLException mue) {
return null;
}
}
}
}
return null;
}
use of java.net.MalformedURLException in project OpenAM by OpenRock.
the class RedirectUrlValidator method isRedirectUrlValid.
/**
* Validates the provided redirect URL against the collection of valid goto URL domains found based on the
* configuration info.
*
* @param url The URL that needs to be validated. May be null.
* @param configInfo The necessary information about the configuration to determine the collection of valid goto
* URL domains. May not be null.
* @return <code>true</code> if the provided URL is valid, <code>false</code> otherwise.
*/
public boolean isRedirectUrlValid(final String url, final T configInfo) {
if (url == null || url.isEmpty()) {
return false;
}
final Collection<String> patterns = domainExtractor.extractValidDomains(configInfo);
if (DEBUG.messageEnabled()) {
DEBUG.message("Validating goto URL " + url + " against patterns:\n" + patterns);
}
if (url.length() > MAX_URL_LENGTH) {
return false;
}
try {
final URI uri = new URI(url);
// Both Absolute and scheme relative URLs should be validated.
if (!uri.isAbsolute() && !url.startsWith("//")) {
return true;
}
if (uri.getScheme() != null && !uri.getScheme().equals("http") && !uri.getScheme().equals("https")) {
return false;
}
} catch (final URISyntaxException urise) {
if (DEBUG.messageEnabled()) {
DEBUG.message("The goto URL " + url + " is not a valid URI", urise);
}
return false;
}
if (patterns == null || patterns.isEmpty()) {
if (DEBUG.messageEnabled()) {
DEBUG.message("There are no patterns to validate the URL against, the goto URL is considered valid");
}
return true;
}
final URLPatternMatcher patternMatcher = new URLPatternMatcher();
try {
return patternMatcher.match(url, patterns, true);
} catch (MalformedURLException murle) {
DEBUG.error("An error occurred while validating goto URL: " + url, murle);
return false;
}
}
Aggregations