创建了一个LoginContext对象并传递了一个名称,并使用该条目创建了一个.conf文件。我在代码中设置了系统属性“java.security.auth.login.config”,其中包含conf文件的相对/绝对路径。执行代码时,出现以下错误。
javax.security.auth.login.LoginException:没有为Sample配置LoginModule。
任何线索为什么配置没有被拿起?我错过了什么吗?
感谢任何帮助。
以上代码
System.setProperty("java.security.auth.login.config","sampleConfig.conf");
loginContext = new LoginContext("Sample", new CustomCallbackHandler());
loginContext.login();
sampleConfig.conf
Sample {
com.sun.security.auth.module.Krb5LoginModule required;
};
该文件似乎没有被拿起。即使我更改了文件名/文件路径/在conf文件中进行了任何语法更改,我仍然只看到上一个错误。
请注意,这是在OSGI包中完成的。
任何帮助?
答案 0 :(得分:0)
通过sampleConfig.conf
获取配置文件org.osgi.framework.Bundle#getResource(String)
的具体网址。
将此URL
作为值插入System.setProperty("java.security.auth.login.config",<URL>);
。
如果您的配置文件是OSGi-Framework的一部分,请使用Framework-Bundle(id:0),否则使用包含配置文件的bundle。
修改强>
可能使用Configuration对象而不是配置文件。
public LoginContext(String name,
Subject subject,
CallbackHandler callbackHandler,
Configuration config)
throws LoginException
答案 1 :(得分:0)
Sample {
sample.module.SampleLoginModule required debug=true;
};
然后创建您的customCallBackHandler和LoginModule。