Search in sources :

Example 81 with AMIdentityRepository

use of com.sun.identity.idm.AMIdentityRepository in project OpenAM by OpenRock.

the class EntitiesModelImpl method canAssignService.

/**
     * Returns true if services can be assigned to this entity type.
     *
     * @param realmName Name of Realm.
     * @param idType Type of Entity.
     * @return true if services can be assigned to this entity type.
     */
public boolean canAssignService(String realmName, String idType) {
    boolean can = false;
    try {
        AMIdentityRepository repo = new AMIdentityRepository(adminSSOToken, realmName);
        Set allowedOperations = repo.getAllowedIdOperations(IdUtils.getType(idType));
        can = allowedOperations.contains(IdOperation.SERVICE);
    } catch (IdRepoException e) {
        debug.warning("EntitiesModelImpl.canAssignService", e);
    } catch (SSOException e) {
        debug.warning("EntitiesModelImpl.canAssignService", e);
    }
    return can;
}
Also used : Set(java.util.Set) HashSet(java.util.HashSet) AMIdentityRepository(com.sun.identity.idm.AMIdentityRepository) IdRepoException(com.sun.identity.idm.IdRepoException) SSOException(com.iplanet.sso.SSOException)

Example 82 with AMIdentityRepository

use of com.sun.identity.idm.AMIdentityRepository in project OpenAM by OpenRock.

the class CreateAgent method handleRequest.

/**
     * Services a Commandline Request.
     *
     * @param rc Request Context.
     * @throws CLIException if the request cannot serviced.
     */
public void handleRequest(RequestContext rc) throws CLIException {
    super.handleRequest(rc);
    ldapLogin();
    SSOToken adminSSOToken = getAdminSSOToken();
    String realm = getStringOptionValue(IArgument.REALM_NAME);
    String agentName = getStringOptionValue(IArgument.AGENT_NAME);
    String agentType = getStringOptionValue(IArgument.AGENT_TYPE);
    String datafile = getStringOptionValue(IArgument.DATA_FILE);
    List attrValues = rc.getOption(IArgument.ATTRIBUTE_VALUES);
    Map attributeValues = Collections.EMPTY_MAP;
    if ((datafile != null) || (attrValues != null)) {
        attributeValues = AttributeValues.parse(getCommandManager(), datafile, attrValues);
    }
    if ((attributeValues == null) || attributeValues.isEmpty()) {
        throw new CLIException(getResourceString("agent-creation-pwd-needed"), ExitCodes.REQUEST_CANNOT_BE_PROCESSED);
    }
    String serverURL = getStringOptionValue(IArgument.SERVER_URL);
    String agentURL = getStringOptionValue(AGENT_URL);
    boolean webJ2EEAgent = agentType.equals("WebAgent") || agentType.equals("J2EEAgent");
    if (!webJ2EEAgent) {
        if (serverURL != null) {
            throw new CLIException(getResourceString("does-not-support-server-url"), ExitCodes.REQUEST_CANNOT_BE_PROCESSED);
        }
        if (agentURL != null) {
            throw new CLIException(getResourceString("does-not-support-agent-url"), ExitCodes.REQUEST_CANNOT_BE_PROCESSED);
        }
    } else {
        if (agentURL != null && serverURL == null) {
            throw new CLIException(getResourceString("server-url-missing"), ExitCodes.REQUEST_CANNOT_BE_PROCESSED);
        }
        if (serverURL != null && agentURL == null) {
            throw new CLIException(getResourceString("agent-url-missing"), ExitCodes.REQUEST_CANNOT_BE_PROCESSED);
        }
        if (serverURL == null && agentURL == null && attributeValues.size() == 1) {
            //only the password is provided
            throw new CLIException(getResourceString("missing-urls"), ExitCodes.REQUEST_CANNOT_BE_PROCESSED);
        }
    }
    boolean hasPassword = false;
    for (Iterator i = attributeValues.keySet().iterator(); (i.hasNext() && !hasPassword); ) {
        String k = (String) i.next();
        if (k.equals(CLIConstants.ATTR_SCHEMA_AGENT_PWD)) {
            Set values = (Set) attributeValues.get(k);
            if ((values != null) && !values.isEmpty()) {
                String pwd = (String) values.iterator().next();
                hasPassword = (pwd.trim().length() > 0);
            }
        }
    }
    if (!hasPassword) {
        throw new CLIException(getResourceString("agent-creation-pwd-needed"), ExitCodes.REQUEST_CANNOT_BE_PROCESSED);
    }
    String[] params = { realm, agentType, agentName };
    writeLog(LogWriter.LOG_ACCESS, Level.INFO, "ATTEMPT_CREATE_AGENT", params);
    try {
        AMIdentityRepository amir = new AMIdentityRepository(adminSSOToken, realm);
        Set set = amir.getAllowedIdOperations(IdType.AGENTONLY);
        if (!set.contains(IdOperation.CREATE)) {
            String[] args = { realm };
            throw new CLIException(MessageFormat.format(getResourceString("does-not-support-agent-creation"), (Object[]) args), ExitCodes.REQUEST_CANNOT_BE_PROCESSED);
        }
        if (webJ2EEAgent) {
            if (serverURL != null) {
                FQDNUrl fqdnServerURL = null;
                try {
                    fqdnServerURL = new FQDNUrl(serverURL);
                } catch (MalformedURLException e) {
                    throw new CLIException(getResourceString("server-url-invalid"), ExitCodes.REQUEST_CANNOT_BE_PROCESSED);
                }
                FQDNUrl fqdnAgentURL = null;
                try {
                    fqdnAgentURL = new FQDNUrl(agentURL);
                } catch (MalformedURLException e) {
                    throw new CLIException(getResourceString("agent-url-invalid"), ExitCodes.REQUEST_CANNOT_BE_PROCESSED);
                }
                Map map = AgentConfiguration.getDefaultValues(agentType, false);
                map.putAll(attributeValues);
                AgentConfiguration.tagswapAttributeValues(map, agentType, fqdnServerURL, fqdnAgentURL);
                // Remove any default values that have not been replaced by values
                // supplied when calling create agent. These are in the form of
                // propertyname[n] where n is a value starting from 0
                AgentConfiguration.removeDefaultDuplicates(attributeValues, map);
                AgentConfiguration.createAgent(adminSSOToken, realm, agentName, agentType, map);
            } else {
                AgentConfiguration.createAgent(adminSSOToken, realm, agentName, agentType, attributeValues);
            }
        } else {
            AgentConfiguration.createAgent(adminSSOToken, realm, agentName, agentType, attributeValues);
        }
        getOutputWriter().printlnMessage(MessageFormat.format(getResourceString("create-agent-succeeded"), (Object[]) params));
        writeLog(LogWriter.LOG_ACCESS, Level.INFO, "SUCCEED_CREATE_AGENT", params);
    } catch (ConfigurationException e) {
        String[] args = { realm, agentType, agentName, e.getMessage() };
        debugError("CreateAgent.handleRequest", e);
        writeLog(LogWriter.LOG_ERROR, Level.INFO, "FAILED_CREATE_AGENT", args);
        throw new CLIException(e, ExitCodes.REQUEST_CANNOT_BE_PROCESSED);
    } catch (IdRepoException e) {
        String[] args = { realm, agentType, agentName, e.getMessage() };
        debugError("CreateAgent.handleRequest", e);
        writeLog(LogWriter.LOG_ERROR, Level.INFO, "FAILED_CREATE_AGENT", args);
        throw new CLIException(e, ExitCodes.REQUEST_CANNOT_BE_PROCESSED);
    } catch (SMSException e) {
        String[] args = { realm, agentType, agentName, e.getMessage() };
        debugError("CreateAgent.handleRequest", e);
        writeLog(LogWriter.LOG_ERROR, Level.INFO, "FAILED_CREATE_AGENT", args);
        throw new CLIException(e, ExitCodes.REQUEST_CANNOT_BE_PROCESSED);
    } catch (SSOException e) {
        String[] args = { realm, agentType, agentName, e.getMessage() };
        debugError("CreateAgent.handleRequest", e);
        writeLog(LogWriter.LOG_ERROR, Level.INFO, "FAILED_CREATE_AGENT", args);
        throw new CLIException(e, ExitCodes.REQUEST_CANNOT_BE_PROCESSED);
    }
}
Also used : MalformedURLException(java.net.MalformedURLException) SSOToken(com.iplanet.sso.SSOToken) Set(java.util.Set) SMSException(com.sun.identity.sm.SMSException) IdRepoException(com.sun.identity.idm.IdRepoException) SSOException(com.iplanet.sso.SSOException) FQDNUrl(com.sun.identity.shared.FQDNUrl) ConfigurationException(com.sun.identity.common.configuration.ConfigurationException) Iterator(java.util.Iterator) AMIdentityRepository(com.sun.identity.idm.AMIdentityRepository) CLIException(com.sun.identity.cli.CLIException) List(java.util.List) Map(java.util.Map)

Example 83 with AMIdentityRepository

use of com.sun.identity.idm.AMIdentityRepository in project OpenAM by OpenRock.

the class CreateAgentGroup method handleRequest.

/**
     * Services a Commandline Request.
     *
     * @param rc Request Context.
     * @throws CLIException if the request cannot serviced.
     */
public void handleRequest(RequestContext rc) throws CLIException {
    super.handleRequest(rc);
    ldapLogin();
    SSOToken adminSSOToken = getAdminSSOToken();
    String realm = getStringOptionValue(IArgument.REALM_NAME);
    String groupName = getStringOptionValue(IArgument.AGENT_GROUP_NAME);
    String agentType = getStringOptionValue(IArgument.AGENT_TYPE);
    String datafile = getStringOptionValue(IArgument.DATA_FILE);
    List attrValues = rc.getOption(IArgument.ATTRIBUTE_VALUES);
    Map attributeValues = Collections.EMPTY_MAP;
    if ((datafile != null) || (attrValues != null)) {
        attributeValues = AttributeValues.parse(getCommandManager(), datafile, attrValues);
    }
    String serverURL = getStringOptionValue(IArgument.SERVER_URL);
    boolean webJ2EEAgent = agentType.equals("WebAgent") || agentType.equals("J2EEAgent");
    if (!webJ2EEAgent && (serverURL != null)) {
        throw new CLIException(getResourceString("does-not-support-server-url"), ExitCodes.REQUEST_CANNOT_BE_PROCESSED);
    }
    String[] params = { realm, agentType, groupName };
    writeLog(LogWriter.LOG_ACCESS, Level.INFO, "ATTEMPT_CREATE_AGENT_GROUP", params);
    try {
        AMIdentityRepository amir = new AMIdentityRepository(adminSSOToken, realm);
        Set set = amir.getAllowedIdOperations(IdType.AGENTGROUP);
        if (!set.contains(IdOperation.CREATE)) {
            String[] args = { realm };
            throw new CLIException(MessageFormat.format(getResourceString("does-not-support-agent-group-creation"), (Object[]) args), ExitCodes.REQUEST_CANNOT_BE_PROCESSED);
        }
        if (webJ2EEAgent) {
            FQDNUrl fqdnServerURL = null;
            try {
                if (serverURL != null) {
                    fqdnServerURL = new FQDNUrl(serverURL);
                }
            } catch (MalformedURLException e) {
                throw new CLIException(getResourceString("server-url-invalid"), ExitCodes.REQUEST_CANNOT_BE_PROCESSED);
            }
            if (fqdnServerURL != null) {
                Map map = AgentConfiguration.getDefaultValues(agentType, true);
                map.putAll(attributeValues);
                AgentConfiguration.tagswapAttributeValues(map, agentType, fqdnServerURL, null);
                AgentConfiguration.createAgentGroup(adminSSOToken, realm, groupName, agentType, map);
            } else {
                AgentConfiguration.createAgentGroup(adminSSOToken, realm, groupName, agentType, attributeValues);
            }
        } else {
            AgentConfiguration.createAgentGroup(adminSSOToken, realm, groupName, agentType, attributeValues);
        }
        getOutputWriter().printlnMessage(MessageFormat.format(getResourceString("create-agent-group-succeeded"), (Object[]) params));
        writeLog(LogWriter.LOG_ACCESS, Level.INFO, "SUCCEED_CREATE_AGENT_GROUP", params);
    } catch (ConfigurationException e) {
        String[] args = { realm, agentType, groupName, e.getMessage() };
        debugError("CreateAgentGroup.handleRequest", e);
        writeLog(LogWriter.LOG_ERROR, Level.INFO, "FAILED_CREATE_AGENT_GROUP", args);
        throw new CLIException(e, ExitCodes.REQUEST_CANNOT_BE_PROCESSED);
    } catch (SMSException e) {
        String[] args = { realm, agentType, groupName, e.getMessage() };
        debugError("CreateAgentGroup.handleRequest", e);
        writeLog(LogWriter.LOG_ERROR, Level.INFO, "FAILED_CREATE_AGENT_GROUP", args);
        throw new CLIException(e, ExitCodes.REQUEST_CANNOT_BE_PROCESSED);
    } catch (IdRepoException e) {
        String[] args = { realm, agentType, groupName, e.getMessage() };
        debugError("CreateAgentGroup.handleRequest", e);
        writeLog(LogWriter.LOG_ERROR, Level.INFO, "FAILED_CREATE_AGENT_GROUP", args);
        throw new CLIException(e, ExitCodes.REQUEST_CANNOT_BE_PROCESSED);
    } catch (SSOException e) {
        String[] args = { realm, agentType, groupName, e.getMessage() };
        debugError("CreateAgentGroup.handleRequest", e);
        writeLog(LogWriter.LOG_ERROR, Level.INFO, "FAILED_CREATE_AGENT_GROUP", args);
        throw new CLIException(e, ExitCodes.REQUEST_CANNOT_BE_PROCESSED);
    }
}
Also used : MalformedURLException(java.net.MalformedURLException) SSOToken(com.iplanet.sso.SSOToken) Set(java.util.Set) SMSException(com.sun.identity.sm.SMSException) IdRepoException(com.sun.identity.idm.IdRepoException) SSOException(com.iplanet.sso.SSOException) FQDNUrl(com.sun.identity.shared.FQDNUrl) ConfigurationException(com.sun.identity.common.configuration.ConfigurationException) AMIdentityRepository(com.sun.identity.idm.AMIdentityRepository) CLIException(com.sun.identity.cli.CLIException) List(java.util.List) Map(java.util.Map)

Example 84 with AMIdentityRepository

use of com.sun.identity.idm.AMIdentityRepository in project OpenAM by OpenRock.

the class ListAgentGroups method handleRequest.

/**
     * Services a Commandline Request.
     *
     * @param rc Request Context.
     * @throws CLIException if the request cannot serviced.
     */
public void handleRequest(RequestContext rc) throws CLIException {
    super.handleRequest(rc);
    ldapLogin();
    SSOToken adminSSOToken = getAdminSSOToken();
    IOutput outputWriter = getOutputWriter();
    String realm = getStringOptionValue(IArgument.REALM_NAME);
    String patternType = getStringOptionValue(IArgument.AGENT_TYPE);
    String filter = getStringOptionValue(IArgument.FILTER);
    if (patternType == null) {
        patternType = "";
    }
    if ((filter == null) || (filter.length() == 0)) {
        filter = "*";
    }
    String[] params = { realm, patternType, filter };
    writeLog(LogWriter.LOG_ACCESS, Level.INFO, "ATTEMPT_LIST_AGENT_GROUPS", params);
    try {
        AMIdentityRepository amir = new AMIdentityRepository(adminSSOToken, realm);
        IdSearchResults isr = amir.searchIdentities(IdType.AGENTGROUP, filter, new IdSearchControl());
        Set results = isr.getSearchResults();
        if ((results != null) && !results.isEmpty()) {
            for (Iterator i = results.iterator(); i.hasNext(); ) {
                AMIdentity amid = (AMIdentity) i.next();
                if (!matchType(amid, patternType)) {
                    i.remove();
                }
            }
        }
        if ((results != null) && !results.isEmpty()) {
            for (Iterator i = results.iterator(); i.hasNext(); ) {
                AMIdentity amid = (AMIdentity) i.next();
                Object[] args = { amid.getName(), amid.getUniversalId() };
                outputWriter.printlnMessage(MessageFormat.format(getResourceString("format-search-agent-group-results"), args));
            }
        } else {
            outputWriter.printlnMessage(getResourceString("search-agent-group-no-entries"));
        }
        writeLog(LogWriter.LOG_ACCESS, Level.INFO, "SUCCEED_LIST_AGENT_GROUPS", params);
    } catch (IdRepoException e) {
        String[] args = { realm, patternType, filter, e.getMessage() };
        debugError("ListAgentGroups.handleRequest", e);
        writeLog(LogWriter.LOG_ERROR, Level.INFO, "FAILED_LIST_AGENT_GROUPS", args);
        throw new CLIException(e, ExitCodes.REQUEST_CANNOT_BE_PROCESSED);
    } catch (SSOException e) {
        String[] args = { realm, patternType, filter, e.getMessage() };
        debugError("ListAgentGroups.handleRequest", e);
        writeLog(LogWriter.LOG_ERROR, Level.INFO, "FAILED_LIST_AGENT_GROUPS", args);
        throw new CLIException(e, ExitCodes.REQUEST_CANNOT_BE_PROCESSED);
    }
}
Also used : SSOToken(com.iplanet.sso.SSOToken) Set(java.util.Set) IdSearchResults(com.sun.identity.idm.IdSearchResults) IdRepoException(com.sun.identity.idm.IdRepoException) SSOException(com.iplanet.sso.SSOException) IOutput(com.sun.identity.cli.IOutput) AMIdentity(com.sun.identity.idm.AMIdentity) AMIdentityRepository(com.sun.identity.idm.AMIdentityRepository) IdSearchControl(com.sun.identity.idm.IdSearchControl) Iterator(java.util.Iterator) CLIException(com.sun.identity.cli.CLIException)

Example 85 with AMIdentityRepository

use of com.sun.identity.idm.AMIdentityRepository in project OpenAM by OpenRock.

the class RealmGetAssignableServices method getAssignableDynamicServiceNames.

private Set getAssignableDynamicServiceNames(SSOToken adminSSOToken, String realm) throws SMSException, IdRepoException, SSOException {
    AMIdentityRepository repo = new AMIdentityRepository(adminSSOToken, realm);
    AMIdentity ai = repo.getRealmIdentity();
    return ai.getAssignableServices();
}
Also used : AMIdentity(com.sun.identity.idm.AMIdentity) AMIdentityRepository(com.sun.identity.idm.AMIdentityRepository)

Aggregations

AMIdentityRepository (com.sun.identity.idm.AMIdentityRepository)138 IdRepoException (com.sun.identity.idm.IdRepoException)103 SSOException (com.iplanet.sso.SSOException)94 AMIdentity (com.sun.identity.idm.AMIdentity)85 Set (java.util.Set)82 HashSet (java.util.HashSet)58 SSOToken (com.iplanet.sso.SSOToken)56 IdSearchControl (com.sun.identity.idm.IdSearchControl)36 IdSearchResults (com.sun.identity.idm.IdSearchResults)36 Iterator (java.util.Iterator)32 CLIException (com.sun.identity.cli.CLIException)29 HashMap (java.util.HashMap)29 IdType (com.sun.identity.idm.IdType)28 Map (java.util.Map)27 IOutput (com.sun.identity.cli.IOutput)26 SMSException (com.sun.identity.sm.SMSException)24 OrganizationConfigManager (com.sun.identity.sm.OrganizationConfigManager)20 List (java.util.List)13 AMConsoleException (com.sun.identity.console.base.model.AMConsoleException)12 Callback (javax.security.auth.callback.Callback)6