按java列出weblogic中的所有用户

按java列出weblogic中的所有用户,java,weblogic,jmx,Java,Weblogic,Jmx,有人知道如何在java中列出所有weblogic用户吗? 例如,在安全领域中有5个用户,我想获得所有用户。我该怎么办?很简单。作为将来的参考,如果您想在google搜索中查找类似“如何使用weblogic和Java实现X…”的内容,请使用JMX。下面是一个来自中国的例子。注意:您需要更改代码中的URL和用户/密码: import javax.naming.*; import javax.management.MBeanInfo; import weblogic.jndi.Environment;

有人知道如何在java中列出所有weblogic用户吗?
例如,在安全领域中有5个用户,我想获得所有用户。我该怎么办?

很简单。作为将来的参考,如果您想在google搜索中查找类似“如何使用weblogic和Java实现X…”的内容,请使用
JMX
。下面是一个来自中国的例子。注意:您需要更改代码中的URL和用户/密码:

import javax.naming.*;
import javax.management.MBeanInfo;
import weblogic.jndi.Environment;
import weblogic.management.runtime.ServerRuntimeMBean;
import weblogic.security.providers.authentication.DefaultAuthenticatorMBean;
import weblogic.management.security.authentication.UserReaderMBean;
import weblogic.management.security.authentication.GroupReaderMBean;
import weblogic.management.MBeanHome;
import weblogic.management.WebLogicMBean;
import weblogic.management.tools.Info;
import weblogic.management.Helper;
import weblogic.management.security.authentication.*;

public class ListUsersAndGroups
{
  public static void main(String[] args)
  {

  MBeanHome home = null;
  try
  {

    Environment env = new Environment();
    env.setProviderUrl(“t3://localhost:7001?);
    env.setSecurityPrincipal(“weblogic”);
    env.setSecurityCredentials(“weblogic”);
    Context ctx = env.getInitialContext();

    home = (MBeanHome)ctx.lookup(“weblogic.management.adminhome”);

    weblogic.management.security.RealmMBean rmBean = 
   home.getActiveDomain().getSecurityConfiguration().getDefaultRealm();

    AuthenticationProviderMBean[] authenticationBeans = 
    rmBean.getAuthenticationProviders();
    DefaultAuthenticatorMBean defaultAuthenticationMBean = 
    (DefaultAuthenticatorMBean)authenticationBeans[0];
    UserReaderMBean userReaderMBean = 
    (UserReaderMBean)defaultAuthenticationMBean;

    String userCurName = userReaderMBean.listUsers(“*”, 100);

    while (userReaderMBean.haveCurrent(userCurName) )
    {
      String user = userReaderMBean.getCurrentName(userCurName);
      System.out.println(“\n User: ” + user);
      userReaderMBean.advance(userCurName);
    }

  }
  catch (Exception e)
  {
    e.printStackTrace();
  }
  }
}
编辑


实际上,没有任何方法必须知道用户/密码才能查找用户。如果这听起来是一个更好的选择,您也可以通过WLST脚本来实现。请看一个例子

最后但并非最不重要的一点是,您可以在嵌入式ldap for Weblogic上设置匿名绑定,以允许匿名查找(这通常不建议用于生产)。此示例显示如何使用外部客户端执行此操作:

关键设置包括:

Your Domain -> Security -> Embedded LDAP
Change the (default generated) password (for example: weblogic)
Enable “Anonymous Bind Allowed” 

这很容易。作为将来的参考,如果您想在google搜索中查找类似“如何使用weblogic和Java实现X…”的内容,请使用
JMX
。下面是一个来自中国的例子。注意:您需要更改代码中的URL和用户/密码:

import javax.naming.*;
import javax.management.MBeanInfo;
import weblogic.jndi.Environment;
import weblogic.management.runtime.ServerRuntimeMBean;
import weblogic.security.providers.authentication.DefaultAuthenticatorMBean;
import weblogic.management.security.authentication.UserReaderMBean;
import weblogic.management.security.authentication.GroupReaderMBean;
import weblogic.management.MBeanHome;
import weblogic.management.WebLogicMBean;
import weblogic.management.tools.Info;
import weblogic.management.Helper;
import weblogic.management.security.authentication.*;

public class ListUsersAndGroups
{
  public static void main(String[] args)
  {

  MBeanHome home = null;
  try
  {

    Environment env = new Environment();
    env.setProviderUrl(“t3://localhost:7001?);
    env.setSecurityPrincipal(“weblogic”);
    env.setSecurityCredentials(“weblogic”);
    Context ctx = env.getInitialContext();

    home = (MBeanHome)ctx.lookup(“weblogic.management.adminhome”);

    weblogic.management.security.RealmMBean rmBean = 
   home.getActiveDomain().getSecurityConfiguration().getDefaultRealm();

    AuthenticationProviderMBean[] authenticationBeans = 
    rmBean.getAuthenticationProviders();
    DefaultAuthenticatorMBean defaultAuthenticationMBean = 
    (DefaultAuthenticatorMBean)authenticationBeans[0];
    UserReaderMBean userReaderMBean = 
    (UserReaderMBean)defaultAuthenticationMBean;

    String userCurName = userReaderMBean.listUsers(“*”, 100);

    while (userReaderMBean.haveCurrent(userCurName) )
    {
      String user = userReaderMBean.getCurrentName(userCurName);
      System.out.println(“\n User: ” + user);
      userReaderMBean.advance(userCurName);
    }

  }
  catch (Exception e)
  {
    e.printStackTrace();
  }
  }
}
编辑


实际上,没有任何方法必须知道用户/密码才能查找用户。如果这听起来是一个更好的选择,您也可以通过WLST脚本来实现。请看一个例子

最后但并非最不重要的一点是,您可以在嵌入式ldap for Weblogic上设置匿名绑定,以允许匿名查找(这通常不建议用于生产)。此示例显示如何使用外部客户端执行此操作:

关键设置包括:

Your Domain -> Security -> Embedded LDAP
Change the (default generated) password (for example: weblogic)
Enable “Anonymous Bind Allowed” 

是的,我们可以这样做。但仍然有一个问题:你必须在代码中输入用户名和密码。我知道我们可以从boot.properties读取这些信息,但是您还有其他方法吗?我不想太多地使用JMX。编辑了一些可能有用的更多信息。我使用的过程与您提到的相同,但我在这一行“DefaultAuthenticationTorBean defaultAuthenticationMBean=(DefaultAuthenticationTorBean)authenticationBeans[0];“是,我们可以这样做。但仍然有一个问题:你必须在代码中输入用户名和密码。我知道我们可以从boot.properties读取这些信息,但是您还有其他方法吗?我不想太多地使用JMX。编辑了一些可能有用的更多信息。我使用的过程与您提到的相同,但我在这一行“DefaultAuthenticationTorBean defaultAuthenticationMBean=(DefaultAuthenticationTorBean)authenticationBeans[0];”上得到了“java.lang.ClassCastException:com.sun.proxy.$Proxy696”