Sviluppo con gli utenti dei servizi in AEM Forms

Questo articolo illustra il processo di creazione di un utente di servizio in AEM Forms

Nelle versioni precedenti di Adobe Experience Manager (AEM), il risolutore di risorse amministrative veniva utilizzato per l’elaborazione back-end che richiedeva l’accesso all’archivio. L’utilizzo del risolutore risorse amministrative è obsoleto in AEM 6.3. Viene invece utilizzato un utente di sistema con autorizzazioni specifiche nel repository.

Questo articolo illustra la creazione di un utente di sistema e la configurazione delle proprietà di mappatura utente.

  1. Passa a http://localhost:4502/crx/explorer/index.jsp

  2. Accedi come amministratore '

  3. Fai clic su ' Amministrazione utente '

  4. Fai clic su "Crea utente di sistema"

  5. Imposta il tipo userid come ' data ' e fai clic sull'icona verde per completare il processo di creazione dell'utente di sistema

  6. Apri configMgr

  7. Cerca ' Apache Sling Service User Mapper Service ' e fai clic per aprire le proprietà

  8. Fai clic sull'icona + (più) per aggiungere la seguente Mappatura del servizio

    • DevelopingWithServiceUser.core:getresourceresolver=data
    • DevelopingWithServiceUser.core:getformsresourceresolver=fd-service
  9. Fai clic su ' Salva '

Nell'impostazione di configurazione di cui sopra DevelopingWithServiceUser.core è il nome simbolico del bundle. getresourceresolver è il nome del sottoservizio.data è l'utente di sistema creato nel passaggio precedente.

Possiamo anche ottenere il risolutore risorse per conto dell'utente di servizio fd. Questo utente di servizio viene utilizzato per document services. Ad esempio, se desideri certificare/applicare diritti di utilizzo, ecc., utilizzeremo il risolutore di risorse dell'utente di servizio fd per eseguire le operazioni

  1. Scarica e decomprimi il file zip associato a questo articolo.

  2. Passa a http://localhost:4502/system/console/bundles

  3. Carica e avvia il bundle OSGi

  4. Assicurati che il bundle sia in stato attivo

  5. Ora hai creato correttamente un utente di sistema e hai implementato anche il Service User bundle.

    Per fornire l'accesso a /content, assegna all'utente di sistema (' dati ') le autorizzazioni di lettura sul nodo del contenuto.

    1. Passa a http://localhost:4502/useradmin
    2. Cerca i dati dell'utente '. Si tratta dello stesso utente di sistema creato nel passaggio precedente.
    3. Fai doppio clic sull'utente e quindi fai clic sulla scheda "Autorizzazioni"
    4. Assegna a ' read ' l'accesso alla cartella 'content'.
    5. Per utilizzare l'utente del servizio per ottenere l'accesso alla cartella /content, utilizza il seguente codice
    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");
    

    Se desideri accedere al file /content/dam/data.json nel tuo bundle, userai il seguente codice. Questo codice presuppone che tu abbia dato le autorizzazioni di lettura all'utente "data" sul nodo /content/dam/

    @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);
    

    Il codice completo dell'attuazione è riportato di seguito

    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;
     }
    

In questa pagina