//Look for signing alias
signingAlias = config.getInitParameter("signingAlias");
encryptingAlias = config.getInitParameter("encryptingAlias");
ProviderType providerType = ConfigurationUtil.getIDPConfiguration(is);
metadataProviderType = providerType.getMetaDataProvider();
String fqn = metadataProviderType.getClassName();
ClassLoader tcl = SecurityActions.getContextClassLoader();
Class<?> clazz = tcl.loadClass(fqn);
metadataProvider = (IMetadataProvider) clazz.newInstance();
List<KeyValueType> keyValues = metadataProviderType.getOption();
Map<String,String> options = new HashMap<String,String>();
if(keyValues != null)
{
for(KeyValueType kvt: keyValues)
options.put(kvt.getKey(), kvt.getValue());
}
metadataProvider.init(options);
if(metadataProvider.isMultiple())
throw new RuntimeException("Multiple Entities not currently supported");
/**
* Since a metadata provider does not have access to the servlet context.
* It may be difficult to get to the resource from the TCL.
*/
String fileInjectionStr = metadataProvider.requireFileInjection();
if(fileInjectionStr != null && fileInjectionStr.length() > 0)
{
metadataProvider.injectFileStream(context.getResourceAsStream(fileInjectionStr));
}
metadata = (EntityDescriptorType) metadataProvider.getMetaData();
//Get the trust manager information
KeyProviderType keyProvider = providerType.getKeyProvider();
signingAlias = keyProvider.getSigningAlias();
String keyManagerClassName = keyProvider.getClassName();
if(keyManagerClassName == null)
throw new RuntimeException("KeyManager class name is null");