AddAMSDKIdRepoPlugin.java revision e6c3a72a023407f5d1fface64356e1cc81f1af31
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Copyright (c) 2006 Sun Microsystems Inc. All Rights Reserved
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * The contents of this file are subject to the terms
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * of the Common Development and Distribution License
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * (the License). You may not use this file except in
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * compliance with the License.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * You can obtain a copy of the License at
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * https://opensso.dev.java.net/public/CDDLv1.0.html or
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * See the License for the specific language governing
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * permission and limitations under the License.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * When distributing Covered Code, include this CDDL
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Header Notice in each file and include the License file
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * If applicable, add the following below the CDDL Header,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * with the fields enclosed by brackets [] replaced by
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * your own identifying information:
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * "Portions Copyrighted [year] [name of copyright owner]"
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * $Id: AddAMSDKIdRepoPlugin.java,v 1.9 2009/12/11 06:50:36 hengming Exp $
07e35e8870f0a772252336889d391265a5485e4eSachiko Wallace * Portions Copyrighted 2015-2016 ForgeRock AS.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport static org.forgerock.opendj.ldap.LDAPConnectionFactory.*;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.cli.AuthenticatedCommand;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.common.configuration.ServerConfigXML;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.common.configuration.ServerConfigXML.DirUserObject;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.common.configuration.ServerConfigXML.ServerGroup;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.common.configuration.ServerConfiguration;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.sm.ServiceSchemaManager;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport org.forgerock.opendj.ldap.ConnectionFactory;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport org.forgerock.opendj.ldap.LDAPConnectionFactory;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport org.forgerock.opendj.ldap.SSLContextBuilder;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport org.forgerock.opendj.ldap.requests.BindRequest;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * This command creates identity.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterpublic class AddAMSDKIdRepoPlugin extends AuthenticatedCommand {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private static final String[] params = { "add-amsdk-idrepo-plugin" };
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private void init(RequestContext rc) throws Exception {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster directoryServers = rc.getOption("directory-servers");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster basedn = getStringOptionValue("basedn").trim();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster bindDN = getStringOptionValue("binddn").trim();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster bindPwd = CLIUtil.getFileContent(getCommandManager(),
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster getStringOptionValue("bind-password-file"), true);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster dUserPwd = CLIUtil.getFileContent(getCommandManager(),
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster getStringOptionValue("dsame-password-file"), true);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster pUserPwd = CLIUtil.getFileContent(getCommandManager(),
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster getStringOptionValue("puser-password-file"), true);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (attr != null && attr.trim().length() > 0) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (attr != null && attr.trim().length() > 0) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Services a Commandline Request.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @param rc Request Context.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * @throws CLIException if the request cannot serviced.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster // @SuppressWarnings("empty-statement")
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster // Load DAI service, if not already loaded
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "datastore-add-amsdk-idrepo-plugin-succeeded"));
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String[] p = {"Adding AMSDK plugin", e.getMessage()};
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "FAILED_ADD_AMSDK_PLUGIN", p);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster outputWriter.printlnMessage(params[0] + ": " + getResourceString(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "datastore-add-amsdk-idrepo-plugin-failed") + ": " +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throws SMSException, SSOException, CLIException, IOException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster // Load DAI service, if not already loaded
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster ServiceManager sm = new ServiceManager(adminSSOToken);
07e35e8870f0a772252336889d391265a5485e4eSachiko Wallace if (!sm.getServiceNames().contains("DAI")) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster // Tag swap: @USER_NAMING_ATTR & @ORG_NAMING_ATTR
07e35e8870f0a772252336889d391265a5485e4eSachiko Wallace xmlData = xmlData.replaceAll("@USER_NAMING_ATTR@",
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster xmlData = xmlData.replaceAll("@ORG_NAMING_ATTR@", orgAttr);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster throws SMSException, SSOException, CLIException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster ServiceSchemaManager ssm = new ServiceSchemaManager(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster adminSSOToken, IdConstants.REPO_SERVICE, "1.0");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster ServiceSchema ss = ssm.getOrganizationSchema();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster if (!ss.getSubSchemaNames().contains("amSDK")) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster xmlData = getResourceContent("idRepoAmSDK.xml");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster // Tag swap: @NORMALIZED_ORGBASED
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster xmlData = xmlData.replaceAll("@NORMALIZED_ORGBASE@",
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster private void loadDelegrationPolicies(String xmlData) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster // Load delegation policies for Top-level Admin Role and others
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster // Tag swap: @SM_CONFIG_ROOT_SUFFIX@ & @SM_ROOT_SUFFIX_HAT@
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String smsRootSuffix = ServiceManager.getBaseDN();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster xmlData = xmlData.replaceAll("@SM_CONFIG_ROOT_SUFFIX@",
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String smsRootHat = smsRootSuffix.replaceAll(",", "^");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster xmlData = xmlData.replaceAll("@SM_ROOT_SUFFIX_HAT@",
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster // Tag swap: @ROOT_SUFFIX@
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster PolicyManager pm = new PolicyManager(adminSSOToken,
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "/sunamhiddenrealmdelegationservicepermissions");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster PolicyUtils.createPolicies(pm, xmlInputStream);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster "datastore-add-amsdk-idrepo-plugin-policies-failed") +
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster Set servers = ServerConfiguration.getServers(adminSSOToken);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster newValues.put("com.sun.am.event.connection.disable.list", "");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster for (Iterator items = servers.iterator(); items.hasNext();) {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster String serverconfig = ServerConfiguration.getServerConfigXML(
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster ServerConfigXML cxml = new ServerConfigXML(serverconfig);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster ServerGroup defaultGroup = cxml.getDefaultServerGroup();
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster // Add directory servers
// Saver serverconfig.xml
throws CLIException {
throws Exception {
return ldifs;
) throws Exception {
return orig;
class DSEntry {
boolean ssl;
int port;
if (ssl) {