Entwicklung mit Dienstbenutzern in AEM Forms

Dieser Artikel führt Sie durch die Erstellung eines Dienstbenutzers in AEM Forms

In früheren Versionen von Adobe Experience Manager (AEM) wurde der Verwaltungsressourcen-Auflöser für die Backend-Verarbeitung verwendet, für die der Zugriff auf das Repository erforderlich war. Die Verwendung des Verwaltungsressourcenauflösers wird in AEM 6.3 nicht mehr unterstützt. Stattdessen wird ein Systembenutzer mit bestimmten Berechtigungen im Repository verwendet.

Dieser Artikel erläutert schrittweise die Erstellung eines Systembenutzers und die Konfiguration der Eigenschaften der Benutzerzuordnung.

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

  2. Als ' admin ' anmelden

  3. Klicken Sie auf ' Benutzerverwaltung '

  4. Klicken Sie auf " Systembenutzer erstellen"

  5. Legen Sie den Typ "userid"als "data"fest und klicken Sie auf das grüne Symbol, um den Vorgang zum Erstellen des Systembenutzers abzuschließen.

  6. Open 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 DevelopingWithServiceUser.core der symbolische Name des Bundles. getresourceresolver ist der Unterdienstname.data ist der Systembenutzer, der im vorherigen Schritt erstellt wurde.

Wir können auch Resource Resolver im Namen des fd-service-Benutzers abrufen. Dieser Dienstbenutzer wird für Dokument-Services verwendet. Wenn Sie z. B. Nutzungsrechte zertifizieren/anwenden usw. möchten, verwenden wir den Ressourcen-Auflöser 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. OSGi-Bundle hochladen und Beginn daraus erstellen

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

  5. Sie haben jetzt erfolgreich einen Systembenutzer erstellt und auch das Dienstbenutzer-Bundle bereitgestellt.

    Um Zugriff auf "/content"zu gewähren, müssen Sie dem Systembenutzer ("data") Leserechte für den Knoten "content"erteilen.

    1. Navigieren Sie zu http://localhost:4502/useradmin
    2. Suchen Sie nach Benutzerdaten. Dies ist der gleiche Systembenutzer, den Sie im vorherigen Schritt erstellt haben.
    3. Klicken Sie mit der Dublette auf den Benutzer und dann auf die Registerkarte "Berechtigungen"
    4. Zugriff auf den Ordner "content"durch den Benutzer "read".
    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 in Ihrem Bundle auf die Datei /content/dam/data.json zugreifen möchten, verwenden Sie den folgenden Code. Dieser Code setzt voraus, dass Sie dem Benutzer "data"auf dem Knoten /content/dam/ Leserechte 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