SCIM service has been added as a new functionality in OIM PS3.
The below java has the create/modify/view and delete Functionality.
The following jars are required to compile the java
![Inline image 1](https://mail.google.com/mail/u/0/?ui=2&ik=95eb142ccd&view=fimg&th=153f5f68c77a323b&attid=0.1&disp=emb&realattid=ii_153f5f64a930f147&attbid=ANGjdJ8tkzpcurk3ZjPKVCe4yyNsqZYW_181tnxm23aZWy8Rbi0PYTvORE3EwEMLmBbt-ewgvmP6VTov03BqKEaD5SCUgLu2x9iB0shiq-RIIWVw4S88hcN07lUJ20k&sz=w600-h194&ats=1460120525618&rm=153f5f68c77a323b&zw&atsh=1)
The below java has the create/modify/view and delete Functionality.
The following jars are required to compile the java
package oracle.iam.webservice;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net. MalformedURLException;
import java.net.ProtocolException;
import java.net.URL;
import org.apache.commons.httpclient. HttpClient;
import org.apache.commons.httpclient. methods.PostMethod;
import org.apache.commons.httpclient. methods.StringRequestEntity;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
public class SCIMUserOperations {
private String userName = "xelsysadm";
private String password = "testertt";
public void createUser() {
String authString = userName + ":" + password;
String authStringEnc = "Basic " + new String(new Decoder.BASE64Encoder(). encode(authString.getBytes())) ;
System.out.println("Base64 encoded auth string: " + authStringEnc);
URL url = null;
try {
JSONObject obj = new JSONObject();
JSONObject obj2 = new JSONObject();
JSONObject homeValue = new JSONObject();
JSONObject homeOrg = new JSONObject();
JSONArray schemas = new JSONArray();
JSONArray email = new JSONArray();
JSONObject objEmail = new JSONObject();
schemas.put("urn:ietf:params: scim:schemas:core:2.0:User");
schemas.put("urn:ietf:params: scim:schemas:extension: enterprise:2.0:User");
schemas.put("urn:ietf:params: scim:schemas:extension:oracle: 2.0:OIG:User");
schemas.put("urn:ietf:params: scim:schemas:extension:oracle: 2.0:IDM:User");
obj.put("schemas", schemas);
obj.put("userName", "NAPI3"); // UserLogin
obj2.put("familyName", "UserS02"); // LastName
obj2.put("givenName", "TestS02"); // FirstName
obj2.put("middleName", "ts02");
obj2.put("honorificSuffix", "III");
obj.put("name", obj2);
obj.put("displayName", "NAPI4 UserS02");
obj.put("profileUrl", "http://192.1.56.101:14000/ N1API");
objEmail.put("value", "TestS0222@gmail.com");
objEmail.put("type", "work");
email.put(objEmail);
obj.put("emails", email);
obj.put("userType", "EMP");
obj.put("title", "Tour Guide");
obj.put("preferredLanguage", "en-US");
obj.put("locale", "en-US");
obj.put("timezone", "America/Los_Angeles");
homeValue.put("value", "21");
homeValue.put("$ref", "http://192.1.56.101:14000/ idaas/im/scim/v1/ Organizations/21");
homeOrg.put("homeOrganization" , homeValue);
obj.put("organization", "Active");
obj.put("urn:ietf:params:scim: schemas:extension:oracle:2.0: OIG:User", homeOrg);
System.out.println("Jason object is --->" + obj);
HttpURLConnection connection = null;
connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod(" POST");
connection.setRequestProperty( "Content-Type", "application/scim+json");
connection.setRequestProperty( "Authorization", authStringEnc);
connection.setConnectTimeout( 5000);
connection.setDoOutput(true);
connection.setReadTimeout( 5000);
OutputStreamWriter out = new OutputStreamWriter(connection. getOutputStream());
out.write(obj.toString());
out.close();
BufferedReader in = new BufferedReader(new InputStreamReader(connection. getInputStream()));
System.out.println("Buffered input is" + in);
System.out.println("Response code from server is ::" + connection.getResponseCode());
System.out.println("User created successfully");
} catch (ProtocolException e) {
e.printStackTrace();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
}
public void fetchUserDetails(String userLogin) {
String authString = userName + ":" + password;
String authStringEnc = "Basic " + new String(new Decoder.BASE64Encoder(). encode(authString.getBytes())) ;
System.out.println("Base64 encoded auth string: " + authStringEnc);
URL url = null;
try {
url = new URL(" http://192.1.56.101:14000/ idaas/im/scim/v1/Users?filter= (userName co " + userLogin + ")");
HttpURLConnection connection = null;
connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod(" GET");
connection.setRequestProperty( "Accept", "application/scim+json");
connection.setRequestProperty( "Authorization", authStringEnc);
connection.setConnectTimeout( 5000);
connection.setReadTimeout( 5000);
BufferedReader in = null;
in = new BufferedReader(new InputStreamReader(connection. getInputStream()));
System.out.println(in. readLine());
System.out.println("\n REST Service Invoked Successfully..");
in.close();
} catch (ProtocolException e) {
e.printStackTrace();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public void modifyUserDetails(String userKey) {
PostMethod m = new PostMethod("http://192.1.56. 101:14000/idaas/im/scim/v1/ Users/" + userKey) {
@Override
public String getName() {
return "PATCH";
}
};
String authString = userName + ":" + password;
String authStringEnc = "Basic " + new String(new Decoder.BASE64Encoder(). encode(authString.getBytes())) ;
System.out.println("Base64 encoded auth string: " + authStringEnc);
m.setRequestHeader(" Authorization", authStringEnc);
try {
JSONObject obj = new JSONObject();
JSONObject obj2 = new JSONObject();
JSONArray schemas = new JSONArray();
JSONArray operation = new JSONArray();
schemas.put("urn:ietf:params: scim:api:messages:2.0:PatchOp" );
obj.put("schemas", schemas);
obj2.put("op", "replace");
obj2.put("value", "displayName nvAPI");
obj2.put("path", "displayName");
operation.put(obj2);
obj.put("Operations", operation);
m.setRequestEntity(new StringRequestEntity(obj. toString(), "application/scim+json", "UTF-8"));
HttpClient c = new HttpClient();
int sc = c.executeMethod(m);
System.out.println("status code returned is :: " + sc);
System.out.println("Jason object is --->" + obj);
} catch (JSONException e) {
e.printStackTrace();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public void deleteUser(String userKey) {
String authString = userName + ":" + password;
String authStringEnc = "Basic " + new String(new Decoder.BASE64Encoder(). encode(authString.getBytes())) ;
System.out.println("Base64 encoded auth string: " + authStringEnc);
URL url = null;
try {
HttpURLConnection connection = null;
connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod(" DELETE");
connection.setRequestProperty( "Accept", "application/scim+json");
connection.setRequestProperty( "Authorization", authStringEnc);
connection.setConnectTimeout( 5000);
connection.setReadTimeout( 5000);
System.out.println("\n REST Service Invoked Successfully..");
} catch (ProtocolException e) {
e.printStackTrace();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
SCIMUserOperations scimOperations = new SCIMUserOperations();
scimOperations.createUser();
// scimOperations. fetchUserDetails("NAPI" );
// scimOperations. modifyUserDetails("142");
// scimOperations.deleteUser(" 143");
}
}