我们的应用程序有一个自定义登录模块(实际上有几个)。我们最近从 OC4J 迁移到 Weblogic,我们曾经在 system-jazn-data.xml 中进行配置。
我们已经让我们的身份验证正常工作,但是,要使用 JAAS 模块,我们必须配置一个指向 jaas.config 文件的 java 启动参数:
-Djava.security.auth.login.config=/path/to/jaas.config
文件内容:
DatabaseAuthentication {
uk.co.corelogic.framework.security.auth.module.RDBMSLoginModule optional debug=false;
};
我的问题是,还有其他方法可以做到这一点吗?
问题是,我试图从应用程序耳中删除任何外部依赖项,以便可以使用默认配置部署它,而无需在应用程序服务器上创建文件。
我到处看了看,但我发现的所有说明都说要指定一个外部文件。这是一个非常简单的配置——它可以放在任何地方的部署描述 rune 件中吗?
还有其他一些事情我也需要改变,但它们需要单独的问题:)
最佳答案
好的,我花了一些时间研究这个,我认为我有一个不错的解决方案。而不是使用 login.conf
文件和 -Dsecurity.auth.login..
垃圾,您可以创建一个包含必要信息的配置类,并在创建 LoginContext
时将其传入。 .这是我制作的类的一个简单示例:
public class MyAppLoginModuleConfig extends javax.security.auth.login.Configuration {
private static final String APP_NAME = "MyApp";
private static final String LOGIN_MODULE_CLASS = "com.myapp.security.MyLoginModule";
@Override
public AppConfigurationEntry[] getAppConfigurationEntry(String name) {
if (name.equals(APP_NAME)) {
AppConfigurationEntry[] configArr = new AppConfigurationEntry[1];
configArr[0] = new AppConfigurationEntry(
LOGIN_MODULE_CLASS,
AppConfigurationEntry.LoginModuleControlFlag.REQUISITE, // or required, sufficient, etc
new HashMap<String, Object>()); // for any options you have, can't be null
return configArr;
}
// something funky happened and we're trying to look up a different app
throw new RuntimeException("Expected app: " + APP_NAME + ", but got: " + name);
}
}
当你创建你的登录上下文时,像这样传递它:
Subject subject = null;
Configuration myAppConfig = new MyAppLoginModuleConfig();
LoginContext ctx = new LoginContext("MyApp", subject, callbackHandler, myAppConfig);
关于jakarta-ee - 如何让 weblogic 从内部文件中获取登录模块 jaas.config?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9810625/