If you are looking for a single place to find all the binaries for all Java SE versions, please refer to below note on MOS:
Showing posts with label Java. Show all posts
Showing posts with label Java. Show all posts
Thursday, April 17, 2014
Friday, January 10, 2014
Provisioning OID Groups to User as Per Assigned Roles in OIM
Here is the sample java code to provision groups in OID to user as per the assigned role in OIM. The roles have access policy attached to them.
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import com.thortech.xl.vo.AccessPolicyResourceData;
import com.thortech.xl.vo.PolicyChildTableRecord;
import oracle.iam.identity.rolemgmt.api.RoleManager;
import oracle.iam.identity.rolemgmt.vo.Role;
import oracle.iam.identity.usermgmt.api.UserManager;
import oracle.iam.identity.usermgmt.vo.User;
import oracle.iam.platform.OIMClient;
import oracle.iam.platform.Platform;
import Thor.API.tcResultSet;
import Thor.API.tcUtilityFactory;
import Thor.API.Operations.tcAccessPolicyOperationsIntf;
import Thor.API.Operations.tcFormInstanceOperationsIntf;
import Thor.API.Operations.tcLookupOperationsIntf;
import Thor.API.Operations.tcObjectOperationsIntf;
import Thor.API.Operations.tcUserOperationsIntf;
public class ForceUserProvisioning {
private static final String OIM_URL = "t3s://<>:14001";
private static final String AUTH_CONF = "<>";
private static final String OIM_USERNAME = "<>";
private static final String OIM_PASSWORD = "<>";
private static OIMClient oimClient = null;
Hashtable env = new Hashtable();
private static final String LOOKUP_COLUMN_DECODE = "Lookup Definition.Lookup Code Information.Decode";
public tcAccessPolicyOperationsIntf moAccesspolicyutility;
private tcObjectOperationsIntf objectOp = null;
private tcUserOperationsIntf userOp = null;
private tcFormInstanceOperationsIntf formOp = null;
public ForceUserProvisioning() {
try {
env.put(OIMClient.JAVA_NAMING_FACTORY_INITIAL,
"weblogic.jndi.WLInitialContextFactory");
env.put(OIMClient.JAVA_NAMING_PROVIDER_URL, OIM_URL);
System.setProperty("java.security.auth.login.config", AUTH_CONF);
System.setProperty("OIM.AppServerType", "wls");
System.setProperty("APPSERVER_TYPE", "wls");
oimClient = new OIMClient(env);
oimClient.login(OIM_USERNAME, OIM_PASSWORD.toCharArray());
} catch (Exception e) {
e.printStackTrace();
}
}
//This method add the groups to the user in OID
public void updateUserGroups(String userLogin) {
try {
HashSet existingUserGroups = new HashSet();
Long userKey = Long.parseLong(getUserKey(userLogin));
userOp = oimClient.getService(tcUserOperationsIntf.class);
objectOp = oimClient.getService(tcObjectOperationsIntf.class);
formOp = oimClient.getService(tcFormInstanceOperationsIntf.class);
tcResultSet userObjects = userOp.getObjects(userKey);
String objName = userObjects.getStringValue("Objects.Name"); // OID User
long procKey = userObjects.getLongValue("Process Instance.Key");
long objKey = userObjects.getLongValue("Objects.Key");
long childFormKey;
long parentformkey = formOp.getProcessFormDefinitionKey(procKey);
int parentformver = formOp.getProcessFormVersion(procKey);
tcResultSet childforms = formOp.getChildFormDefinition(parentformkey, parentformver);
String plChildTableName = childforms.getStringValue("Structure Utility.Table Name");
long formkey = childforms.getLongValue("Structure Utility.Child Tables.Child Key");
tcResultSet childFormData = formOp.getProcessFormChildData(formkey, procKey);
HashSet groupSet = getAccessPolicyMapping(userLogin);
for(int k =0;k childFormData.goToRow(k);
String group = childFormData.getStringValue("UD_OID_GRP_GROUP_NAME");
//Get existing set of groups assigned to the user.
existingUserGroups.add(group);
//This will remove the extra groups which shouldn't be assigned to the user as per the assigned roles.
if(!groupSet.contains(group)) {
System.out.println ("Removing Group " + group);
long plChildFormPrimaryKey = childFormData.getLongValue("UD_OID_GRP_KEY");
formOp.removeProcessFormChildData( formkey, plChildFormPrimaryKey );
}
}
// This add groups as per the roles.
HashSet addGroups = new HashSet(groupSet);
addGroups.removeAll(existingUserGroups);
Iterator itrAdd = addGroups.iterator();
System.out.println(" Add " + addGroups.size());
if(addGroups.size()!=0) {
while(itrAdd.hasNext()) {
String groupName = itrAdd.next().toString();
HashMap groupHash = new HashMap();
groupHash.put("UD_OID_GRP_GROUP_NAME", groupName);
System.out.println(" Add " + groupName);
formOp.addProcessFormChildData(formkey, procKey, groupHash);
}
}
}catch(Exception e) {
e.printStackTrace();
}
}
//Get list of groups that needs to be assigned as per the Access Policy attached to the assigned roles in OIM
public HashSet getAccessPolicyMapping(String userLogin) {
HashSet mappingSet = new HashSet();
try {
tcUtilityFactory ioUtilityFactory = new tcUtilityFactory(env,
OIM_USERNAME, OIM_PASSWORD);
moAccesspolicyutility = (tcAccessPolicyOperationsIntf) ioUtilityFactory
.getUtility("Thor.API.Operations.tcAccessPolicyOperationsIntf");
HashSet roleSet = getUserRoles(userLogin);
System.out.println(" Roles Assigned to the User " + userLogin + " are " + roleSet.toString());
Iterator itr = roleSet.iterator();
while(itr.hasNext()) {
String policyName = itr.next().toString();
HashMap searchPolicy = new HashMap();
searchPolicy.put("Access Policies.Name", policyName);
tcResultSet result = moAccesspolicyutility
.findAccessPolicies(searchPolicy);
HashMap parentFormData = new HashMap();
ArrayList groupList = new ArrayList();
for (int i = 0; i < result.getTotalRowCount(); i++) {
result.goToRow(i);
long policyKey = result.getLongValue("Access Policies.Key");
tcResultSet policyresult = moAccesspolicyutility
.getDataSpecifiedFor(policyKey);
for (int f = 0; f < policyresult.getTotalRowCount(); f++) {
policyresult.goToRow(f);
long formKey = policyresult
.getLongValue("Structure Utility.Key");
long objectKey = policyresult.getLongValue("Objects.Key");
tcResultSet groupResult = moAccesspolicyutility
.getAssignedGroups(policyKey);
for (int j = 0; j < groupResult.getTotalRowCount(); j++) {
groupResult.goToRow(j);
AccessPolicyResourceData policyData = moAccesspolicyutility
.getDataSpecifiedForObject(policyKey,
objectKey, formKey);
HashMap pData = policyData
.getChildTables();
parentFormData= policyData.getFormData();
Set formSet = parentFormData.keySet();
Iterator formIterator = formSet.iterator();
while(formIterator.hasNext()) {
String key = formIterator.next().toString();
}
Set s = pData.keySet();
Iterator it = s.iterator();
while (it.hasNext()) {
String tableKey = it.next().toString();
PolicyChildTableRecord[] pChildTableData = policyData
.getChildTableRecords(tableKey);
for (int g = 0; g < pChildTableData.length; g++) {
String EDRGroupName = pChildTableData[g]
.getValue("UD_OID_GRP_GROUP_NAME");
//System.out.println(EDRGroupName);
mappingSet.add(EDRGroupName);
}
}
}
}
}
}
}catch(Exception e) {
e.printStackTrace();
}
return mappingSet;
}
// This method return set containing roles assigned to the user.
public HashSet getUserRoles(String userLogin) {
HashSet roleSet = new HashSet();
try {
RoleManager rolemanager = oimClient.getService(RoleManager.class);
List groupList = rolemanager
.getUserMemberships(getUserKey(userLogin), false);
for (Role role : groupList) {
roleSet.add(role.getName().trim());
}
}catch(Exception e) {
e.printStackTrace();
}
return roleSet;
}
public HashSet readLookup() {
String lookupDecode = "Lookup.FTB.IgnoreRole";
HashSet filterRoles = new HashSet();
try {
//Read Lookup to Find FilteredRoles
tcLookupOperationsIntf lookupOps = oimClient.getService(tcLookupOperationsIntf.class);
tcResultSet lookupResultSet = lookupOps.getLookupValues(lookupDecode);
for (int i = 0; i < lookupResultSet.getRowCount(); i++) {
lookupResultSet.goToRow(i);
String decode = lookupResultSet.getStringValue(
LOOKUP_COLUMN_DECODE).trim();
filterRoles.add(decode);
}
}catch(Exception e) {
e.printStackTrace();
}
return filterRoles;
}
public String getUserKey(String userLogin) {
UserManager usrMgr = oimClient.getService(UserManager.class);
User user = null;
try {
user = usrMgr.getDetails(userLogin, null, true);
} catch (Exception e) {
e.printStackTrace();
}
return user.getAttribute("usr_key").toString();
}
public static void main(String args[]) throws Exception {
ForceUserProvisioning obj = new ForceUserProvisioning();
obj.updateUserGroups("UserID");
System.out.println("Program Complete");
}
}
Note: I wrote this code for temporary use as in one of the environment, group provisioning via access policy stopped working.
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import com.thortech.xl.vo.AccessPolicyResourceData;
import com.thortech.xl.vo.PolicyChildTableRecord;
import oracle.iam.identity.rolemgmt.api.RoleManager;
import oracle.iam.identity.rolemgmt.vo.Role;
import oracle.iam.identity.usermgmt.api.UserManager;
import oracle.iam.identity.usermgmt.vo.User;
import oracle.iam.platform.OIMClient;
import oracle.iam.platform.Platform;
import Thor.API.tcResultSet;
import Thor.API.tcUtilityFactory;
import Thor.API.Operations.tcAccessPolicyOperationsIntf;
import Thor.API.Operations.tcFormInstanceOperationsIntf;
import Thor.API.Operations.tcLookupOperationsIntf;
import Thor.API.Operations.tcObjectOperationsIntf;
import Thor.API.Operations.tcUserOperationsIntf;
public class ForceUserProvisioning {
private static final String OIM_URL = "t3s://<
private static final String AUTH_CONF = "<
private static final String OIM_USERNAME = "<
private static final String OIM_PASSWORD = "<
private static OIMClient oimClient = null;
Hashtable
private static final String LOOKUP_COLUMN_DECODE = "Lookup Definition.Lookup Code Information.Decode";
public tcAccessPolicyOperationsIntf moAccesspolicyutility;
private tcObjectOperationsIntf objectOp = null;
private tcUserOperationsIntf userOp = null;
private tcFormInstanceOperationsIntf formOp = null;
public ForceUserProvisioning() {
try {
env.put(OIMClient.JAVA_NAMING_FACTORY_INITIAL,
"weblogic.jndi.WLInitialContextFactory");
env.put(OIMClient.JAVA_NAMING_PROVIDER_URL, OIM_URL);
System.setProperty("java.security.auth.login.config", AUTH_CONF);
System.setProperty("OIM.AppServerType", "wls");
System.setProperty("APPSERVER_TYPE", "wls");
oimClient = new OIMClient(env);
oimClient.login(OIM_USERNAME, OIM_PASSWORD.toCharArray());
} catch (Exception e) {
e.printStackTrace();
}
}
//This method add the groups to the user in OID
public void updateUserGroups(String userLogin) {
try {
HashSet
Long userKey = Long.parseLong(getUserKey(userLogin));
userOp = oimClient.getService(tcUserOperationsIntf.class);
objectOp = oimClient.getService(tcObjectOperationsIntf.class);
formOp = oimClient.getService(tcFormInstanceOperationsIntf.class);
tcResultSet userObjects = userOp.getObjects(userKey);
String objName = userObjects.getStringValue("Objects.Name"); // OID User
long procKey = userObjects.getLongValue("Process Instance.Key");
long objKey = userObjects.getLongValue("Objects.Key");
long childFormKey;
long parentformkey = formOp.getProcessFormDefinitionKey(procKey);
int parentformver = formOp.getProcessFormVersion(procKey);
tcResultSet childforms = formOp.getChildFormDefinition(parentformkey, parentformver);
String plChildTableName = childforms.getStringValue("Structure Utility.Table Name");
long formkey = childforms.getLongValue("Structure Utility.Child Tables.Child Key");
tcResultSet childFormData = formOp.getProcessFormChildData(formkey, procKey);
HashSet groupSet = getAccessPolicyMapping(userLogin);
for(int k =0;k
String group = childFormData.getStringValue("UD_OID_GRP_GROUP_NAME");
//Get existing set of groups assigned to the user.
existingUserGroups.add(group);
//This will remove the extra groups which shouldn't be assigned to the user as per the assigned roles.
if(!groupSet.contains(group)) {
System.out.println ("Removing Group " + group);
long plChildFormPrimaryKey = childFormData.getLongValue("UD_OID_GRP_KEY");
formOp.removeProcessFormChildData( formkey, plChildFormPrimaryKey );
}
}
// This add groups as per the roles.
HashSet addGroups = new HashSet(groupSet);
addGroups.removeAll(existingUserGroups);
Iterator itrAdd = addGroups.iterator();
System.out.println(" Add " + addGroups.size());
if(addGroups.size()!=0) {
while(itrAdd.hasNext()) {
String groupName = itrAdd.next().toString();
HashMap groupHash = new HashMap();
groupHash.put("UD_OID_GRP_GROUP_NAME", groupName);
System.out.println(" Add " + groupName);
formOp.addProcessFormChildData(formkey, procKey, groupHash);
}
}
}catch(Exception e) {
e.printStackTrace();
}
}
//Get list of groups that needs to be assigned as per the Access Policy attached to the assigned roles in OIM
public HashSet getAccessPolicyMapping(String userLogin) {
HashSet
try {
tcUtilityFactory ioUtilityFactory = new tcUtilityFactory(env,
OIM_USERNAME, OIM_PASSWORD);
moAccesspolicyutility = (tcAccessPolicyOperationsIntf) ioUtilityFactory
.getUtility("Thor.API.Operations.tcAccessPolicyOperationsIntf");
HashSet roleSet = getUserRoles(userLogin);
System.out.println(" Roles Assigned to the User " + userLogin + " are " + roleSet.toString());
Iterator itr = roleSet.iterator();
while(itr.hasNext()) {
String policyName = itr.next().toString();
HashMap searchPolicy = new HashMap();
searchPolicy.put("Access Policies.Name", policyName);
tcResultSet result = moAccesspolicyutility
.findAccessPolicies(searchPolicy);
HashMap
ArrayList
for (int i = 0; i < result.getTotalRowCount(); i++) {
result.goToRow(i);
long policyKey = result.getLongValue("Access Policies.Key");
tcResultSet policyresult = moAccesspolicyutility
.getDataSpecifiedFor(policyKey);
for (int f = 0; f < policyresult.getTotalRowCount(); f++) {
policyresult.goToRow(f);
long formKey = policyresult
.getLongValue("Structure Utility.Key");
long objectKey = policyresult.getLongValue("Objects.Key");
tcResultSet groupResult = moAccesspolicyutility
.getAssignedGroups(policyKey);
for (int j = 0; j < groupResult.getTotalRowCount(); j++) {
groupResult.goToRow(j);
AccessPolicyResourceData policyData = moAccesspolicyutility
.getDataSpecifiedForObject(policyKey,
objectKey, formKey);
HashMap
.getChildTables();
parentFormData= policyData.getFormData();
Set
Iterator formIterator = formSet.iterator();
while(formIterator.hasNext()) {
String key = formIterator.next().toString();
}
Set
Iterator
while (it.hasNext()) {
String tableKey = it.next().toString();
PolicyChildTableRecord[] pChildTableData = policyData
.getChildTableRecords(tableKey);
for (int g = 0; g < pChildTableData.length; g++) {
String EDRGroupName = pChildTableData[g]
.getValue("UD_OID_GRP_GROUP_NAME");
//System.out.println(EDRGroupName);
mappingSet.add(EDRGroupName);
}
}
}
}
}
}
}catch(Exception e) {
e.printStackTrace();
}
return mappingSet;
}
// This method return set containing roles assigned to the user.
public HashSet getUserRoles(String userLogin) {
HashSet
try {
RoleManager rolemanager = oimClient.getService(RoleManager.class);
List
.getUserMemberships(getUserKey(userLogin), false);
for (Role role : groupList) {
roleSet.add(role.getName().trim());
}
}catch(Exception e) {
e.printStackTrace();
}
return roleSet;
}
public HashSet
String lookupDecode = "Lookup.FTB.IgnoreRole";
HashSet
try {
//Read Lookup to Find FilteredRoles
tcLookupOperationsIntf lookupOps = oimClient.getService(tcLookupOperationsIntf.class);
tcResultSet lookupResultSet = lookupOps.getLookupValues(lookupDecode);
for (int i = 0; i < lookupResultSet.getRowCount(); i++) {
lookupResultSet.goToRow(i);
String decode = lookupResultSet.getStringValue(
LOOKUP_COLUMN_DECODE).trim();
filterRoles.add(decode);
}
}catch(Exception e) {
e.printStackTrace();
}
return filterRoles;
}
public String getUserKey(String userLogin) {
UserManager usrMgr = oimClient.getService(UserManager.class);
User user = null;
try {
user = usrMgr.getDetails(userLogin, null, true);
} catch (Exception e) {
e.printStackTrace();
}
return user.getAttribute("usr_key").toString();
}
public static void main(String args[]) throws Exception {
ForceUserProvisioning obj = new ForceUserProvisioning();
obj.updateUserGroups("UserID");
System.out.println("Program Complete");
}
}
Note: I wrote this code for temporary use as in one of the environment, group provisioning via access policy stopped working.
Labels:
11g,
11gR1,
AccessPolicy,
API,
Groups,
Java,
OID,
OIM,
Provisioning
Java Code to Add Entry in Lookup & Display Lookup Values
Here is the same java code to add entry in existing OIM Lookup and display all the Values from an existing OIM Lookup
import java.util.HashMap;
import java.util.Hashtable;
import oracle.iam.platform.OIMClient;
import Thor.API.tcResultSet;
import Thor.API.Operations.tcLookupOperationsIntf;
public class UpdateLookup {
private static final String OIM_URL = "t3s://<>:14001 ";
private static final String AUTH_CONF = "<< Path of authwl.conf >>";
private static final String OIM_USERNAME = "<< UserID >>";
private static final String OIM_PASSWORD = "<< Password >>";
private static OIMClient oimClient = null;
Hashtable env = new Hashtable();
public UpdateLookup() {
try {
env.put(OIMClient.JAVA_NAMING_FACTORY_INITIAL,
"weblogic.jndi.WLInitialContextFactory");
env.put(OIMClient.JAVA_NAMING_PROVIDER_URL, OIM_URL);
System.setProperty("java.security.auth.login.config", AUTH_CONF);
System.setProperty("OIM.AppServerType", "wls");
System.setProperty("APPSERVER_TYPE", "wls");
oimClient = new OIMClient(env);
oimClient.login(OIM_USERNAME, OIM_PASSWORD.toCharArray());
} catch (Exception e) {
e.printStackTrace();
}
}
public void addLookupEntry(String LookupCode,String Lookup) {
try {
tcLookupOperationsIntf lookupOps = oimClient
.getService(tcLookupOperationsIntf.class);
lookupOps.addLookupValue("<>", LookupKey,
LookupValue, "", "");
} catch (Exception e) {
e.printStackTrace();
}
}
public void displayLookup(String lookupname) {
try {
tcLookupOperationsIntf lookupOps = oimClient
.getService(tcLookupOperationsIntf.class);
tcResultSet values = lookupOps.getLookupValues(lookupname);
for (int i = 0; i < values.getRowCount(); i++) {
values.goToRow(i);
System.out
.print(values
.getStringValue("Lookup Definition.Lookup Code Information.Decode"));
System.out
.println(","
+ values.getStringValue("Lookup Definition.Lookup Code Information.Code Key"));
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String args[]) {
UpdateLookup obj = new UpdateLookup();
obj.addLookupEntry("LookupKey","LookupValue");
obj.displayLookup("LookupName");
}
}
Reference:
http://docs.oracle.com/cd/E17904_01/apirefs.1111/e17334/toc.htm
import java.util.HashMap;
import java.util.Hashtable;
import oracle.iam.platform.OIMClient;
import Thor.API.tcResultSet;
import Thor.API.Operations.tcLookupOperationsIntf;
public class UpdateLookup {
private static final String OIM_URL = "t3s://<
private static final String AUTH_CONF = "<< Path of authwl.conf >>";
private static final String OIM_USERNAME = "<< UserID >>";
private static final String OIM_PASSWORD = "<< Password >>";
private static OIMClient oimClient = null;
Hashtable
public UpdateLookup() {
try {
env.put(OIMClient.JAVA_NAMING_FACTORY_INITIAL,
"weblogic.jndi.WLInitialContextFactory");
env.put(OIMClient.JAVA_NAMING_PROVIDER_URL, OIM_URL);
System.setProperty("java.security.auth.login.config", AUTH_CONF);
System.setProperty("OIM.AppServerType", "wls");
System.setProperty("APPSERVER_TYPE", "wls");
oimClient = new OIMClient(env);
oimClient.login(OIM_USERNAME, OIM_PASSWORD.toCharArray());
} catch (Exception e) {
e.printStackTrace();
}
}
public void addLookupEntry(String LookupCode,String Lookup) {
try {
tcLookupOperationsIntf lookupOps = oimClient
.getService(tcLookupOperationsIntf.class);
lookupOps.addLookupValue("<
LookupValue, "", "");
} catch (Exception e) {
e.printStackTrace();
}
}
public void displayLookup(String lookupname) {
try {
tcLookupOperationsIntf lookupOps = oimClient
.getService(tcLookupOperationsIntf.class);
tcResultSet values = lookupOps.getLookupValues(lookupname);
for (int i = 0; i < values.getRowCount(); i++) {
values.goToRow(i);
System.out
.print(values
.getStringValue("Lookup Definition.Lookup Code Information.Decode"));
System.out
.println(","
+ values.getStringValue("Lookup Definition.Lookup Code Information.Code Key"));
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String args[]) {
UpdateLookup obj = new UpdateLookup();
obj.addLookupEntry("LookupKey","LookupValue");
obj.displayLookup("LookupName");
}
}
Reference:
http://docs.oracle.com/cd/E17904_01/apirefs.1111/e17334/toc.htm
Java Code to Create OIM 11g R1 Role Category
Here is the sample java code to create role cateogry in OIM 11gR1:
import java.util.HashMap;
import java.util.Hashtable;
import oracle.iam.identity.rolemgmt.api.RoleCategoryManager;
import oracle.iam.identity.rolemgmt.vo.RoleCategory;
import oracle.iam.identity.rolemgmt.vo.RoleManagerResult;
import oracle.iam.platform.OIMClient;
public class CreateRoleCategory {
private static final String OIM_URL = "t3s://<>:14001 ";
private static final String AUTH_CONF = "<< Path of authwl.conf File >>";
private static final String OIM_USERNAME = "<< UserID >>";
private static final String OIM_PASSWORD = "<< Password >>";
private static OIMClient oimClient = null;
Hashtable env = new Hashtable();
public CreateRoleCategory() {
try {
env.put(OIMClient.JAVA_NAMING_FACTORY_INITIAL,
"weblogic.jndi.WLInitialContextFactory");
env.put(OIMClient.JAVA_NAMING_PROVIDER_URL, OIM_URL);
System.setProperty("java.security.auth.login.config", AUTH_CONF);
System.setProperty("OIM.AppServerType", "wls");
System.setProperty("APPSERVER_TYPE", "wls");
oimClient = new OIMClient(env);
oimClient.login(OIM_USERNAME, OIM_PASSWORD.toCharArray());
} catch (Exception e) {
e.printStackTrace();
}
}
public void createCategory(String categoryName, String categoryDescription) {
try {
RoleCategoryManager rmgr = oimClient.getService(RoleCategoryManager.class);
RoleCategory rcategory = new RoleCategory(categoryName);
rcategory.setDescription(categoryDescription);
rcategory.setName(categoryName);
RoleManagerResult result = rmgr.create(rcategory); System.out.println(" Role Category " + categoryName + " Status " + result.getStatus());
}catch(Exception e) {
e.printStackTrace();
}
}
public static void main(String args[]) {
try {
CreateRoleCategory obj = new CreateRoleCategory();
obj.createCategory("CategoryName","CategoryDescription");
}catch(Exception e) {
e.printStackTrace();
}
}
}
References:
http://docs.oracle.com/cd/E17904_01/apirefs.1111/e17334/toc.htm
import java.util.HashMap;
import java.util.Hashtable;
import oracle.iam.identity.rolemgmt.api.RoleCategoryManager;
import oracle.iam.identity.rolemgmt.vo.RoleCategory;
import oracle.iam.identity.rolemgmt.vo.RoleManagerResult;
import oracle.iam.platform.OIMClient;
public class CreateRoleCategory {
private static final String OIM_URL = "t3s://<
private static final String AUTH_CONF = "<< Path of authwl.conf File >>";
private static final String OIM_USERNAME = "<< UserID >>";
private static final String OIM_PASSWORD = "<< Password >>";
private static OIMClient oimClient = null;
Hashtable
public CreateRoleCategory() {
try {
env.put(OIMClient.JAVA_NAMING_FACTORY_INITIAL,
"weblogic.jndi.WLInitialContextFactory");
env.put(OIMClient.JAVA_NAMING_PROVIDER_URL, OIM_URL);
System.setProperty("java.security.auth.login.config", AUTH_CONF);
System.setProperty("OIM.AppServerType", "wls");
System.setProperty("APPSERVER_TYPE", "wls");
oimClient = new OIMClient(env);
oimClient.login(OIM_USERNAME, OIM_PASSWORD.toCharArray());
} catch (Exception e) {
e.printStackTrace();
}
}
public void createCategory(String categoryName, String categoryDescription) {
try {
RoleCategoryManager rmgr = oimClient.getService(RoleCategoryManager.class);
RoleCategory rcategory = new RoleCategory(categoryName);
rcategory.setDescription(categoryDescription);
rcategory.setName(categoryName);
RoleManagerResult result = rmgr.create(rcategory); System.out.println(" Role Category " + categoryName + " Status " + result.getStatus());
}catch(Exception e) {
e.printStackTrace();
}
}
public static void main(String args[]) {
try {
CreateRoleCategory obj = new CreateRoleCategory();
obj.createCategory("CategoryName","CategoryDescription");
}catch(Exception e) {
e.printStackTrace();
}
}
}
References:
http://docs.oracle.com/cd/E17904_01/apirefs.1111/e17334/toc.htm
Java Code to Search Active Directory on LDAPS
Here is the sample java code to search Active Directory for user information.
import java.util.Hashtable;
import javax.naming.ldap.*;
import javax.naming.directory.*;
import javax.naming.*;
public class searchActiveDirectory {
public void getUserDetails() {
Hashtable env = new Hashtable();
String adminName = "<<DN of the Admin Account>>";
String adminPassword = "<<Password of Admin Account>>";
String ldapURL = "ldaps://<<ADHost>>:636";
String keystore = "<>";
String searchBase = "<<Base DN>>";
System.setProperty("javax.net.ssl.trustStore", keystore);
env.put(Context.INITIAL_CONTEXT_FACTORY,
"com.sun.jndi.ldap.LdapCtxFactory");
// set security credentials
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, adminName);
env.put(Context.SECURITY_CREDENTIALS, adminPassword);
// specify use of ssl
env.put(Context.SECURITY_PROTOCOL, "ssl");
// connect to my domain controller
env.put(Context.PROVIDER_URL, ldapURL);
try {
// Create the initial directory context
DirContext ctx = new InitialLdapContext(env, null);
// Create the search controls
SearchControls searchCtls = new SearchControls();
// Specify the attributes to return
String returnedAtts[] = { "sAMAccountName", "sn", "givenName",
"mail", "description", "userAccountControl","whenCreated","distinguishedName" };
searchCtls.setReturningAttributes(returnedAtts);
// Specify the search scope
searchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE);
// specify the LDAP search filter
//String searchFilter = "(&(objectClass=user)(sAMAccountName="+username+"))";
String searchFilter = "(&(objectClass=user)(!(objectClass=computer))(whenCreated>=20131227000000.0Z))";
// Search for objects using the filter
NamingEnumeration answer = ctx.search(searchBase, searchFilter,
searchCtls);
// Loop through the search results
while (answer.hasMoreElements()) {
SearchResult sr = (SearchResult) answer.next();
Attributes attrs = sr.getAttributes();
if (attrs != null) {
try {
System.out.println(attrs.get("sAMAccountName").get()+","+attrs.get("whenCreated").get());
System.out.println(attrs.get("distinguishedName"));
} catch (NullPointerException e) {
System.out.println("Errors listing attributes: " + e);
}
}
}
ctx.close();
} catch (NamingException e) {
System.err.println("Problem searching directory: " + e);
}
}
public static void main(String[] args) throws Exception{
searchActiveDirectory s = new searchActiveDirectory();
s.getUserDetails();
}
}
import java.util.Hashtable;
import javax.naming.ldap.*;
import javax.naming.directory.*;
import javax.naming.*;
public class searchActiveDirectory {
public void getUserDetails() {
Hashtable env = new Hashtable();
String adminName = "<<DN of the Admin Account>>";
String adminPassword = "<<Password of Admin Account>>";
String ldapURL = "ldaps://<<ADHost>>:636";
String keystore = "<
String searchBase = "<<Base DN>>";
System.setProperty("javax.net.ssl.trustStore", keystore);
env.put(Context.INITIAL_CONTEXT_FACTORY,
"com.sun.jndi.ldap.LdapCtxFactory");
// set security credentials
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, adminName);
env.put(Context.SECURITY_CREDENTIALS, adminPassword);
// specify use of ssl
env.put(Context.SECURITY_PROTOCOL, "ssl");
// connect to my domain controller
env.put(Context.PROVIDER_URL, ldapURL);
try {
// Create the initial directory context
DirContext ctx = new InitialLdapContext(env, null);
// Create the search controls
SearchControls searchCtls = new SearchControls();
// Specify the attributes to return
String returnedAtts[] = { "sAMAccountName", "sn", "givenName",
"mail", "description", "userAccountControl","whenCreated","distinguishedName" };
searchCtls.setReturningAttributes(returnedAtts);
// Specify the search scope
searchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE);
// specify the LDAP search filter
//String searchFilter = "(&(objectClass=user)(sAMAccountName="+username+"))";
String searchFilter = "(&(objectClass=user)(!(objectClass=computer))(whenCreated>=20131227000000.0Z))";
// Search for objects using the filter
NamingEnumeration answer = ctx.search(searchBase, searchFilter,
searchCtls);
// Loop through the search results
while (answer.hasMoreElements()) {
SearchResult sr = (SearchResult) answer.next();
Attributes attrs = sr.getAttributes();
if (attrs != null) {
try {
System.out.println(attrs.get("sAMAccountName").get()+","+attrs.get("whenCreated").get());
System.out.println(attrs.get("distinguishedName"));
} catch (NullPointerException e) {
System.out.println("Errors listing attributes: " + e);
}
}
}
ctx.close();
} catch (NamingException e) {
System.err.println("Problem searching directory: " + e);
}
}
public static void main(String[] args) throws Exception{
searchActiveDirectory s = new searchActiveDirectory();
s.getUserDetails();
}
}
Saturday, January 26, 2013
OIM11g PostProcess EventHandler on RoleMembership
Below is the PostProcess Event Handler that I wrote to update a Custom UDF in OIM with the list of Roles assigned to the user (seperate by delimiter ','). This EventHandler is triggered every time a role is assigned/revoked to the user. The EventHandler for entity-type='RoleUser' actually calls the BulkEventResult execute() method, not the EventResult execute() method [ Oracle Doc ID: 1461252.1 ].
package oracle.oim.extensions.postprocess;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.io.Serializable;
import Thor.API.tcResultSet;
import Thor.API.Operations.tcLookupOperationsIntf;
import oracle.iam.identity.rolemgmt.api.RoleManager;
import oracle.iam.identity.rolemgmt.vo.Role;
import oracle.iam.identity.usermgmt.api.UserManager;
import oracle.iam.identity.usermgmt.vo.User;
import oracle.iam.identity.usermgmt.vo.UserManagerResult;
import oracle.iam.platform.Platform;
import oracle.iam.platform.kernel.spi.PostProcessHandler;
import oracle.iam.platform.kernel.vo.AbstractGenericOrchestration;
import oracle.iam.platform.kernel.vo.BulkEventResult;
import oracle.iam.platform.kernel.vo.BulkOrchestration;
import oracle.iam.platform.kernel.vo.EventResult;
import oracle.iam.platform.kernel.vo.Orchestration;
import oracle.iam.platform.entitymgr.vo.SearchCriteria;
public class RoleProcessor implements PostProcessHandler {
private static final String LOOKUP_COLUMN_DECODE = "Lookup Definition.Lookup Code Information.Decode";
public BulkEventResult execute(long processId, long eventId,
BulkOrchestration orchestration) {
// TODO Auto-generated method stub
try {
String userKey = null;
String operation = orchestration.getOperation().trim().toString();
System.out.println("<---------- br="" bulkeventresult=""> + getClass().getName() + ": Operation[" + operation + "] Execute ---------->");
HashMap
.getBulkParameters();
for (int j = 0; j < bulkParameters.length; j++) {
Set set = bulkParameters[j].keySet();
Iterator itr = set.iterator();
while (itr.hasNext()) {
String key = itr.next().toString();
if ("userKeys".equalsIgnoreCase(key)) {
//Value of UserKey comes as [6088]. So below is the regex to replace special character from the Userkey.
// Regular Expression to replace Special Character '[' & ']' from the UserKey
userKey = bulkParameters[j].get(key).toString().replaceAll("[\\[\\]]", "");
System.out.println("userKey ->" + userKey);
}
}
}
// Get List of Roles to be Filtered
HashSet
// Find List of Roles assigned to the user in OIM
StringBuffer stringBuffer = new StringBuffer();
RoleManager rolemanager = Platform.getService(RoleManager.class);
List
.getUserMemberships(userKey, true);
HashSet
for (Role role : groupList) {
String roleName = role.getAttribute("Role Name").toString();
System.out.println("RoleName :" + roleName);
roleList.add(roleName);
}
// Remove Roles like "ALL Users" and other default roles that are assigned to users. Requirement was to store only business/functional/applciation specific roles in Custom UDF.
roleList.removeAll(removeRoles);
Iterator
String role = null;
System.out.println("Role To Be Assigned Count is: " + roleList.size());
int counter = 1;
while (iterator.hasNext()) {
role = iterator.next().toString();
stringBuffer.append(role);
if (counter != roleList.size()) {
stringBuffer.append(",");
}
counter++;
}
String RoleList = stringBuffer.toString();
System.out.println("Role List: " + RoleList );
// Updating UDF
HashMap
mapAttrs.put("Role List", RoleList);
executeEvent(bulkParameters, orchestration.getTarget().getType(),
userKey, RoleList);
} catch (Exception e) {
e.printStackTrace();
}
return new BulkEventResult();
}
public HashSet
System.out.println("Reading Lookup");
String lookupDecode = "Lookup.RoleProcessor.IgnoreRole";
HashSet
try {
//Read Lookup to Find FilteredRoles
tcLookupOperationsIntf lookupOps = Platform.getService(tcLookupOperationsIntf.class);
tcResultSet lookupResultSet = lookupOps.getLookupValues(lookupDecode);
for (int i = 0; i < lookupResultSet.getRowCount(); i++) {
lookupResultSet.goToRow(i);
String decode = lookupResultSet.getStringValue(
LOOKUP_COLUMN_DECODE).trim();
filterRoles.add(decode);
}
}catch(Exception e) {
e.printStackTrace();
}
return filterRoles;
}
private void executeEvent(HashMap[] parameterHashMap, String targetType,
String userKey, String RoleList) {
try {
System.out.println("Inside executeEvent () ");
System.out.println("userKey " + userKey);
System.out.println("Role List for UDF: " + RoleList);
HashMap
mapAttrs.put("Role List", RoleList);
// Finding User Login using usr_key as UserManager modify() expect User Login Name as one of the input parameters
String username = null;
UserManager userService = Platform.getService(UserManager.class);
SearchCriteria criteria = new SearchCriteria("usr_key", userKey,
SearchCriteria.Operator.EQUAL);
Set
HashMap
HashMap
attrNames = new HashSet
attrNames.add("User Login");
List
//Set
users = userService.search(criteria, attrNames, parameters);
System.out.println("Searching User_Login based on USR_KEY");
if (users != null && !users.isEmpty()) {
System.out.println("search results, quantity=" + users.size());
for (User user : users) {
attributes = user.getAttributes();
//keys = attributes.keySet();
username = attributes.get("User Login").toString();
System.out.println("User Login " + username);
}
}
System.out.println("Updating UDF using UserManager");
User user = null;
user = new User(username,mapAttrs);
UserManagerResult result = userService.modify("User Login",username,user);
System.out.println( "Modification Status " + result.getStatus());
} catch (Exception e) {
System.out.println(e.getMessage());
e.printStackTrace();
}
}
@Override
public void initialize(HashMap
// TODO Auto-generated method stub
System.out
.println("Initialize RoleProcessor OIM PostProcess EventHandler");
}
@Override
public boolean cancel(long arg0, long arg1,
AbstractGenericOrchestration arg2) {
System.out.println("Inside cancel() method");
// TODO Auto-generated method stub
return false;
}
@Override
public void compensate(long arg0, long arg1,
AbstractGenericOrchestration arg2) {
System.out.println("Inside compensate() method");
// TODO Auto-generated method stub
}
@Override
public EventResult execute(long arg0, long arg1, Orchestration arg2) {
// TODO Auto-generated method stub
System.out.println("Inside EventResult execute ");
return null;
}
}
Note: This blog is just for my record keeping and contains my views/experience but if it helps someone, then I will be very glad.
Friday, December 21, 2012
OIM 11g: Read Access Policy Data
Hi,
Below is the sample code that I wrote to read the Data of Access Policies that are modified today. The code gives you the assigned role and the Groups provisioned to user by this access policy. In my case, the assigned resource was Oracle Internet Directory. The code uses the OIM 9.x APIs as 11g doesn't provide any API to get the access policies data.
package sample;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Set;
import com.ibm.keymanager.logic.e;
import com.thortech.xl.vo.AccessPolicyResourceData;
import com.thortech.xl.vo.PolicyChildTableRecord;
import Thor.API.tcResultSet;
import Thor.API.tcUtilityFactory;
import Thor.API.Operations.tcAccessPolicyOperationsIntf;
import Thor.API.Operations.tcFormDefinitionOperationsIntf;
import oracle.iam.accesspolicy.vo.PolicyObjectDetails;
import oracle.iam.platform.OIMClient;
public class fetchAccessPolicyData {
private static final String OIM_URL = "t3://oimhost:oimport";
private static final String AUTH_CONF = "C:/designconsole/config/authwl.conf";
private static final String OIM_USERNAME = "xelsysadm";
private static final String OIM_PASSWORD = "password";
private static OIMClient oimClient = null;
Hashtable env = new Hashtable();
public tcAccessPolicyOperationsIntf moAccesspolicyutility;
public fetchAccessPolicyData() {
try {
env.put(OIMClient.JAVA_NAMING_FACTORY_INITIAL,
"weblogic.jndi.WLInitialContextFactory");
env.put(OIMClient.JAVA_NAMING_PROVIDER_URL, OIM_URL);
System.setProperty("java.security.auth.login.config", AUTH_CONF);
System.setProperty("OIM.AppServerType", "wls");
System.setProperty("APPSERVER_TYPE", "wls");
oimClient = new OIMClient(env);
oimClient.login(OIM_USERNAME, OIM_PASSWORD.toCharArray());
} catch (Exception e) {
e.printStackTrace();
}
return;
}
public void getData() {
try {
tcUtilityFactory ioUtilityFactory = new tcUtilityFactory(env,
"xelsysadm", "Abcd1234");
moAccesspolicyutility = (tcAccessPolicyOperationsIntf) ioUtilityFactory
.getUtility("Thor.API.Operations.tcAccessPolicyOperationsIntf");
tcFormDefinitionOperationsIntf formOp = (tcFormDefinitionOperationsIntf) ioUtilityFactory
.getUtility("Thor.API.Operations.tcFormDefinitionOperationsIntf");
HashMap attributeList = new HashMap();
attributeList.put("Access Policies.Retrofit Flag", 1);
tcResultSet result = moAccesspolicyutility
.findAccessPolicies(attributeList);
// tcResultSet result =
// moAccesspolicyutility.getAccessPolicyByResourceName("OID User");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date now = new Date();
String strDate = sdf.format(now);
System.out.println("Current Date: " + strDate);
String policyDate;
for (int i = 0; i < result.getTotalRowCount(); i++) {
result.goToRow(i);
policyDate = result.getStringValue("Access Policies.Update Date");
if (strDate.compareTo(policyDate) == 0) {
System.out.println("Access Policy Name :"
+ result.getStringValue("Access Policies.Name"));
System.out.println("Access Policies.Update Date :"
+ result.getStringValue("Access Policies.Update Date"));
long policyKey = result.getLongValue("Access Policies.Key");
tcResultSet policyresult = moAccesspolicyutility
.getDataSpecifiedFor(policyKey);
for (int f = 0; f < policyresult.getTotalRowCount(); f++) {
policyresult.goToRow(f);
long formKey = policyresult
.getLongValue("Structure Utility.Key");
long objectKey = policyresult.getLongValue("Objects.Key");
tcResultSet groupResult = moAccesspolicyutility
.getAssignedGroups(policyKey);
for (int j = 0; j < groupResult.getTotalRowCount(); j++) {
groupResult.goToRow(j);
// This gives you the Role for which access policy will be triggered.
System.out.println(groupResult
.getStringValue("Groups.Group Name") + ",");
AccessPolicyResourceData policyData = moAccesspolicyutility
.getDataSpecifiedForObject(policyKey,
objectKey, formKey);
HashMap pData = policyData.getChildTables();
Set s = pData.keySet();
Iterator it = s.iterator();
while (it.hasNext()) {
String tableKey = it.next().toString();
// System.out.println("tableKey " +tableKey);
PolicyChildTableRecord[] pChildTableData = policyData
.getChildTableRecords(tableKey);
// System.out.println("pChildTableData.length " +
// pChildTableData.length);
for (int g = 0; g < pChildTableData.length; g++) {
String EDRGroupName = pChildTableData[g]
.getValue("UD_OID_GRP_GROUP_NAME");
String arrtemp1[] = EDRGroupName.split(",");
// System.out.println(arrtemp1[0]);
String arrtemp2[] = arrtemp1[0].split("=");
//This will give you the groups which will be assigned to user account in OID/target resource applicable.
System.out.print(arrtemp2[1]);
System.out.println(";");
}
}
}
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
References:
http://docs.oracle.com/cd/E17904_01/apirefs.1111/e17334/Thor/API/Operations/tcAccessPolicyOperationsIntf.html
http://docs.oracle.com/cd/E27559_01/apirefs.1112/e28159/com/thortech/xl/vo/AccessPolicyResourceData.html
Thanks
Below is the sample code that I wrote to read the Data of Access Policies that are modified today. The code gives you the assigned role and the Groups provisioned to user by this access policy. In my case, the assigned resource was Oracle Internet Directory. The code uses the OIM 9.x APIs as 11g doesn't provide any API to get the access policies data.
package sample;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Set;
import com.ibm.keymanager.logic.e;
import com.thortech.xl.vo.AccessPolicyResourceData;
import com.thortech.xl.vo.PolicyChildTableRecord;
import Thor.API.tcResultSet;
import Thor.API.tcUtilityFactory;
import Thor.API.Operations.tcAccessPolicyOperationsIntf;
import Thor.API.Operations.tcFormDefinitionOperationsIntf;
import oracle.iam.accesspolicy.vo.PolicyObjectDetails;
import oracle.iam.platform.OIMClient;
public class fetchAccessPolicyData {
private static final String OIM_URL = "t3://oimhost:oimport";
private static final String AUTH_CONF = "C:/designconsole/config/authwl.conf";
private static final String OIM_USERNAME = "xelsysadm";
private static final String OIM_PASSWORD = "password";
private static OIMClient oimClient = null;
Hashtable
public tcAccessPolicyOperationsIntf moAccesspolicyutility;
public fetchAccessPolicyData() {
try {
env.put(OIMClient.JAVA_NAMING_FACTORY_INITIAL,
"weblogic.jndi.WLInitialContextFactory");
env.put(OIMClient.JAVA_NAMING_PROVIDER_URL, OIM_URL);
System.setProperty("java.security.auth.login.config", AUTH_CONF);
System.setProperty("OIM.AppServerType", "wls");
System.setProperty("APPSERVER_TYPE", "wls");
oimClient = new OIMClient(env);
oimClient.login(OIM_USERNAME, OIM_PASSWORD.toCharArray());
} catch (Exception e) {
e.printStackTrace();
}
return;
}
public void getData() {
try {
tcUtilityFactory ioUtilityFactory = new tcUtilityFactory(env,
"xelsysadm", "Abcd1234");
moAccesspolicyutility = (tcAccessPolicyOperationsIntf) ioUtilityFactory
.getUtility("Thor.API.Operations.tcAccessPolicyOperationsIntf");
tcFormDefinitionOperationsIntf formOp = (tcFormDefinitionOperationsIntf) ioUtilityFactory
.getUtility("Thor.API.Operations.tcFormDefinitionOperationsIntf");
HashMap attributeList = new HashMap();
attributeList.put("Access Policies.Retrofit Flag", 1);
tcResultSet result = moAccesspolicyutility
.findAccessPolicies(attributeList);
// tcResultSet result =
// moAccesspolicyutility.getAccessPolicyByResourceName("OID User");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date now = new Date();
String strDate = sdf.format(now);
System.out.println("Current Date: " + strDate);
String policyDate;
for (int i = 0; i < result.getTotalRowCount(); i++) {
result.goToRow(i);
policyDate = result.getStringValue("Access Policies.Update Date");
if (strDate.compareTo(policyDate) == 0) {
System.out.println("Access Policy Name :"
+ result.getStringValue("Access Policies.Name"));
System.out.println("Access Policies.Update Date :"
+ result.getStringValue("Access Policies.Update Date"));
long policyKey = result.getLongValue("Access Policies.Key");
tcResultSet policyresult = moAccesspolicyutility
.getDataSpecifiedFor(policyKey);
for (int f = 0; f < policyresult.getTotalRowCount(); f++) {
policyresult.goToRow(f);
long formKey = policyresult
.getLongValue("Structure Utility.Key");
long objectKey = policyresult.getLongValue("Objects.Key");
tcResultSet groupResult = moAccesspolicyutility
.getAssignedGroups(policyKey);
for (int j = 0; j < groupResult.getTotalRowCount(); j++) {
groupResult.goToRow(j);
// This gives you the Role for which access policy will be triggered.
System.out.println(groupResult
.getStringValue("Groups.Group Name") + ",");
AccessPolicyResourceData policyData = moAccesspolicyutility
.getDataSpecifiedForObject(policyKey,
objectKey, formKey);
HashMap pData = policyData.getChildTables();
Set s = pData.keySet();
Iterator it = s.iterator();
while (it.hasNext()) {
String tableKey = it.next().toString();
// System.out.println("tableKey " +tableKey);
PolicyChildTableRecord[] pChildTableData = policyData
.getChildTableRecords(tableKey);
// System.out.println("pChildTableData.length " +
// pChildTableData.length);
for (int g = 0; g < pChildTableData.length; g++) {
String EDRGroupName = pChildTableData[g]
.getValue("UD_OID_GRP_GROUP_NAME");
String arrtemp1[] = EDRGroupName.split(",");
// System.out.println(arrtemp1[0]);
String arrtemp2[] = arrtemp1[0].split("=");
//This will give you the groups which will be assigned to user account in OID/target resource applicable.
System.out.print(arrtemp2[1]);
System.out.println(";");
}
}
}
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
References:
http://docs.oracle.com/cd/E17904_01/apirefs.1111/e17334/Thor/API/Operations/tcAccessPolicyOperationsIntf.html
http://docs.oracle.com/cd/E27559_01/apirefs.1112/e28159/com/thortech/xl/vo/AccessPolicyResourceData.html
Thanks
Subscribe to:
Posts (Atom)