This entry guides you through on how to create and remove users and groups via REST API using Java in Ambience v4.x
Contents:
A/ Creating User
B/ Removing User
C/ Creating Group
D/ Removing Group
Additional Contents:
E/ Adding and Removing User Accounts from a Group
F/ Editing User’s Permissions
A/ Creating User
-
Create a Java Project using your desired IDE.
-
Ensure the following jar files are in your java project
/lib
build path:
- httpclient-<version>.jar
- httpcore-<version>.jar
-
Create a new Java class.
(i.e. Create_User.java) -
Add in the following line of codes:
import java.io.IOException;
import java.net.MalformedURLException;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
@SuppressWarnings("deprecation")
public class Create_User extends DefaultHttpClient {
public static void main(String[] args) {
try (DefaultHttpClient httpClient = new DefaultHttpClient() ){
//change hostname (localhost) and domain name (eno) as appropriate
HttpPost postRequest = new HttpPost(
"http://localhost:8080/elx/do/eno/ad/usergroupdb/user");
//attach an Authorization header to the request to authenticate the request as being from an administrator
//send the user:pass as a Base64 encoded string, so admin:sa becomes YWRtaW46c2E=
postRequest.addHeader("Authorization", "Basic YWRtaW46c2E=");
StringEntity input = new StringEntity("{\"name\":\"user2\",\"admin\":false,\"enabled\": true,"
+ "\"changePassword\":false,\"email\":\"test2@example.com\",\"groups\": [\"group1\"],\"password\":\"abc123\"}");
input.setContentType("application/json");
postRequest.setEntity(input);
HttpResponse response = httpClient.execute(postRequest);
if (response.getStatusLine().getStatusCode() != 201) {
throw new RuntimeException("Failed : HTTP error code : " + response.getStatusLine().getReasonPhrase());
}
httpClient.getConnectionManager().shutdown();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
*Do edit the codes above as needed.
-
Save the file and run the code.
-
A new user (i.e. user2) should be created in your Ambience server following the properties defined in the codes above.
For example,
B/ Removing User
-
Create a Java Project using your desired IDE.
-
Ensure the following jar files are in your java project
/lib
build path:
- httpclient-<version>.jar
- httpcore-<version>.jar
-
Create a new Java class.
(i.e. Remove_User.java) -
Add in the following line of codes:
import java.io.IOException;
import java.net.MalformedURLException;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpDelete;
import org.apache.http.impl.client.DefaultHttpClient;
@SuppressWarnings("deprecation")
public class Remove_User extends DefaultHttpClient {
public static void main(String[] args) {
try (DefaultHttpClient httpClient = new DefaultHttpClient() ){
//change hostname (localhost), domain name (eno), username (user2) as appropriate
HttpDelete delRequest = new HttpDelete(
"http://localhost:8080/elx/do/eno/ad/usergroupdb/user/user2");
//attach an Authorization header to the request to authenticate the request as being from an administrator
//send the user:pass as a Base64 encoded string, so admin:sa becomes YWRtaW46c2E=
delRequest.addHeader("Authorization", "Basic YWRtaW46c2E=");
HttpResponse response = httpClient.execute(delRequest);
if (response.getStatusLine().getStatusCode() != 200) {
throw new RuntimeException("Failed : HTTP error code : " + response.getStatusLine().getReasonPhrase());
}
httpClient.getConnectionManager().shutdown();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
*Do edit the codes above as needed.
-
Save the file and run the code.
-
The user, (i.e. user2) will be removed from the Ambience server following the username defined in the codes above.
C/ Creating Group
-
Create a Java Project using your desired IDE.
-
Ensure the following jar files are in your java project
/lib
build path:
- httpclient-<version>.jar
- httpcore-<version>.jar
-
Create a new Java class.
(i.e. Create_Group.java) -
Add in the following line of codes:
import java.io.IOException;
import java.net.MalformedURLException;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
@SuppressWarnings("deprecation")
public class Create_Group extends DefaultHttpClient {
public static void main(String[] args) {
try (DefaultHttpClient httpClient = new DefaultHttpClient() ){
//DefaultHttpClient httpClient = new DefaultHttpClient();
//change hostname (localhost) and domain name (eno) as appropriate
HttpPost postRequest = new HttpPost(
"http://localhost:8080/elx/do/eno/ad/usergroupdb/group");
//attach an Authorization header to the request to authenticate the request as being from an administrator
//send the user:pass as a Base64 encoded string, so admin:sa becomes YWRtaW46c2E=
postRequest.addHeader("Authorization", "Basic YWRtaW46c2E=");
StringEntity input = new StringEntity("{\"name\":\"group8\",\"users\": [\"test\"]}");
input.setContentType("application/json");
postRequest.setEntity(input);
HttpResponse response = httpClient.execute(postRequest);
if (response.getStatusLine().getStatusCode() != 201) {
throw new RuntimeException("Failed : HTTP error code : " + response.getStatusLine().getReasonPhrase());
}
httpClient.getConnectionManager().shutdown();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
*Do edit the codes above as needed.
-
Save the file and run the code.
-
A new group (i.e. group8) should be created in your Ambience server following the properties defined in the codes above.
For example,
D/ Removing Group
-
Create a Java Project using your desired IDE.
-
Ensure the following jar files are in your java project
/lib
build path:
- httpclient-<version>.jar
- httpcore-<version>.jar
-
Create a new Java class.
(i.e. Remove_Group.java) -
Add in the following line of codes:
import java.io.IOException;
import java.net.MalformedURLException;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpDelete;
import org.apache.http.impl.client.DefaultHttpClient;
@SuppressWarnings("deprecation")
public class Remove_Group extends DefaultHttpClient {
public static void main(String[] args) {
try (DefaultHttpClient httpClient = new DefaultHttpClient() ){
//change hostname (localhost), domain name (eno), group name (group8) as appropriate
HttpDelete delRequest = new HttpDelete(
"http://localhost:8080/elx/do/eno/ad/usergroupdb/group/group8");
//attach an Authorization header to the request to authenticate the request as being from an administrator
//send the user:pass as a Base64 encoded string, so admin:sa becomes YWRtaW46c2E=
delRequest.addHeader("Authorization", "Basic YWRtaW46c2E=");
HttpResponse response = httpClient.execute(delRequest);
if (response.getStatusLine().getStatusCode() != 200) {
throw new RuntimeException("Failed : HTTP error code : " + response.getStatusLine().getReasonPhrase());
}
httpClient.getConnectionManager().shutdown();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
*Do edit the codes above as needed.
-
Save the file and run the code.
-
The group, (i.e. group8) will be removed from the Ambience server following the group name defined in the codes above.
Additional Contents:
E/ Adding and Removing User Accounts from a Group
-
Create a Java Project using your desired IDE.
-
Ensure the following jar files are in your java project
/lib
build path:
- httpclient-<version>.jar
- httpcore-<version>.jar
-
Create a new Java class.
(i.e. edit-useracct-group.java) -
Add in the following line of codes:
import java.io.IOException;
import java.net.MalformedURLException;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpPut;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
@SuppressWarnings("deprecation")
public class edit-useracct-group extends DefaultHttpClient {
public static void main(String[] args) {
try (DefaultHttpClient httpClient = new DefaultHttpClient() ){
//change hostname (localhost), domain name (eno) and group name (group8) as appropriate
HttpPut putRequest = new HttpPut(
"http://localhost:8080/elx/do/eno/ad/usergroupdb/group/group8");
//attach an Authorization header to the request to authenticate the request as being from an administrator
//send the user:pass as a Base64 encoded string, so admin:sa becomes YWRtaW46c2E=
putRequest.addHeader("Authorization", "Basic YWRtaW46c2E=");
//edit the list of users ([\"test\", \"admin\"]) as appropriate. In this case, test and admin user accounts are added into group8.
/*
for example, to remove the user account "test", StringEntity input will be as follows:
StringEntity input = new StringEntity("{\"name\":\"group8\",\"users\": [\"admin\"]}");
to add the user account, "test", StringEntity input will be as follows:
StringEntity input = new StringEntity("{\"name\":\"group8\",\"users\": [\"admin\", \"test\"]}");
*/
StringEntity input = new StringEntity("{\"name\":\"group8\",\"users\": [\"test\", \"admin\"]}");
input.setContentType("application/json");
putRequest.setEntity(input);
HttpResponse response = httpClient.execute(putRequest);
if (response.getStatusLine().getStatusCode() != 200) {
throw new RuntimeException("Failed : HTTP error code : " + response.getStatusLine().getReasonPhrase());
}
httpClient.getConnectionManager().shutdown();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
*Do edit the codes above as needed.
- Save the file and run the code.
F/ Editing User's Permissions
1. Create a Java Project using your desired IDE.- Ensure the following jar files are in your java project
/lib
build path:
- httpclient-<version>.jar
- httpcore-<version>.jar
-
Create a new Java class.
(i.e. EditUser.java) -
Add in the following line of codes:
import java.io.IOException;
import java.net.MalformedURLException;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpPut;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
@SuppressWarnings("deprecation")
public class EditUser extends DefaultHttpClient {
public static void main(String[] args) {
try (DefaultHttpClient httpClient = new DefaultHttpClient() ){
//change hostname (localhost), domain name (eno), username (user5) as appropriate
HttpPut putRequest = new HttpPut(
"http://localhost:8080/elx/do/eno/ad/usergroupdb/user/user5");
//attach an Authorization header to the request to authenticate the request as being from an administrator
//send the user:pass as a Base64 encoded string, so admin:sa becomes YWRtaW46c2E=
putRequest.addHeader("Authorization", "Basic YWRtaW46c2E=");
//Change the specific user permission rights below
StringEntity input = new StringEntity("{\"name\":\"user5\",\"admin\":false,\"enabled\": true,"
+ "\"changePassword\":false,\"email\":\"test2@example.com\",\"groups\": [\"group1\"]}");
input.setContentType("application/json");
putRequest.setEntity(input);
HttpResponse response = httpClient.execute(putRequest);
if (response.getStatusLine().getStatusCode() != 200) {
throw new RuntimeException("Failed : HTTP error code : " + response.getStatusLine().getReasonPhrase());
}
httpClient.getConnectionManager().shutdown();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
*Do edit the codes above as needed.
- Save the file and run the code.