use of com.tremolosecurity.provisioning.util.HttpCon in project OpenUnison by TremoloSecurity.
the class KeystoneProvisioningTarget method createUser.
@Override
public void createUser(User user, Set<String> attributes, Map<String, Object> request) throws ProvisioningException {
if (rolesOnly) {
throw new ProvisioningException("Unsupported");
}
int approvalID = 0;
if (request.containsKey("APPROVAL_ID")) {
approvalID = (Integer) request.get("APPROVAL_ID");
}
Workflow workflow = (Workflow) request.get("WORKFLOW");
KSUser newUser = new KSUser();
newUser.setDomain_id(this.usersDomain);
newUser.setName(user.getUserID());
newUser.setEnabled(true);
if (attributes.contains("email") && user.getAttribs().containsKey("email")) {
newUser.setEmail(user.getAttribs().get("email").getValues().get(0));
}
if (attributes.contains("description") && user.getAttribs().containsKey("description")) {
newUser.setEmail(user.getAttribs().get("description").getValues().get(0));
}
HttpCon con = null;
KSUser fromKS = null;
try {
con = this.createClient();
KSToken token = this.getToken(con);
Gson gson = new Gson();
UserHolder userHolder = new UserHolder();
userHolder.setUser(newUser);
String json = gson.toJson(userHolder);
StringBuffer b = new StringBuffer();
b.append(this.url).append("/users");
json = this.callWSPost(token.getAuthToken(), con, b.toString(), json);
if (json == null) {
throw new Exception("Could not create user");
}
UserHolder createdUser = gson.fromJson(json, UserHolder.class);
if (createdUser.getUser() == null) {
throw new ProvisioningException("Could not create user :" + json);
}
this.cfgMgr.getProvisioningEngine().logAction(user.getUserID(), true, ActionType.Add, approvalID, workflow, "name", user.getUserID());
this.cfgMgr.getProvisioningEngine().logAction(user.getUserID(), false, ActionType.Add, approvalID, workflow, "name", user.getUserID());
this.cfgMgr.getProvisioningEngine().logAction(user.getUserID(), false, ActionType.Add, approvalID, workflow, "domain_id", this.usersDomain);
this.cfgMgr.getProvisioningEngine().logAction(user.getUserID(), false, ActionType.Add, approvalID, workflow, "enabled", "true");
if (attributes.contains("email")) {
this.cfgMgr.getProvisioningEngine().logAction(user.getUserID(), false, ActionType.Add, approvalID, workflow, "email", user.getAttribs().get("email").getValues().get(0));
}
if (attributes.contains("description")) {
this.cfgMgr.getProvisioningEngine().logAction(user.getUserID(), false, ActionType.Add, approvalID, workflow, "description", user.getAttribs().get("description").getValues().get(0));
}
for (String group : user.getGroups()) {
String groupID = this.getGroupID(token.getAuthToken(), con, group);
b.setLength(0);
b.append(this.url).append("/groups/").append(groupID).append("/users/").append(createdUser.getUser().getId());
if (this.callWSPutNoData(token.getAuthToken(), con, b.toString())) {
this.cfgMgr.getProvisioningEngine().logAction(user.getUserID(), false, ActionType.Add, approvalID, workflow, "group", group);
} else {
throw new ProvisioningException("Could not add group " + group);
}
}
if (attributes.contains("roles")) {
Attribute roles = user.getAttribs().get("roles");
for (String roleJSON : roles.getValues()) {
Role role = gson.fromJson(roleJSON, Role.class);
if (role.getScope().equalsIgnoreCase("project")) {
String projectid = this.getProjectID(token.getAuthToken(), con, role.getProject());
if (projectid == null) {
throw new ProvisioningException("Project " + role.getDomain() + " does not exist");
}
String roleid = this.getRoleID(token.getAuthToken(), con, role.getName());
if (roleid == null) {
throw new ProvisioningException("Role " + role.getName() + " does not exist");
}
b.setLength(0);
b.append(this.url).append("/projects/").append(projectid).append("/users/").append(createdUser.getUser().getId()).append("/roles/").append(roleid);
if (this.callWSPutNoData(token.getAuthToken(), con, b.toString())) {
this.cfgMgr.getProvisioningEngine().logAction(user.getUserID(), false, ActionType.Add, approvalID, workflow, "role", roleJSON);
} else {
throw new ProvisioningException("Could not add role " + roleJSON);
}
} else {
String domainid = this.getDomainID(token.getAuthToken(), con, role.getDomain());
if (domainid == null) {
throw new ProvisioningException("Domain " + role.getDomain() + " does not exist");
}
String roleid = this.getRoleID(token.getAuthToken(), con, role.getName());
if (roleid == null) {
throw new ProvisioningException("Role " + role.getName() + " does not exist");
}
b.setLength(0);
b.append(this.url).append("/domains/").append(domainid).append("/users/").append(createdUser.getUser().getId()).append("/roles/").append(roleid);
if (this.callWSPutNoData(token.getAuthToken(), con, b.toString())) {
this.cfgMgr.getProvisioningEngine().logAction(user.getUserID(), false, ActionType.Add, approvalID, workflow, "role", roleJSON);
} else {
throw new ProvisioningException("Could not add role " + roleJSON);
}
}
}
}
} catch (Exception e) {
throw new ProvisioningException("Could not work with keystone", e);
} finally {
if (con != null) {
con.getBcm().shutdown();
}
}
}
use of com.tremolosecurity.provisioning.util.HttpCon in project OpenUnison by TremoloSecurity.
the class KeystoneProvisioningTarget method listRoleObjs.
public List<KSRole> listRoleObjs() throws ProvisioningException {
HttpCon con = null;
try {
con = this.createClient();
KSToken token = this.getToken(con);
StringBuffer b = new StringBuffer();
b.append(this.url).append("/roles");
String json = this.callWS(token.getAuthToken(), con, b.toString());
Gson gson = new Gson();
return gson.fromJson(json, RoleResponse.class).getRoles();
} catch (Exception e) {
throw new ProvisioningException("Could not work with keystone", e);
} finally {
if (con != null) {
con.getBcm().shutdown();
}
}
}
use of com.tremolosecurity.provisioning.util.HttpCon in project OpenUnison by TremoloSecurity.
the class KeystoneProvisioningTarget method listProjectObjs.
public List<Project> listProjectObjs() throws ProvisioningException {
HttpCon con = null;
try {
con = this.createClient();
KSToken token = this.getToken(con);
StringBuffer b = new StringBuffer();
b.append(this.url).append("/projects?enabled");
String json = this.callWS(token.getAuthToken(), con, b.toString());
Gson gson = new Gson();
return gson.fromJson(json, ProjectsResponse.class).getProjects();
} catch (Exception e) {
throw new ProvisioningException("Could not work with keystone", e);
} finally {
if (con != null) {
con.getBcm().shutdown();
}
}
}
use of com.tremolosecurity.provisioning.util.HttpCon in project OpenUnison by TremoloSecurity.
the class KeystoneProvisioningTarget method findUser.
@Override
public User findUser(String userID, Set<String> attributes, Map<String, Object> request) throws ProvisioningException {
HttpCon con = null;
try {
con = this.createClient();
KSToken token = this.getToken(con);
UserAndID found = this.lookupUser(userID, attributes, request, token, con);
if (found != null) {
return found.getUser();
} else {
return null;
}
} catch (Exception e) {
throw new ProvisioningException("Could not work with keystone", e);
} finally {
if (con != null) {
con.getBcm().shutdown();
}
}
}
use of com.tremolosecurity.provisioning.util.HttpCon in project OpenUnison by TremoloSecurity.
the class KeystoneProvisioningTarget method listDomains.
public List<Map<Object, Object>> listDomains() throws ProvisioningException {
HttpCon con = null;
try {
con = this.createClient();
KSToken token = this.getToken(con);
StringBuffer b = new StringBuffer();
b.append(this.url).append("/domains?enabled");
String json = this.callWS(token.getAuthToken(), con, b.toString());
GsonBuilder builder = new GsonBuilder();
Object o = builder.create().fromJson(json, Object.class);
List<Map<Object, Object>> roles = (List<Map<Object, Object>>) ((Map<Object, Object>) o).get("domains");
return roles;
} catch (Exception e) {
throw new ProvisioningException("Could not work with keystone", e);
} finally {
if (con != null) {
con.getBcm().shutdown();
}
}
}
Aggregations