LoginModule インターフェイスには次のメソッドがあります。
public void initialize(Subject subject, CallbackHandler callbackHandler,
Map<String, ?> sharedState, Map<String, ?> options);
Configuration を拡張することで、オプション (4 番目のパラメーター) に値を渡すことができます。
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 };
}
}
LdapLoginModule を使用しようとしています。(login() で) ユーザー名とパスワードを取得するために sharedState (3 番目のパラメーター) の値を使用します。
username = (String)sharedState.get(USERNAME_KEY);
password = (char[])sharedState.get(PASSWORD_KEY);
私の質問は、sharedState に値を渡すにはどうすればよいですか?