[OPENAM-14092] Custom node can prevent all default nodes appearing in admin view Created: 06/Dec/18  Updated: 10/Jan/19  Resolved: 14/Dec/18

Status: Resolved
Project: OpenAM
Component/s: authentication, trees
Affects Version/s: 6.5.0
Fix Version/s: 6.5.0.1, 6.5.1, 7.0.0

Type: Bug Priority: Major
Reporter: Jon Knight Assignee: Kajetan Hemzaczek
Resolution: Fixed Votes: 0
Labels: AME, Must-Fix, TESLA
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Target Version/s:
Sprint: 2018.16 - Tin
Verified Version/s:
Needs QA verification:
No
Functional tests:
No
Are the reproduction steps defined?:
Yes and I used the same an in the description

 Description   

Bug description

In some cases custom authentication nodes can cause a problem which stops all "out-of-the-box" authentication nodes appearing in the admin console.

How to reproduce the issue

  1. an example node which triggers this is on ForgeRock marketplace here: https://github.com/ForgeRock/haveibeenpwned-auth-tree-node
  2. build the node and deploy to a AM 6.5 instance
  3. login to admin console, choose any tree and notice all standard nodes are missing from the chooser palette
 

Work around

For this particular node it seems the problem is caused by missing "public" statement on the Config object definition:

change:

interface Config {}

to:

public interface Config {}

then recompile, deploy to fresh AM and all's well.

The same custom node appears to work fine with AM 5.5 and 6.0 however.

 

Code analysis

OPTIONAL - If you already investigated the code, please share your finding here (remove this text)

 


 Comments   
Comment by James Phillpotts [ 12/Dec/18 ]

The fix for this should be to change the PluginLifecycle class so that when each plugin installs/upgrades/registers/etc., any exception thrown does not abort the process, e.g. in PluginLifecycle.java:119:

                    try {
                        plugin.onInstall();
                        DEBUG.warning("Complete");
                    } catch (Exception e) {
                        DEBUG.error("{} plugin not installed", name, e);
                        throw new PluginException("Plugins not installed", e);
                    }

Should be changed to:

                    try {
                        plugin.onInstall();
                        DEBUG.warning("Complete");
                    } catch (Throwable t) {
                        DEBUG.error("{} plugin not installed", name, t);
                        continue;
                    }
Comment by Peter Major [X] (Inactive) [ 12/Dec/18 ]

Would advise against catching Throwable. At least we should rethrow it if it was an Error.

Comment by Filip Kubáň [X] (Inactive) [ 10/Jan/19 ]

Verified on
ForgeRock Access Management 6.5.0.1-RC1 Build d901475564 (2019-January-10 06:24)

Custom node (used the node provided in description) is present and all other nodes are visible in all trees (default and custom created)

Generated at Thu Sep 24 15:04:41 UTC 2020 using Jira 7.13.12#713012-sha1:6e07c38070d5191bbf7353952ed38f111754533a.