创建了一个 LoginContext 对象并传递了一个名称,然后我使用该条目创建了一个 .conf 文件。我在代码中设置了系统属性“java.security.auth.login.config”,其中包含 conf 文件的相对/绝对路径。执行代码时,出现以下错误。
javax.security.auth.login.LoginException:没有为示例配置登录模块。
为什么没有获取配置的任何线索?我错过了什么吗?
感谢任何帮助。
上面的代码
System.setProperty("java.security.auth.login.config","sampleConfig.conf");
loginContext = new LoginContext("Sample", new CustomCallbackHandler());
loginContext.login();
示例配置文件
Sample {
com.sun.security.auth.module.Krb5LoginModule required;
};
文件似乎没有被提取。即使我更改了文件名/文件路径/在 conf 文件中做了任何语法更改,我仍然只看到以前的错误。
请注意,这是在 OSGI 包中完成的。
有什么帮助吗?
最佳答案
获取配置文件的具体URL sampleConfig.conf
通过org.osgi.framework.Bundle#getResource(String)
.
插入这个 URL
作为 System.setProperty("java.security.auth.login.config",<URL>);
中的值.
如果您的配置文件是 OSGi-Framework 的一部分,请使用 Framework-Bundle (id: 0),否则使用包含配置文件的包。
编辑
也许使用 Configuration对象而不是配置文件。
public LoginContext(String name,
Subject subject,
CallbackHandler callbackHandler,
Configuration config)
throws LoginException
关于java - 创建 LoginContext 时没有配置 LoginModules 错误 (JAAS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28102350/