我在Weblogic 12c中发现了一个安全配置问题,开发人员可以通过以下方式从生产中获取资源:
InitialContext ic = new InitialContext();
Hashtable<String, String> h = new Hashtable<String, String>(7);
h.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
h.put(Context.PROVIDER_URL, "t3://ip_server:7003");
InitialContext context = new InitialContext(h);
DataSource dataSource = (javax.sql.DataSource) context.lookup("jdbc/name");
我想为这些远程查找设置一个密码,同时我不想影响在服务器上运行的本地应用程序,并从服务器注入jndi资源,只是通过以下操作:
InitialContext ic = new InitialContext();
Resource r = (Resource) ic.lookup("jndi/name");
由于所有请求都通过Weblogic的安全提供程序运行,因此您可以实现自己的授权提供程序来限制这种访问。
oracle关于开发自己的安全提供商的文章:http://docs.oracle.com/middleware/1213/wls/DEVSP/atz.htm#DEVSP301