Desarrollo con usuarios de servicios en AEM Forms

Este artículo lo acompaña durante el proceso de creación de un usuario de servicio en AEM Forms

En versiones anteriores de Adobe Experience Manager (AEM), la resolución de recursos administrativos se utilizaba para el procesamiento back-end que requería acceso al repositorio. El uso de la resolución de recursos administrativos está obsoleto en AEM 6.3. En su lugar, se utiliza un usuario del sistema con permisos específicos en el repositorio.

Este artículo explica la creación de un usuario del sistema y la configuración de las propiedades del asignador de usuarios.

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

  2. Inicie sesión como ' admin '

  3. Haga clic en "Administración de usuarios"

  4. Haga clic en "Crear usuario del sistema"

  5. Establezca el tipo userid como ' data ' y haga clic en el icono verde para completar el proceso de creación del usuario del sistema

  6. Abrir configMgr

  7. Busque el servicio Apache Sling Service User Mapper y haga clic en para abrir las propiedades

  8. Haga clic en el icono + (signo más) para agregar la siguiente asignación de servicios

    • DevelopingWithServiceUser.core:getresourceresolver=data
    • DevelopingWithServiceUser.core:getformsresourceresolver=fd-service
  9. Haga clic en ' Guardar '

En la configuración anterior, DevelopingWithServiceUser.core es el nombre simbólico del paquete. getresourceresolver es el subservicio name.data es el usuario del sistema creado en el paso anterior.

También podemos obtener la resolución de recursos en nombre del usuario de fd-service. Este usuario de servicio se utiliza para document services. Por ejemplo, si desea certificar/aplicar derechos de uso, etc., utilizaremos la resolución de recursos del usuario de fd-service para realizar las operaciones

  1. Descargue y descomprima el archivo zip asociado con este artículo.

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

  3. Carga e inicio del paquete OSGi

  4. Asegúrese de que el paquete esté en estado activo

  5. Ahora ha creado correctamente un System User y también ha implementado el Service User bundle.

    Para proporcionar acceso a /content, otorgue al usuario del sistema (' data ') permisos de lectura en el nodo de contenido.

    1. Vaya a http://localhost:4502/useradmin
    2. Buscar los datos del usuario ' '. Este es el mismo usuario del sistema que creó en el paso anterior.
    3. Haga doble clic en el usuario y, a continuación, haga clic en la ficha Permisos
    4. Proporcione acceso de lectura a la carpeta "contenido".
    5. Para utilizar el usuario del servicio para obtener acceso a la carpeta /content, utilice el siguiente código
    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 desea acceder al archivo /content/dam/data.json del paquete, utilice el siguiente código. Este código supone que ha dado permisos de lectura al usuario "data" en el 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);
    

    A continuación se muestra el código completo de la implementación

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

En esta página