Desarrollo con usuarios de servicio 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 (), el solucionador de recursos administrativos se utilizaba para el procesamiento back-end, que requería acceso al repositorio. AEM El uso del solucionador de recursos administrativos está obsoleto en la versión 6.3 de. En su lugar, se utiliza un usuario del sistema con permisos específicos en el repositorio.
AEM Obtenga más información acerca de los detalles de crear y usar usuarios de servicio en el sitio de trabajo de {100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Este artículo explica la creación de un usuario del sistema y la configuración de las propiedades del asignador de usuarios.
-
Iniciar sesión como "administrador"
-
Haga clic en "Administración de usuarios"
-
Haga clic en "Crear usuario del sistema"
-
Establezca el tipo userid como "data" y haga clic en el icono verde para completar el proceso de creación del usuario del sistema
-
Busque Servicio de asignador de usuarios del servicio Apache Sling y haga clic para abrir las propiedades
-
Haga clic en el icono + (más) para agregar la siguiente asignación de servicio
- DevelopingWithServiceUser.core:getresourceresolver=data
- DevelopingWithServiceUser.core:getformsresourceresolver=fd-service
-
Haga clic en Guardar
En la configuración anterior, el valor DevelopersWithServiceUser.core es el nombre simbólico del paquete. getresourceresolver es el nombre del subservicio.data es el usuario del sistema creado en el paso anterior.
También podemos obtener una 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 el solucionador de recursos del usuario de fd-service para realizar las operaciones
-
Descargue y descomprima el archivo zip asociado con este artículo.
-
Cargar e iniciar el paquete OSGi
-
Asegúrese de que el paquete esté en estado activo
-
Ahora ha creado correctamente un Usuario del sistema y también ha implementado el Paquete de usuario de servicio.
Para proporcionar acceso a /content, conceda al usuario del sistema (' datos ') permisos de lectura en el nodo de contenido.
- Vaya a http://localhost:4502/useradmin
- Buscar los datos del usuario. Es el mismo usuario del sistema que creó en el paso anterior.
- Haga doble clic en el usuario y, a continuación, haga clic en la pestaña Permisos
- Conceder acceso de "lectura" a la carpeta "contenido".
- 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 en su paquete, utilizará el siguiente código. Este código supone que se han concedido permisos de lectura al usuario "data" en el 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(); }
}
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() {
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;
}
}