The LoginModule interface has this method:
public void initialize(Subject subject, CallbackHandler callbackHandler,
Map<String, ?> sharedState, Map<String, ?> options);
I can pass values to options (fourth parameter) by extending Configuration:
public class CustomConfiguration extends Configuration
{
private Map<String, ?> options;
private String loginModuleName;
public CustomConfiguration()
{
}
public CustomConfiguration(final String loginModuleName, final Map<String, ?> options)
{
this.loginModuleName = loginModuleName;
this.options = options;
}
@Override
public AppConfigurationEntry[] getAppConfigurationEntry(String name)
{
AppConfigurationEntry entry = new AppConfigurationEntry(loginModuleName,
AppConfigurationEntry.LoginModuleControlFlag.REQUIRED,
options);
return new AppConfigurationEntry[] { entry };
}
}
I'm trying to use LdapLoginModule. It uses sharedState (third parameter) values for getting username and password (in login()):
username = (String)sharedState.get(USERNAME_KEY);
password = (char[])sharedState.get(PASSWORD_KEY);
My question is, how can i pass values to sharedState?
That's not what it's for. It's for passing values between LoginModules.