ResourceResolverFactory getServiceResourceResolver wirft Exception in AEM 6.1
Ich schreiben möchte einige Daten auf die AEM, und der code unten funktioniert gut für mich in AEM 6.0, aber nicht in AEM 6.1 , wirft immer ein Login-Ausnahme wie folgt:
"Login-Ausnahme beim abrufen von CRX-Benutzer für den Dienst:'writeService'.org.apache.sling.api.Ressource.LoginException: herleiten Können Benutzer die Namen für die bundle-Gruppe.tti.commons-service [395] und sub-service-writeService"
OSGI Config:
Code in meiner Klasse:
import javax.jcr.Session;
import org.apache.sling.api.resource.ResourceResolver;
import org.apache.sling.api.resource.ResourceResolverFactory;
....
@Reference
private ResourceResolverFactory factory;
private ResourceResolver resourceResolverWriter;
private static Session adminSession;
...
...
Map<String, Object> param = new HashMap<String, Object>();
param.put(ResourceResolverFactory.SUBSERVICE, "writeService");
try {
resourceResolverWriter = factory.getServiceResourceResolver(param);
adminSession = resourceResolverWriter.adaptTo(Session.class);
...
} catch (LoginException e) {
...
}
Bin ich etwas fehlt auf AEM 6.1?
Ich gehe davon aus, dass der Verweis auf resourceResolverWriter hier ist ein Tippfehler. Ansonsten ist dieser code gar nicht kompilieren.
Aktualisierten code in der original-post.
Aktualisierten code in der original-post.
InformationsquelleAutor Suren Konathala | 2015-07-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
In AEM 6.1, service-Benutzer muss sein system Benutzer, die effektiv bedeutet, dass Ihre Knoten in der JCR ist vom Typ rep:SystemUser. Diese Benutzer nicht werden verwendet, um log-in der Regel nur durch hintergrund-Prozesse. Der admin-Benutzer ist nicht ein system-Benutzer, so kann man nicht mit dem admin-Benutzer in einem service-Benutzer-Zuordnung wie dieses. Erstellen Sie eine neue system-Benutzer, und weisen Sie die entsprechenden Berechtigungen.
Wenn Sie möchten, um mehr von den hintergrund auf diesem zu ändern, werfen Sie einen Blick auf https://issues.apache.org/jira/browse/SLING-3854.
Meine Empfehlung wäre dieser Zugriff control-tool für AEM github.com/Netcentric/accesscontroltool
InformationsquelleAutor Justin Edelson
Mit Justin ' s Rat, habe ich versucht und die Lösung gefunden. Posting also von Vorteil sein kann für andere.
Ziel: um Daten Zu schreiben/Knoten, um die Inhalte (speziell in /etc/userdata) wenn sich ein Benutzer anmeldet.
Dies können wir erreichen in 2 Möglichkeiten (entweder Weg, muss der Benutzer ein 'system Benutzer')
Prozess 1:
Schritt 1: Verwenden Sie in-built-system-Benutzer in der OSGI-Konfiguration. In OSGI wählen Sie Apache Sling-Service User-Mapper-Service
Gruppe.abc.commons-service:writeService=oauthservice (wo 'oauthservice' ist ein system user)
Schritt 2: Zuweisen, die system-Benutzer die Berechtigungen für den Zugriff auf den content-Ordner.
Sehen Sie die system-Benutzer in CRX unter: /home/Benutzer/system
Prozess 2:
Schritt 1: Erstellen Sie eine neue system-Benutzer. um dies zu tun
Öffnen http://localhost:4502/crx/explorer/index.jsp
Login als admin - > Öffnen Sie 'Benutzer-Administration - > Wählen Sie "Create System-Benutzer' > Geben Sie "Benutzer-id" > den Grünen Knopf drücken (Sie werden nicht se eine speichern-Schaltfläche 🙂
Ich geschaffen haben "abcwriteservice" Benutzer
Schritt 2: Gehen Sie auf Berechtigungen, und für den Benutzer 'abcwriteservice' geben Sie Berechtigungen für den Zugriff auf den Ordner, wo Sie möchten, um zu schreiben. (In diesem Beispiel: /etc/userdata )
Schritt 3: Öffnen OSGI-Konsole und gehen Sie zu "Apache Sling-Service User-Mapper-Service" zu definieren, der service-Benutzer-Zuordnung. Zum Beispiel: "Gruppe.commons-service:writeService=abcwriteservice'
Schritt 4: Im code habe ich noch zusätzliche parameter, wie:
InformationsquelleAutor Suren Konathala
Auch, wenn Sie planen, eine zukünftige migration zu AEM 6.2, sollten Sie mithilfe von ACS-Commons-zur Erleichterung der Entwicklung und Verfügbarkeit von system-Benutzern. Es beseitigt alle diese manuelle Prozess werden kann Fehler-anfällig.
https://adobe-consulting-services.github.io/acs-aem-commons/features/ensure-service-users/index.html
InformationsquelleAutor Jose Berciano
insted machen Sitzung wie:
machen-Sitzung wie unten ,hoffentlich Login exception nicht auftreten
Dies geschehen, weil resourceResolverWriter nicht implizit Objekt.
Das ist nicht korrekt. Sehen Surendra und Gerechtigkeit die Antworten.
InformationsquelleAutor Zeeshan Khan