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.
Obtenga más información sobre los detalles de creación y uso de usuarios de servicios en AEM.
Este artículo explica la creación de un usuario del sistema y la configuración de las propiedades del asignador de usuarios.
Inicie sesión como ' admin '
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
Buscar Servicio de asignador de usuarios del servicio Apache Sling y haga clic en para abrir las propiedades
Haga clic en el + icono (más) para añadir la siguiente asignación de servicios
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
Descargue y descomprima el archivo zip asociado con este artículo.
Carga e inicio del paquete OSGi
Asegúrese de que el paquete esté en estado activo
Ya ha creado correctamente un Usuario del sistema y también implementó el Paquete de usuario de servicio.
Para proporcionar acceso a /content, otorgue al usuario del sistema (' data ') permisos de lectura en el nodo de contenido.
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;
.
.
.
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;
}
}