Skip to main content

Working with Principals

Working with different types of users.


Sample_Admin_Principal_Operations.java

The following code sample illustrates how to retrieve a list of users, create and delete different types of users and assign users to Groups, that is add Groups to the list of Groups to which a user belongs.

import java.util.Iterator;
import java.util.TreeSet;
import java.util.Vector;
import com.eruces.teadmin.Administration;
import com.eruces.teadmin.GroupInfo;
import com.eruces.teadmin.LdapPrincipalInfo;
import com.eruces.teadmin.PrincipalInfo;
import com.eruces.teadmin.TransportPrincipalInfo;
import com.eruces.teadmin.UnixPrincipalInfo;
import com.eruces.teadmin.UserAndPasswordInfo;
import com.eruces.teadmin.WindowsPrincipalInfo;
import com.eruces.teagent.PAny;
import com.eruces.teagent.TEAgentConnection;
public class Sample_Admin_Principal_Operations {
public static Vector<String> listAllPrincipals(TEAgentConnection conn) {

Vector<String> out = new Vector<String>();
try {
Administration admin = new Administration();
admin.attachConnection(conn);

PrincipalInfo principals[] = admin.getPrincipalList();

for (int i = 0; i < principals.length; i++)
{
if (!(principals[i] instanceof GroupInfo)) {
out.add(principals[i].getPrincipalName());
}
}

System.out.println("Retrieved " + out.size() + " principals.");

admin.detachConnection();

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

return out;
}

public static void createPrincipal(TEAgentConnection conn, String user, String pass, Helper_Principal_Enum type) {
try {
Administration admin = new Administration();
admin.attachConnection(conn);

PrincipalInfo principal = null;

if (type == Helper_Principal_Enum.Native) {
principal = new UserAndPasswordInfo();
((UserAndPasswordInfo)principal).setUserName(user);
((UserAndPasswordInfo)principal).setPassword("password1A", pass);
}
else if (type == Helper_Principal_Enum.Windows) {
principal = new WindowsPrincipalInfo();
((WindowsPrincipalInfo)principal).setUserName(user);
}
else if (type == Helper_Principal_Enum.Linux) {
principal = new UnixPrincipalInfo();
((UnixPrincipalInfo)principal).setName(user);
}
else if (type == Helper_Principal_Enum.LDAP) {
principal = new LdapPrincipalInfo();
((LdapPrincipalInfo)principal).setName(user);
}
else if (type == Helper_Principal_Enum.Certificate) {
principal = new TransportPrincipalInfo();
((TransportPrincipalInfo)principal).setSubject(user);
}

principal = admin.addPrincipal(principal);

System.out.println("Added principal \"" + user + "\".");

admin.detachConnection();
}
catch (Exception e) {
e.printStackTrace();
}
}

public static void removePrincipal(TEAgentConnection conn, String user_rem, String user_key, Helper_Principal_Enum type) {
try {
Administration admin = new Administration();
admin.attachConnection(conn);

PrincipalInfo principal_rem = null;
PrincipalInfo principal_key = null;

if (type == Helper_Principal_Enum.Native) {
principal_rem = new UserAndPasswordInfo();
((UserAndPasswordInfo)principal_rem).setUserName(user_rem);
}
else if (type == Helper_Principal_Enum.Windows) {
principal_rem = new WindowsPrincipalInfo();
((WindowsPrincipalInfo)principal_rem).setUserName(user_rem);
}
else if (type == Helper_Principal_Enum.Linux) {
principal_rem = new UnixPrincipalInfo();
((UnixPrincipalInfo)principal_rem).setName(user_rem);
}
else if (type == Helper_Principal_Enum.LDAP) {
principal_rem = new LdapPrincipalInfo();
((LdapPrincipalInfo)principal_rem).setName(user_rem);
}
else if (type == Helper_Principal_Enum.Certificate) {
principal_rem = new TransportPrincipalInfo();
((TransportPrincipalInfo)principal_rem).setSubject(user_rem);
}

principal_rem = admin.getPrincipal(principal_rem);

principal_key = admin.getUserByName(user_key);
admin.removePrincipal(principal_rem, principal_key);

System.out.println("Removed principal \"" + user_rem + "\".");

admin.detachConnection();
}
catch (Exception e) {
e.printStackTrace();
}
}

public static Vector<String> listGroupsPrincipal(TEAgentConnection conn, String user_name) {

Vector<String> out = new Vector<String>();
try {
Administration admin = new Administration();
admin.attachConnection(conn);

UserAndPasswordInfo user = new UserAndPasswordInfo();
user.setUserName(user_name);
user = (UserAndPasswordInfo)admin.getPrincipal(user);

TreeSet<?> groups = user.getGroupIDs().getAllElements();
Iterator<?> iter = groups.iterator();

while (iter.hasNext()) {
PAny pany = (PAny)iter.next();
long id = pany.getLong();

GroupInfo group = new GroupInfo(id);
group = (GroupInfo)admin.getPrincipal(group);

out.add(group.getPrincipalName());

}

System.out.println("Retrieved " + out.size() + " groups.");

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

return out;

}

public static void joinGroupPrincipal(TEAgentConnection conn, String user_name, String group_name) {
try {
Administration admin = new Administration();
admin.attachConnection(conn);

GroupInfo group = new GroupInfo();
group.setName(group_name);
group = (GroupInfo)admin.getPrincipal(group);

PrincipalInfo user = admin.getUserByName(user_name);

long[] groups = new long[1];
groups[0] = group.getPrincipalID();

admin.assignGroups(user, groups); // add groups to a principal
System.out.println("User \"" + user_name + "\" was added to group \"" + group_name + "\".");

admin.detachConnection();
}
catch (Exception e) {
e.printStackTrace();
}
}

public static void leaveGroupPrincipal(TEAgentConnection conn, String user_name, String group_name) {
try {
Administration admin = new Administration();
admin.attachConnection(conn);

GroupInfo group = new GroupInfo();
group.setName(group_name);
group = (GroupInfo)admin.getPrincipal(group);

PrincipalInfo user = admin.getUserByName(user_name);

long[] groups = new long[1];
groups[0] = group.getPrincipalID();

admin.removeGroups(user, groups); // add groups to a principal
System.out.println("User \"" + user_name + "\" was removed from group \"" + group_name + "\".");

admin.detachConnection();
}
catch (Exception e) {
e.printStackTrace();
}
}

}