我在WebLogic 12.2.1上部署的Web服务中有以下代码。它将从WebLogic配置中检索密钥库文件名和密码。
InitialContext ic = new InitialContext();
MBeanServer server = (MBeanServer) ic.lookup("java:comp/env/jmx/runtime");
ObjectName runtime = new ObjectName("com.bea:Name=MLMAppSrv01,Type=Server");
Object keyStoreFileName = server.getAttribute(runtime, "CustomIdentityKeyStoreFileName");
Object keyStorePassPhrase = server.getAttribute(runtime, "CustomIdentityKeyStorePassPhrase");
它能够检索密钥库文件名,但是当它尝试检索密码时,会抛出以下异常。
[Management:141302]Access not allowed for Subject: principals=[], on resource Server, action: read, target CustomIdentityKeyStorePassPhrase.
在域的安全性下,我已经启用了“启用明文凭证访问”。
还有什么可能是错的?
提前致谢。
答案 0 :(得分:0)
您没有在代码中传递任何用户名。使用weblogic用户或其他管理员用户,您应该检索密码。否则,它将不允许您访问密码。
如果您想使用除weblogic之外的其他用户,请确保将该用户添加到管理员组。
答案 1 :(得分:0)
您可以传递以下示例代码中给出的凭据。
Hashtable properties = new Hashtable();
properties.put(Context.INITIAL_CONTEXT_FACTORY,
"weblogic.jndi.WLInitialContextFactory");
// NOTE: The port number of the server is provided in the next line,
// followed by the userid and password on the next two lines.
properties.put(Context.PROVIDER_URL, "t3://localhost:9001");
properties.put(Context.SECURITY_PRINCIPAL, "weblogic");
properties.put(Context.SECURITY_CREDENTIALS, "welcome1");
try {
ctx = new InitialContext(properties);
} catch (NamingException ne) {
ne.printStackTrace(System.err);
System.exit(0);
}
答案 2 :(得分:0)
我认为您未经过身份验证,因此无法访问受限制的资源。将注释@RunAs(" WEBLOGIC")添加到您的类中,并在WEB-INF / weblogic-ejb-jar.xml中配置它
(其中WEBLOGIC是Weblogic控制台中具有管理员权限的用户的名称,默认管理员帐户甚至命名为weblogic)
你的课应该是这样的:
@Stateless
@RunAs("WEBLOGIC")
public class SomeService {
// ...
}
weblogic-ejb-jar.xml的内容
<?xml version="1.0" encoding="UTF-8"?>
<weblogic-ejb-jar>
<run-as-role-assignment>
<role-name>WEBLOGIC</role-name>
<run-as-principal-name>weblogic</run-as-principal-name>
</run-as-role-assignment>
</weblogic-ejb-jar>
答案 3 :(得分:0)
我有类似的情况,我的球衣代码需要在WLS中以编程方式从密钥库中获取密钥。不需要EJB设置。您只需要正确定义web.xml和weblogic.xml。
的web.xml:
<servlet>
<servlet-name>{jersey webservice class}</servlet-name>
<run-as>
<role-name>admRole</role-name>
</run-as>
</servlet>
<security-role>
<role-name>admRole</role-name>
</security-role>
weblogic.xml中:
<run-as-role-assignment>
<role-name>admRole</role-name>
<run-as-principal-name>wlsadm</run-as-principal-name>
</run-as-role-assignment>