Question: I have a very big dictionary of dictionaries and it is like this:

```
Dict={,
    ...
    '25465466':{'Cmstrk': 'cms_trk_dcs_05:CAEN', 'Crate': 'easyCrate0', 'Board': 'easyBoard06', 'Branch': 'branchController05', 'TrackerSY': 'CMS_TRACKER_SY1527_4', 'Channel': 'channel003\n'},
    '436232302': {'Cmstrk': 'cms_trk_dcs_03:CAEN', 'Crate': 'easyCrate1', 'Board': 'easyBoard01', 'Branch': 'branchController05', 'TrackerSY': 'CMS_TRACKER_SY1527_8', 'Channel': 'channel002\n'},
    '470311412': {'Cmstrk': 'cms_trk_dcs_03:CAEN', 'Crate': 'easyCrate0', 'Board': 'easyBoard00', 'Branch': 'branchController05', 'TrackerSY': 'CMS_TRACKER_SY1527_4', 'Channel': 'channel003\n'},
    ...
} 

```

And if the user types `cms_trk_dcs_05:CAEN` or `easyCrate1/easyBoard01` or more combination of this values the script has to return those keys (numbers like '654546536') that they have in common.

For example if input is `easyCrate0/CMS_TRACKER_SY1527_4` the answer is `470311412,25465466`.

Answer: 
The first thing that came to my mind is the strategy pattern:

```
public abstract class Authenticator{ //or interface
    public abstract boolean login(String user, String password);
}

```

The `Authenticator` is the pattern. You can extend/implement it with various authentication methods. In your main class you hold a specific pattern in a member, which you then call directly:

```
public class Main{
    private Authenticator auth;

    //choose auth in constructor or by choosing it in a List in some GUI
    //and create an Object that extends/implements Authenticator

    public void login(String user, String password){
        if(auth.login(user, password)){
            //do whatever is needed to complete login
        }
    }

}

```

This way you have minute control over which authentification method(s) are used.

If you change `auth` to an array or ArrayList, it is essentially the same as @Konrad Garus answer.
I would suggest to have an interface which will have signatures of basic authentication methods,and the implementing class can have different definitions of those authentication methods.