@@ -104,6 +104,10 @@ public class SAML2AuthManagerImpl extends AdapterBase implements SAML2AuthManage
104104 private int _refreshInterval = SAMLPluginConstants .SAML_REFRESH_INTERVAL ;
105105 private AbstractReloadingMetadataProvider _idpMetaDataProvider ;
106106
107+ public String getSAMLIdentityProviderMetadataURL (){
108+ return SAMLIdentityProviderMetadataURL .value ();
109+ }
110+
107111 @ Inject
108112 private KeystoreDao _ksDao ;
109113
@@ -119,12 +123,12 @@ public class SAML2AuthManagerImpl extends AdapterBase implements SAML2AuthManage
119123 @ Override
120124 public boolean start () {
121125 if (isSAMLPluginEnabled ()) {
122- setup ();
123126 s_logger .info ("SAML auth plugin loaded" );
127+ return setup ();
124128 } else {
125129 s_logger .info ("SAML auth plugin not enabled so not loading" );
130+ return super .start ();
126131 }
127- return super .start ();
128132 }
129133
130134 @ Override
@@ -135,7 +139,7 @@ public boolean stop() {
135139 return super .stop ();
136140 }
137141
138- private boolean initSP () {
142+ protected boolean initSP () {
139143 KeystoreVO keyStoreVO = _ksDao .findByName (SAMLPluginConstants .SAMLSP_KEYPAIR );
140144 if (keyStoreVO == null ) {
141145 try {
@@ -338,6 +342,7 @@ public void run() {
338342 return ;
339343 }
340344 s_logger .debug ("Starting SAML IDP Metadata Refresh Task" );
345+
341346 Map <String , SAMLProviderMetadata > metadataMap = new HashMap <String , SAMLProviderMetadata >();
342347 try {
343348 discoverAndAddIdp (_idpMetaDataProvider .getMetadata (), metadataMap );
@@ -358,7 +363,7 @@ private boolean setup() {
358363 }
359364 _timer = new Timer ();
360365 final HttpClient client = new HttpClient ();
361- final String idpMetaDataUrl = SAMLIdentityProviderMetadataURL . value ();
366+ final String idpMetaDataUrl = getSAMLIdentityProviderMetadataURL ();
362367 if (SAMLTimeout .value () != null && SAMLTimeout .value () > SAMLPluginConstants .SAML_REFRESH_INTERVAL ) {
363368 _refreshInterval = SAMLTimeout .value ();
364369 }
@@ -368,21 +373,31 @@ private boolean setup() {
368373 _idpMetaDataProvider = new HTTPMetadataProvider (_timer , client , idpMetaDataUrl );
369374 } else {
370375 File metadataFile = PropertiesUtil .findConfigFile (idpMetaDataUrl );
371- s_logger .debug ("Provided Metadata is not a URL, trying to read metadata file from local path: " + metadataFile .getAbsolutePath ());
372- _idpMetaDataProvider = new FilesystemMetadataProvider (_timer , metadataFile );
376+ if (metadataFile == null ) {
377+ s_logger .error ("Provided Metadata is not a URL, Unable to locate metadata file from local path: " + idpMetaDataUrl );
378+ return false ;
379+ }
380+ else {
381+ s_logger .debug ("Provided Metadata is not a URL, trying to read metadata file from local path: " + metadataFile .getAbsolutePath ());
382+ _idpMetaDataProvider = new FilesystemMetadataProvider (_timer , metadataFile );
383+ }
373384 }
374385 _idpMetaDataProvider .setRequireValidMetadata (true );
375386 _idpMetaDataProvider .setParserPool (new BasicParserPool ());
376387 _idpMetaDataProvider .initialize ();
377388 _timer .scheduleAtFixedRate (new MetadataRefreshTask (), 0 , _refreshInterval * 1000 );
389+
378390 } catch (MetadataProviderException e ) {
379391 s_logger .error ("Unable to read SAML2 IDP MetaData URL, error:" + e .getMessage ());
380392 s_logger .error ("SAML2 Authentication may be unavailable" );
393+ return false ;
381394 } catch (ConfigurationException | FactoryConfigurationError e ) {
382395 s_logger .error ("OpenSAML bootstrapping failed: error: " + e .getMessage ());
396+ return false ;
383397 } catch (NullPointerException e ) {
384398 s_logger .error ("Unable to setup SAML Auth Plugin due to NullPointerException" +
385399 " please check the SAML global settings: " + e .getMessage ());
400+ return false ;
386401 }
387402 return true ;
388403 }
0 commit comments