Wednesday 11 January 2017

SCIM REST Web Service - Modify User in OIM11gR2-PS3


Modify user in OIM through SCIM/Rest Services-
-----------------------------------------------------------------------------------
Required Jar File-
java-json.jar
sun.misc.BASE64Decoder.jar
apache-httpcomponents-httpcore.jar
apache-jakarta-commons-httpclient.jar
commons-codec-1.9.jar
commons-logging.jar
commons-httpclient-3.1.jar
==================================================

package oracle.iam.webservice;

public class OIMUserManagementBySCIM
{
/*
Operation-2: Modify User Method
*/
public void modifyUser()
{
//1. Define URL with User Key
org.apache.commons.httpclient.methods.PostMethod m = new org.apache.commons.httpclient.methods.PostMethod("http://oimhost:14000/idaas/im/scim/v1/Users/13337")
{
@Override
//2. Calling PATCH Operation
public String getName()
{
System.out.println(" After PATCH ");
return "PATCH";
}
};
//3. Define Authorization
System.out.println(" Passing Credential ");
String userCredentials = "xelsysadm:Welcome@1";
new com.sun.xml.internal.messaging.saaj.util.Base64();
String basicAuth = "Basic " + new String(com.sun.xml.internal.messaging.saaj.util.Base64.encode(userCredentials.getBytes()));
m.setRequestHeader("Authorization", basicAuth);
try
{
//4. Creating Object
org.json.JSONObject request_body = new org.json.JSONObject();
org.json.JSONArray request_body_schemas = new org.json.JSONArray();

//5. Passing SChema
request_body_schemas.put("urn:ietf:params:scim:api:messages:2.0:PatchOp");
request_body.put("schemas", request_body_schemas);  
org.json.JSONArray request_body_operation= new org.json.JSONArray();

//6. Updating/Modifying Attributes
//Basic Attribute
org.json.JSONObject request_body_lastname= new org.json.JSONObject();
request_body_lastname.put("op", "replace");
request_body_lastname.put("path", "urn:ietf:params:scim:schemas:core:2.0:User:name.givenName");
request_body_lastname.put("value", "testcbs23_new");
request_body_operation.put(request_body_lastname);

org.json.JSONObject request_body_employeeNumber= new org.json.JSONObject();
request_body_employeeNumber.put("op", "replace");
request_body_employeeNumber.put("path", "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:employeeNumber");
request_body_employeeNumber.put("value", "11123010");
request_body_operation.put(request_body_employeeNumber);

// Custom Attribute
org.json.JSONObject request_body_employeeStatus= new org.json.JSONObject();
request_body_employeeStatus.put("op", "replace");
request_body_employeeStatus.put("path", "urn:ietf:params:scim:schemas:extension:oracle:2.0:OIG:User:EmployeeStatus");
request_body_employeeStatus.put("value", "Active");
request_body_operation.put(request_body_employeeStatus);

org.json.JSONObject request_body_division= new org.json.JSONObject();
request_body_division.put("op", "replace");
request_body_division.put("path", "urn:ietf:params:scim:schemas:extension:oracle:2.0:OIG:User:Division");
request_body_division.put("value", "CORPORATE");
request_body_operation.put(request_body_division);

request_body.put("Operations", request_body_operation);
System.out.println("JSON Object: "+request_body);

//7. Sending Data in OIM
   m.setRequestEntity(new org.apache.commons.httpclient.methods.StringRequestEntity(request_body.toString(), "application/scim+json", "UTF-8"));
   org.apache.commons.httpclient.HttpClient c = new org.apache.commons.httpclient.HttpClient();
int sc = c.executeMethod(m);
System.out.println("PATCH call returned a Modify status code ::" + sc);

}
catch (java.net.ProtocolException e)
{
  // TODO Auto-generated catch block
  e.printStackTrace();
}
catch (java.net.MalformedURLException e)
{
  // TODO Auto-generated catch block
  e.printStackTrace();
}
catch (java.io.IOException e)
{
  // TODO Auto-generated catch block
  e.printStackTrace();
}
catch (org.json.JSONException e)
{
  // TODO Auto-generated catch block
  e.printStackTrace();
}
   }

public static void main(String args[])
{
OIMUserManagementBySCIM usermgmt=new OIMUserManagementBySCIM();
usermgmt.modifyUser();
}
}

No comments:

Post a Comment