我正在尝试运行JAAS代码示例。
lc = new LoginContext("JaasSample", new TextCallbackHandler());
要注册配置文件,请尝试以下命令:
java -Djava.security.auth.login.config=jaas.config JaasAcn
得到错误:
错误:无法找到或加载主类.security.auth.login.config = jaas.config
引起:java.lang.ClassNotFoundException:/ security / auth / login / config = jaas / config
答案 0 :(得分:0)
显然命令行中存在拼写错误:-Djava
之后的空格,因此.security.auth.login.config=jaas.config
部分被视为类名(因此也会相应地进行修改)。
答案 1 :(得分:0)
首先写javax
而不是java
,所以:
java -Djavax.security.auth.login.config=jaas.config JaasAcn
其次,考虑以程序化方式配置它:
javax.security.auth.login.Configuration
类。覆盖函数AppConfigurationEntry[] getAppConfigurationEntry(String name)
。在此函数中,您可以返回AppConfigurationEntry
对象,该对象代表config file中的行。
new AppConfigurationEntry(NTLoginModule.class.getName(),
AppConfigurationEntry.LoginModuleControlFlag.REQUIRED, new HashMap<>())
使用name
参数,您可以回复name
构造函数中的LoginContext
参数。
从Configuration类创建对象并将其置于Configuration:
MyConfiguration config = new MyConfiguration();
Configuration.setConfiguration(config);
缩短的代码可能如下所示:
Configuration config = new Configuration() {
@Override
public AppConfigurationEntry[] getAppConfigurationEntry(String name) {
return new AppConfigurationEntry[]{
new AppConfigurationEntry(NTLoginModule.class.getName(),
AppConfigurationEntry.LoginModuleControlFlag.REQUIRED,
new HashMap<>())
};
}
};
Configuration.setConfiguration(config);