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 dans AEM Forms

Dans les versions précédentes d’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 obsolète 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. Connectez-vous en tant qu’"admin"

  3. Cliquez sur "Administration des utilisateurs"

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

  5. Définissez le type userid sur "data" et cliquez sur l’icône verte pour terminer le processus de création de l’utilisateur système.

  6. Ouvrez configMgr

  7. Recherchez "Service de mappage des utilisateurs du service Apache Sling" et cliquez 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 du sous-service. data est l’utilisateur système créé à l’étape précédente.

Nous pouvons également obtenir le résolveur de ressources au nom de l’utilisateur fd-service. 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 fd-service 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. Chargement et démarrage du lot OSGi

  4. Assurez-vous que le lot est à principal état

  5. Vous avez maintenant créé un utilisateur système et déployé le lot utilisateur de service.

    Pour permettre l’accès à /content, attribuez à 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. Double-cliquez sur l’utilisateur, puis cliquez sur l’onglet "Autorisations".
    4. Accédez au dossier 'content' en lecture.
    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 de 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