use of com.sun.identity.entitlement.ApplicationPrivilegeManager in project OpenAM by OpenRock.
the class OpenSSOPolicyDataStore method addPolicy.
public void addPolicy(Subject subject, String realm, Privilege privilege) throws EntitlementException {
// Delegation to applications is currently not configurable, passing super admin (see AME-4959)
ApplicationPrivilegeManager applPrivilegeMgr = ApplicationPrivilegeManager.getInstance(realm, PrivilegeManager.superAdminSubject);
if (!applPrivilegeMgr.hasPrivilege(privilege, ApplicationPrivilege.Action.MODIFY)) {
throw new EntitlementException(326);
}
String name = "";
try {
Object policy = PrivilegeUtils.privilegeToPolicyObject(realm, privilege);
name = PrivilegeUtils.getPolicyName(policy);
if (policy instanceof Policy || policy instanceof com.sun.identity.entitlement.xacml3.core.Policy) {
String dn = getPolicyDistinguishedName(realm, name);
if (SMSEntry.checkIfEntryExists(dn, dsameUserToken)) {
throw new EntitlementException(EntitlementException.POLICY_ALREADY_EXISTS);
}
createParentNode(dsameUserToken, realm);
SMSEntry s = new SMSEntry(dsameUserToken, dn);
Map<String, Set<String>> map = new HashMap<String, Set<String>>();
Set<String> setServiceID = new HashSet<String>(2);
map.put(SMSEntry.ATTR_SERVICE_ID, setServiceID);
setServiceID.add("NamedPolicy");
Set<String> setObjectClass = new HashSet<String>(4);
map.put(SMSEntry.ATTR_OBJECTCLASS, setObjectClass);
setObjectClass.add(SMSEntry.OC_TOP);
setObjectClass.add(SMSEntry.OC_SERVICE_COMP);
Set<String> setValue = new HashSet<String>(2);
map.put(SMSEntry.ATTR_KEYVAL, setValue);
setValue.add(POLICY_XML + "=" + PrivilegeUtils.policyToXML(policy));
s.setAttributes(map);
String[] logParams = { DNMapper.orgNameToRealmName(realm), name };
OpenSSOLogger.log(OpenSSOLogger.LogLevel.MESSAGE, Level.INFO, "ATTEMPT_ADD_PRIVILEGE", logParams, subject);
s.save();
OpenSSOLogger.log(OpenSSOLogger.LogLevel.MESSAGE, Level.INFO, "SUCCEEDED_ADD_PRIVILEGE", logParams, subject);
PrivilegeIndexStore pis = PrivilegeIndexStore.getInstance(dsameUserSubject, realm);
Set<IPrivilege> privileges = new HashSet<IPrivilege>();
privileges.add(privilege);
pis.add(privileges);
} else {
PrivilegeManager.debug.error("OpenSSOPolicyDataStore.addPolicy: unknown class " + policy.getClass().getName());
}
} catch (PolicyException e) {
String[] logParams = { DNMapper.orgNameToRealmName(realm), name, e.getMessage() };
OpenSSOLogger.log(OpenSSOLogger.LogLevel.ERROR, Level.INFO, "FAILED_ADD_PRIVILEGE", logParams, subject);
Object[] params = { name };
throw new EntitlementException(202, params, e);
} catch (SSOException e) {
String[] logParams = { DNMapper.orgNameToRealmName(realm), name, e.getMessage() };
OpenSSOLogger.log(OpenSSOLogger.LogLevel.ERROR, Level.INFO, "FAILED_ADD_PRIVILEGE", logParams, subject);
Object[] params = { name };
throw new EntitlementException(202, params, e);
} catch (SMSException e) {
String[] logParams = { DNMapper.orgNameToRealmName(realm), name, e.getMessage() };
OpenSSOLogger.log(OpenSSOLogger.LogLevel.ERROR, Level.INFO, "FAILED_ADD_PRIVILEGE", logParams, subject);
Object[] params = { name };
throw new EntitlementException(202, params, e);
}
}
use of com.sun.identity.entitlement.ApplicationPrivilegeManager in project OpenAM by OpenRock.
the class OpenSSOPolicyDataStore method addReferral.
public void addReferral(Subject subject, String realm, ReferralPrivilege referral) throws EntitlementException {
String name = referral.getName();
String dn = getPolicyDistinguishedName(realm, name);
SSOToken adminToken = SubjectUtils.getSSOToken(subject);
if (adminToken == null) {
Object[] params = { name };
throw new EntitlementException(260, params);
}
// Delegation to applications is currently not configurable, passing super admin (see AME-4959)
ApplicationPrivilegeManager applPrivilegeMgr = ApplicationPrivilegeManager.getInstance(realm, PrivilegeManager.superAdminSubject);
if (!applPrivilegeMgr.hasPrivilege(referral, ApplicationPrivilege.Action.MODIFY)) {
throw new EntitlementException(326);
}
try {
createParentNode(dsameUserToken, realm);
SMSEntry s = new SMSEntry(dsameUserToken, dn);
Map<String, Set<String>> map = new HashMap<String, Set<String>>();
Set<String> setServiceID = new HashSet<String>(2);
map.put(SMSEntry.ATTR_SERVICE_ID, setServiceID);
setServiceID.add("NamedPolicy");
Set<String> setObjectClass = new HashSet<String>(4);
map.put(SMSEntry.ATTR_OBJECTCLASS, setObjectClass);
setObjectClass.add(SMSEntry.OC_TOP);
setObjectClass.add(SMSEntry.OC_SERVICE_COMP);
Set<String> setValue = new HashSet<String>(2);
map.put(SMSEntry.ATTR_KEYVAL, setValue);
Policy p = PrivilegeUtils.referralPrivilegeToPolicy(realm, referral);
setValue.add(POLICY_XML + "=" + p.toXML());
s.setAttributes(map);
String[] logParams = { DNMapper.orgNameToRealmName(realm), name };
OpenSSOLogger.log(OpenSSOLogger.LogLevel.MESSAGE, Level.INFO, "ATTEMPT_ADD_REFERRAL", logParams, subject);
s.save();
OpenSSOLogger.log(OpenSSOLogger.LogLevel.MESSAGE, Level.INFO, "SUCCEEDED_ADD_REFERRAL", logParams, subject);
PrivilegeIndexStore pis = PrivilegeIndexStore.getInstance(dsameUserSubject, realm);
Set<IPrivilege> tmp = new HashSet<IPrivilege>();
tmp.add(referral);
pis.add(tmp);
} catch (PolicyException e) {
String[] logParams = { DNMapper.orgNameToRealmName(realm), name, e.getMessage() };
OpenSSOLogger.log(OpenSSOLogger.LogLevel.ERROR, Level.INFO, "FAILED_ADD_REFERRAL", logParams, subject);
Object[] params = { name };
throw new EntitlementException(261, params, e);
} catch (SSOException e) {
String[] logParams = { DNMapper.orgNameToRealmName(realm), name, e.getMessage() };
OpenSSOLogger.log(OpenSSOLogger.LogLevel.ERROR, Level.INFO, "FAILED_ADD_REFERRAL", logParams, subject);
Object[] params = { name };
throw new EntitlementException(261, params, e);
} catch (SMSException e) {
String[] logParams = { DNMapper.orgNameToRealmName(realm), name, e.getMessage() };
OpenSSOLogger.log(OpenSSOLogger.LogLevel.ERROR, Level.INFO, "FAILED_ADD_REFERRAL", logParams, subject);
Object[] params = { name };
throw new EntitlementException(261, params, e);
}
}
use of com.sun.identity.entitlement.ApplicationPrivilegeManager in project OpenAM by OpenRock.
the class DeleteApplicationPrivilege method handleRequest.
/**
* Services a Commandline Request.
*
* @param rc Request Context.
* @throws CLIException if the request cannot serviced.
*/
@Override
public void handleRequest(RequestContext rc) throws CLIException {
super.handleRequest(rc);
String realm = getStringOptionValue(IArgument.REALM_NAME);
List<String> names = rc.getOption(PARAM_NAMES);
String[] params = new String[2];
params[0] = realm;
Subject userSubject = SubjectUtils.createSubject(getAdminSSOToken());
ApplicationPrivilegeManager apm = ApplicationPrivilegeManager.getInstance(realm, userSubject);
String curAppName = null;
try {
for (String name : names) {
curAppName = name;
params[1] = name;
writeLog(LogWriter.LOG_ACCESS, Level.INFO, "ATTEMPT_DELETE_APPLICATION_PRIVILEGE", params);
apm.removePrivilege(name);
writeLog(LogWriter.LOG_ACCESS, Level.INFO, "SUCCEEDED_DELETE_APPLICATION_PRIVILEGE", params);
}
String msg = (names.size() > 1) ? getResourceString("delete-application-privileges-succeeded") : getResourceString("delete-application-privilege-succeeded");
getOutputWriter().printlnMessage(msg);
} catch (EntitlementException ex) {
String[] paramExs = { realm, curAppName, ex.getMessage() };
writeLog(LogWriter.LOG_ACCESS, Level.INFO, "FAILED_DELETE_APPLICATION_PRIVILEGE", paramExs);
throw new CLIException(ex, ExitCodes.REQUEST_CANNOT_BE_PROCESSED);
}
}
use of com.sun.identity.entitlement.ApplicationPrivilegeManager in project OpenAM by OpenRock.
the class ListApplicationPrivileges method handleRequest.
/**
* Services a Commandline Request.
*
* @param rc Request Context.
* @throws CLIException if the request cannot serviced.
*/
@Override
public void handleRequest(RequestContext rc) throws CLIException {
super.handleRequest(rc);
String realm = getStringOptionValue(IArgument.REALM_NAME);
String[] params = { realm };
Subject userSubject = SubjectUtils.createSubject(getAdminSSOToken());
ApplicationPrivilegeManager apm = ApplicationPrivilegeManager.getInstance(realm, userSubject);
writeLog(LogWriter.LOG_ACCESS, Level.INFO, "ATTEMPT_SHOW_APPLICATION_PRIVILEGE", params);
Set<String> names = apm.search(Collections.EMPTY_SET);
writeLog(LogWriter.LOG_ACCESS, Level.INFO, "SUCCEEDED_LIST_APPLICATION_PRIVILEGES", params);
if (names.isEmpty()) {
getOutputWriter().printlnMessage(getResourceString("list-application-privileges-no-privileges"));
} else {
IOutput outputWriter = getOutputWriter();
for (String name : names) {
outputWriter.printlnMessage(name);
}
}
}
use of com.sun.identity.entitlement.ApplicationPrivilegeManager in project OpenAM by OpenRock.
the class SetApplicationPrivilegeSubjects method handleRequest.
/**
* Services a Commandline Request.
*
* @param rc Request Context.
* @throws CLIException if the request cannot serviced.
*/
@Override
public void handleRequest(RequestContext rc) throws CLIException {
super.handleRequest(rc);
String realm = getStringOptionValue(IArgument.REALM_NAME);
String name = getStringOptionValue(PARAM_NAME);
String[] params = { realm, name };
Set<SubjectImplementation> newSubjects = getSubjects(rc);
boolean bAdd = isOptionSet(PARAM_ADD);
Subject userSubject = SubjectUtils.createSubject(getAdminSSOToken());
ApplicationPrivilegeManager apm = ApplicationPrivilegeManager.getInstance(realm, userSubject);
writeLog(LogWriter.LOG_ACCESS, Level.INFO, "ATTEMPT_UPDATE_APPLICATION_PRIVILEGE", params);
try {
ApplicationPrivilege appPrivilege = apm.getPrivilege(name);
Set<SubjectImplementation> origSubjects = appPrivilege.getSubjects();
Set<SubjectImplementation> subjects = (bAdd) ? mergeSubjects(origSubjects, newSubjects) : newSubjects;
appPrivilege.setSubject(subjects);
apm.replacePrivilege(appPrivilege);
Object[] msgParam = { name };
getOutputWriter().printlnMessage(MessageFormat.format(getResourceString("update-application-privilege-succeeded"), msgParam));
writeLog(LogWriter.LOG_ACCESS, Level.INFO, "SUCCEEDED_UPDATE_APPLICATION_PRIVILEGE", params);
} catch (EntitlementException ex) {
String[] paramExs = { realm, name, ex.getMessage() };
writeLog(LogWriter.LOG_ACCESS, Level.INFO, "FAILED_UPDATE_APPLICATION_PRIVILEGE", paramExs);
throw new CLIException(ex, ExitCodes.REQUEST_CANNOT_BE_PROCESSED);
}
}
Aggregations