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.

Ulteriori informazioni sui dettagli di creazione e utilizzo degli utenti del servizio in AEM.

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;
.
.
.
try {
   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);
} catch(LoginException ex) {
   // Unable to get the service user, handle this exception as needed
} finally {
  // Always close all ResourceResolvers you open!
  
  if (serviceResolver != null( { serviceResolver.close(); }
  if (fdserviceResolver != null) { fdserviceResolver.close(); }
}

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() {
                System.out.println("#### Trying to get service resource resolver ....  in my bundle");
                HashMap < String, Object > param = new HashMap < String, Object > ();
                param.put(ResourceResolverFactory.SUBSERVICE, "getresourceresolver");
                ResourceResolver resolver = null;
                try {
                        resolver = resolverFactory.getServiceResourceResolver(param);
                } catch (LoginException e) {

                        System.out.println("Login Exception " + e.getMessage());
                }
                return resolver;

        }

        @Override
        public ResourceResolver getFormsServiceResolver() {

                System.out.println("#### Trying to get Resource Resolver for forms ....  in my bundle");
                HashMap < String, Object > param = new HashMap < String, Object > ();
                param.put(ResourceResolverFactory.SUBSERVICE, "getformsresourceresolver");
                ResourceResolver resolver = null;
                try {
                        resolver = resolverFactory.getServiceResourceResolver(param);
                } catch (LoginException e) {
                        System.out.println("Login Exception ");
                        System.out.println("The error message is " + e.getMessage());
                }
                return resolver;
        }

}

In questa pagina