Entwickeln mit Dienstbenutzern in AEM Forms

Dieser Artikel führt Sie durch den Prozess der Erstellung eines Dienstbenutzers in AEM Forms

In früheren Versionen von Adobe Experience Manager (AEM) wurde der administrative Ressourcen-Resolver für die Backend-Verarbeitung verwendet, für die der Zugriff auf das Repository erforderlich war. Die Verwendung des administrativen Ressourcen-Resolvers wird in AEM 6.3 nicht mehr unterstützt. Stattdessen wird ein Systembenutzer mit spezifischen Berechtigungen im Repository verwendet.

Dieser Artikel erläutert die Erstellung eines Systembenutzers und die Konfiguration der Eigenschaften des Benutzer-Mappers.

  1. Navigieren Sie zu http://localhost:4502/crx/explorer/index.jsp

  2. Als "Administrator"anmelden

  3. Klicken Sie auf "Benutzerverwaltung"

  4. Klicken Sie auf " Systembenutzer erstellen "

  5. Legen Sie den Benutzereridtyp auf "Daten"fest und klicken Sie auf das grüne Symbol, um die Erstellung des Systembenutzers abzuschließen.

  6. Öffnen Sie configMgr

  7. Suchen Sie nach "Apache Sling Service User Mapper Service "und klicken Sie auf , um die Eigenschaften zu öffnen.

  8. Klicken Sie auf das Symbol + (Plus), um die folgende Dienstzuordnung hinzuzufügen:

    • DevelopingWithServiceUser.core:getresourceresolver=data
    • DevelopingWithServiceUser.core:getformsresourceresolver=fd-service
  9. Klicken Sie auf Speichern .

In der obigen Konfiguration ist die Einstellung DevelopingWithServiceUser.core der symbolische Name des Bundles. getresourceresolver ist der Subdienstname.data ist der Systembenutzer, der im vorherigen Schritt erstellt wurde.

Wir können auch den Resource Resolver im Namen des fd-service-Benutzers erhalten. Dieser Dienstbenutzer wird für Document Services verwendet. Wenn Sie z. B. Nutzungsrechte zertifizieren/anwenden usw. möchten, verwenden wir den Ressourcen-Resolver des fd-service-Benutzers, um die Vorgänge auszuführen.

  1. Laden Sie die mit diesem Artikel verknüpfte ZIP-Datei herunter und dekomprimieren Sie sie.

  2. Navigieren Sie zu http://localhost:4502/system/console/bundles

  3. Laden Sie das OSGi-Bundle hoch und starten Sie es.

  4. Stellen Sie sicher, dass das Bundle sich im aktiven Status befindet.

  5. Sie haben jetzt erfolgreich einen Systembenutzer erstellt und auch das Service User Bundle bereitgestellt.

    Um Zugriff auf /content zu gewähren, erteilen Sie dem Systembenutzer (' data ') Leseberechtigungen für den Inhaltsknoten.

    1. Navigieren Sie zu http://localhost:4502/useradmin
    2. Suchen Sie nach Benutzerdaten ". Dies ist derselbe Systembenutzer, den Sie im vorherigen Schritt erstellt haben.
    3. Doppelklicken Sie auf den Benutzer und klicken Sie dann auf die Registerkarte Berechtigungen .
    4. Gewähren Sie " read " Zugriff auf den Ordner "content ".
    5. Verwenden Sie den folgenden Code, um mithilfe des Dienstbenutzers Zugriff auf den Ordner /content zu erhalten
    com.mergeandfuse.getserviceuserresolver.GetResolver aemDemoListings = sling.getService(com.mergeandfuse.getserviceuserresolver.GetResolver.class);
    
    resourceResolver = aemDemoListings.getServiceResolver();
    
    // get the resource. This will succeed because we have given ' read ' access to the content node
    
    Resource contentResource = resourceResolver.getResource("/content/forms/af/sandbox/abc.pdf");
    

    Wenn Sie auf die Datei /content/dam/data.json in Ihrem Bundle zugreifen möchten, verwenden Sie den folgenden Code. Dieser Code setzt voraus, dass Sie dem Benutzer "data"im Knoten /content/dam/ Leseberechtigungen erteilt haben

    @Reference
    GetResolver getResolver;
    .
    .
    .
    ResourceResolver serviceResolver = getResolver.getServiceResolver();
    // to get resource resolver specific to fd-service user. This is for Document Services
    ResourceResolver fdserviceResolver = getResolver.getFormsServiceResolver();
    Node resNode = getResolver.getServiceResolver().getResource("/content/dam/data.json").adaptTo(Node.class);
    

    Der vollständige Code der Implementierung ist unten aufgeführt.

    package com.mergeandfuse.getserviceuserresolver.impl;
    
    import java.util.HashMap;
    
    import org.apache.sling.api.resource.LoginException;
    import org.apache.sling.api.resource.ResourceResolver;
    import org.apache.sling.api.resource.ResourceResolverFactory;
    import org.osgi.service.component.annotations.Component;
    import org.osgi.service.component.annotations.Reference;
    import com.mergeandfuse.getserviceuserresolver.GetResolver;
    
    @Component(service = GetResolver.class)
    public class GetResolverImpl implements GetResolver {
     @Reference
     ResourceResolverFactory resolverFactory;
     @Override
     public ResourceResolver getServiceResolver() {
      HashMap<String, Object> param = new HashMap<String, Object>();
      param.put(ResourceResolverFactory.SUBSERVICE, "getresourceresolver");
      ResourceResolver resolver = null;
      try {
       resolver = resolverFactory.getServiceResourceResolver(param);
      } catch (LoginException e) {
       // TODO Auto-generated catch block
       e.printStackTrace();
      }
      return resolver;
     }
    

Auf dieser Seite