java - 创建 LoginContext 时没有配置 LoginModules 错误 (JAAS)

标签 java osgi kerberos jaas

创建了一个 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对象而不是配置文件。

请参阅我在问题中的回答:In jaas can we use an object of javax.security.auth.login.Configuration class as an alternative to LoginModule configuration using .config files

public LoginContext(String name,
                    Subject subject,
                    CallbackHandler callbackHandler,
                    Configuration config)
             throws LoginException

关于java - 创建 LoginContext 时没有配置 LoginModules 错误 (JAAS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28102350/

相关文章:

java - karaf 在组件工厂示例中不显示任何错误

java - 在 Linux 上使用来自 Java 程序的 Kerberos 的 Windows 服务身份验证

java - 从 HDFS 加载 key 表

java - 在g:formremote内部使用时,g:link不起作用

java - Apache WordUtils.capitalize 没有完成其工作

java - SWT WizardDialog 未显示在任务栏中

tomcat - 嵌入在 Tomcat 中的 OSGi 中的 ClassCastException

java - 使用嵌入式 OSGi 容器

linux - 使用 Weblogic 11g OEL 的 SSO 配置

java - 我对数组对象的创建和新元素的分配感到困惑