Développement avec des utilisateurs de services dans AEM Forms

Cet article vous guide tout au long du processus de création d’un utilisateur de service en AEM Forms.

Dans les versions précédentes de Adobe Experience Manager (AEM), le résolveur de ressources d'administration était utilisé pour le traitement principal qui nécessitait l'accès au référentiel. L'utilisation du résolveur de ressources d'administration est abandonnée dans AEM 6.3. À la place, un utilisateur système disposant d'autorisations spécifiques dans le référentiel est utilisé.

Cet article décrit la création d’un utilisateur système et la configuration des propriétés du mappeur utilisateur.

  1. Accédez à http://localhost:4502/crx/explorer/index.jsp

  2. Se connecter en tant que ' admin '

  3. Cliquez sur ' Administration utilisateur '

  4. Cliquez sur ' Créer un utilisateur système '

  5. Définissez le type d'utilisateur comme " données " et cliquez sur l'icône verte pour terminer le processus de création de l'utilisateur système.

  6. Ouvrir configMgr

  7. Recherchez "Service Apache Sling User Mapper Service" et cliquez sur pour ouvrir les propriétés.

  8. Cliquez sur l’icône + (plus) pour ajouter le mappage de service suivant.

    • DevelopingWithServiceUser.core:getresourceresolver=data
    • DevelopingWithServiceUser.core:getformsresourceresolver=fd-service
  9. Cliquez sur " Enregistrer "

Dans la configuration ci-dessus, le paramètre DevelopingWithServiceUser.core est le nom symbolique du lot. getresourceresolver est le nom de sous-service.data est l'utilisateur système créé à l'étape précédente.

Nous pouvons également obtenir le résolveur de ressources pour le compte de l'utilisateur du service fd. Cet utilisateur de service est utilisé pour les services de document. Par exemple, si vous souhaitez certifier/appliquer des droits d’utilisation, etc., nous utiliserons le résolveur de ressources de l’utilisateur du service fd pour effectuer les opérations.

  1. Téléchargez et décompressez le fichier zip associé à cet article.

  2. Accédez à http://localhost:4502/system/console/bundles

  3. Téléchargement et début du lot OSGi

  4. Vérifier que le lot est à principal état

  5. Vous avez maintenant créé un utilisateur système et déployé également le groupe utilisateur du service.

    Pour fournir l'accès à /content, accordez à l'utilisateur système (' data ') des autorisations de lecture sur le noeud de contenu.

    1. Accédez à http://localhost:4502/useradmin
    2. Recherchez les données de l'utilisateur "". Il s’agit du même utilisateur système que celui que vous avez créé à l’étape précédente.
    3. Doublon-clic sur l'utilisateur, puis sur l'onglet ' Permissions '
    4. Donnez à ' read ' l'accès au dossier 'content '.
    5. Pour utiliser l’utilisateur du service pour accéder au dossier /content, utilisez le code suivant :
    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");
    

    Si vous souhaitez accéder au fichier /content/dam/data.json dans votre lot, vous utiliserez le code suivant. Ce code suppose que vous avez donné des autorisations de lecture à l’utilisateur "data" sur le noeud /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);
    

    Le code complet de la mise en oeuvre est indiqué ci-dessous.

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

Sur cette page

Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now