Ziel

Administratorkennwort wurde vergessen und muss zurückgesetzt werden.

Umgebung

AEM 6.4,6.5

Schritte

  1. Geben Sie den folgenden Befehl in der Server-Befehlseingabe ein (ersetzen Sie den Pfad durch den Pfad zu Ihrem AEM Segmentstore). AEM sollte beendet werden, bevor die folgenden Schritte ausgeführt werden:

    java -jar oak-run-*.jar console path/to/crx-quickstart/repository/segmentstore --read-write ":load admin-reset.groovy"
    
  2. Geben Sie folgenden Code ein:

    :load admin-reset63.groovy
  3. Drücken Sie die „Eingabe“ und das Skript wird automatisch das Administratorkennwort finden und mit „admin“ ersetzen.
    Prüfen Sie die Ausgabe, die besagt:

    Found admin node : SegmentNodeBuilder{path=/home/users/some/path}
  4. Starten Sie AEM

Weitere Informationen

Erforderliche Elemente:

  • oak-run jar
  • admin-reset.groovy Skript (.txt herunterladen/entfernen oder aus Inhalten erstellen)

Herunterladen

import org.apache.jackrabbit.oak.spi.security.user.util.PasswordUtil
import org.apache.jackrabbit.oak.spi.commit.CommitInfo
import org.apache.jackrabbit.oak.spi.commit.EmptyHook

class Global {
    static adminNode = null;
}

void findAdminNode(ub) {
    if (ub.hasProperty("rep:principalName")) {
        if ("rep:principalName = admin".equals(ub.getProperty("rep:principalName").toString())) {
            Global.adminNode = ub;
        }
    }
    ub.childNodeNames.each { it -> 
        if (Global.adminNode == null) {
            findAdminNode(ub.getChildNode(it));
        }
    }
}

ub = session.store.root.builder();
findAdminNode(ub.getChildNode("home").getChildNode("users"));

if (Global.adminNode) {
    println("Found admin node: " + Global.adminNode.toString());
    Global.adminNode.setProperty("rep:password", PasswordUtil.buildPasswordHash("admin"));
    session.store.merge(ub, EmptyHook.INSTANCE, CommitInfo.EMPTY);
} else {
    println("Could not find admin node.");
}