Generación de tokens de acceso para las API del lado del servidor generating-access-tokens-for-server-side-apis
Algunas arquitecturas dependen de la realización de llamadas a AEM as a Cloud Service desde una aplicación alojada en un servidor fuera de la infraestructura de AEM. Por ejemplo, una aplicación móvil que llama a un servidor y que luego realiza solicitudes de API a AEM as a Cloud Service.
A continuación se describe el flujo de servidor a servidor, junto con un flujo simplificado para el desarrollo. AEM as a Cloud Service Developer Console se usa para generar los tokens necesarios para el proceso de autenticación.
El flujo de servidor a servidor the-server-to-server-flow
Los usuarios con una función de administrador de organización de IMS y que sean miembros de los usuarios de AEM o del perfil de producto de los administradores de AEM en AEM Author, pueden generar un conjunto de credenciales a partir de AEM as a Cloud Service. Cada credencial es una carga útil JSON que incluye un certificado (la clave pública), una clave privada y una cuenta técnica que consta de clientId y clientSecret. Estas credenciales las puede recuperar posteriormente un usuario con la función de administrador del entorno de AEM as a Cloud Service y deben instalarse en un servidor que no sea de AEM y tratarse cuidadosamente como una clave secreta. Este archivo de formato JSON contiene todos los datos necesarios para integrarse con una API de AEM as a Cloud Service. Los datos se utilizan para crear un token JWT firmado, que se intercambia con los servicios de Adobe Identity Management (IMS) por un token de acceso IMS. Este token de acceso se puede utilizar como token de autenticación del portador para realizar solicitudes a AEM as a Cloud Service. El certificado de las credenciales caduca después de un año de forma predeterminada, pero se puede actualizar cuando sea necesario; consulte Actualizar credenciales.
El flujo de servidor a servidor incluye los siguientes pasos:
- Recupere las credenciales en AEM as a Cloud Service desde Developer Console
- Instale las credenciales de AEM as a Cloud Service en un servidor que no sea de AEM y realice llamadas a AEM
- Genere un token JWT e intercámbielo por un token de acceso mediante las API de IMS de Adobe
- Llamar a la API de AEM con el token de acceso como token de autenticación del portador
- Establezca los permisos adecuados para el usuario de la cuenta técnica en el entorno de AEM
Recuperar las credenciales de AEM as a Cloud Service fetch-the-aem-as-a-cloud-service-credentials
Los usuarios con acceso a AEM as a Cloud Service developer console ven la pestaña integraciones de Developer Console para un entorno determinado. Un usuario con la función de administrador del entorno de AEM as a Cloud Service puede crear, ver o administrar credenciales.
Al hacer clic en Crear nueva cuenta técnica, se crea un conjunto de credenciales que incluye el ID de cliente, el secreto de cliente, la clave privada, el certificado y la configuración para los niveles de creación y publicación del entorno, independientemente de la selección del pod.
Se abre una nueva pestaña del explorador que muestra las credenciales. Puede utilizar esta vista para descargar las credenciales pulsando el icono de descarga situado junto al título del estado:
Una vez creadas las credenciales, aparecerán en la ficha Cuentas técnicas de la sección Integraciones:
Los usuarios pueden ver las credenciales más adelante mediante la acción Ver. Además, como se describe más adelante en el artículo, los usuarios pueden editar las credenciales de la misma cuenta técnica. Para realizar esta edición, crean una clave privada o un certificado, para casos en los que se debe renovar o revocar el certificado.
Los usuarios con la función de administrador del entorno de AEM as a Cloud Service pueden crear posteriormente credenciales para cuentas técnicas adicionales. Esta capacidad es útil cuando diferentes API tienen diferentes requisitos de acceso. Por ejemplo, lectura frente a lectura-escritura.
Instalación de las credenciales del servicio de AEM en un servidor que no sea de AEM install-the-aem-service-credentials-on-a-non-aem-server
La aplicación que realice llamadas a AEM debe poder acceder a las credenciales de AEM as a Cloud Service y tratarlas como un secreto.
Generar un token JWT e intercambiarlo por un token de acceso generate-a-jwt-token-and-exchange-it-for-an-access-token
Utilice las credenciales para crear un token JWT en una llamada al servicio IMS de Adobe para recuperar un token de acceso, que es válido durante 24 horas.
Las credenciales del servicio AEM CS se pueden intercambiar por un token de acceso utilizando ejemplos de código diseñados para este fin. Hay código de muestra disponible en el repositorio público de GitHub de Adobe, que contiene ejemplos de código que puede copiar y adaptar para sus propios proyectos. Tenga en cuenta que este repositorio contiene código de ejemplo para referencia y no se mantiene como dependencia de biblioteca lista para la producción.
/*jshint node:true */
"use strict";
const fs = require('fs');
// Sample code adapted from Adobe's GitHub repository
const exchange = require("./your-local-aemcs-client"); // Copy and adapt the code from the GitHub repository
const jsonfile = "aemcs-service-credentials.json";
var config = JSON.parse(fs.readFileSync(jsonfile, 'utf8'));
exchange(config).then(accessToken => {
// output the access token in json form including when it will expire.
console.log(JSON.stringify(accessToken,null,2));
}).catch(e => {
console.log("Failed to exchange for access token ",e);
});
El mismo intercambio se puede realizar en cualquier idioma capaz de generar un token JWT firmado con el formato correcto y llamar a las API de intercambio de tokens de IMS.
El token de acceso define cuándo caduca, que suelen ser 24 horas. Hay un código de ejemplo en el repositorio de Git para administrar un token de acceso y actualizarlo antes de que caduque.
Llamar a la API de AEM calling-the-aem-api
Realice las llamadas de API de servidor a servidor adecuadas a un entorno de AEM as a Cloud Service, incluido el token de acceso en el encabezado. Por lo tanto, para el encabezado "Autorización", use el valor "Bearer <access_token>". Por ejemplo, usar curl:
curl -H "Authorization: Bearer <your_ims_access_token>" https://author-p123123-e23423423.adobeaemcloud.com/content/dam.json
Establezca los permisos adecuados para el usuario de la cuenta técnica en AEM set-the-appropriate-permissions-for-the-technical-account-user-in-aem
En primer lugar, se debe crear un nuevo perfil de producto en Adobe Admin Console.
-
Vaya a Adobe Admin Console en https://adminconsole.adobe.com/.
-
Presione el vínculo Administrar en la columna Productos y servicios de la izquierda.
-
Seleccione AEM as a Cloud Service.
-
Presione el botón Nuevo perfil.
-
Asigne un nombre al perfil y pulse Guardar.
-
Seleccione el perfil que ha creado en la lista de perfiles.
-
Seleccione Agregar usuario.
-
Agregue la cuenta técnica que creó (en este caso
84b2c3a2-d60a-40dc-84cb-e16b786c1673@techacct.adobe.com) y haga clic en Guardar.
-
Espere 10 minutos para que los cambios surtan efecto y realice una llamada de API a AEM con un token de acceso generado a partir de la nueva credencial. Como comando cURL, se representaría de forma similar a este ejemplo:
curl -H "Authorization: Bearer <access_token>" https://author-pXXXXX-eXXXXX.adobeaemcloud.net/content/dam.json
Después de realizar la llamada de API, el perfil de producto aparece como un grupo de usuarios en la instancia de autor de AEM as a Cloud Service, con la cuenta técnica adecuada como miembro de ese grupo.
Para comprobar esta información, haga lo siguiente:
-
Inicie sesión en la instancia de autor.
-
Vaya a Herramientas > Seguridad y luego haga clic en la tarjeta Grupos.
-
Busque el nombre del perfil que ha creado en la lista de grupos y haga clic en él:
-
En la siguiente ventana, cambie a la pestaña Miembros y compruebe si la cuenta técnica se encuentra en la lista correcta:
También puede comprobar que la cuenta técnica aparece en la lista del usuario realizando los siguientes pasos en la instancia de autor:
-
Vaya a Herramientas > Seguridad > Usuarios.
-
Compruebe que su cuenta técnica de es la lista de usuarios y selecciónela.
-
Haga clic en la ficha Grupos para comprobar que el usuario forma parte del grupo que corresponde al perfil del producto. Este usuario también es miembro de un puñado de otros grupos, incluidos los Colaboradores:
Establecer los permisos de grupo apropiados
Finalmente, configure el grupo con los permisos adecuados necesarios para que pueda invocar o bloquear las API correctamente.
-
Inicie sesión en la instancia de autor adecuada y vaya a Configuración > Seguridad > Permisos
-
Busque el nombre del grupo correspondiente al perfil de producto en el panel izquierdo (en este caso, API de solo lectura) y selecciónelo:
-
Haga clic en el botón Edit en la siguiente ventana:
-
Modifique los permisos correctamente y haga clic en Guardar
Flujo de desarrollador developer-flow
Es probable que los desarrolladores deseen realizar pruebas con una instancia de desarrollo de su aplicación que no sea AEM (que se ejecute en su portátil o alojada) que realice solicitudes a un entorno de desarrollo de AEM as a Cloud Service de desarrollo. Sin embargo, dado que los desarrolladores no tienen necesariamente permisos de función de administrador de IMS, Adobe no puede suponer que pueden generar el portador JWT descrito en el flujo normal de servidor a servidor. Por lo tanto, Adobe proporciona un mecanismo para que un desarrollador genere un token de acceso directamente que pueda utilizarse en solicitudes a entornos de AEM as a Cloud Service a los que tiene acceso.
Consulte la documentación de las Directrices para desarrolladores para obtener información sobre los permisos necesarios para utilizar AEM as a Cloud Service developer console.
Los desarrolladores pueden utilizar este token para hacer llamadas desde aplicaciones de prueba que no sean de AEM a un entorno de AEM as a Cloud Service. Normalmente, el desarrollador utiliza este token con la aplicación que no es de AEM en su propio portátil. Además, AEM as a Cloud suele ser un entorno que no es de producción.
El flujo para desarrolladores incluye los siguientes pasos:
- Generación de un token de acceso desde Developer Console
- Llame a la aplicación AEM con el token de acceso.
Los desarrolladores también pueden realizar llamadas de API a un proyecto de AEM que se ejecute en su equipo local, en cuyo caso no se necesita un token de acceso.
Generación del token de acceso generating-the-access-token
- Vaya a Token local en Integraciones
- Haga clic en Obtener token de desarrollo local en Developer Console para poder generar un token de acceso.
Llamar a la aplicación de AEM con un token de acceso call-the-aem-application-with-an-access-token
Realice las llamadas de API de servidor a servidor adecuadas desde la aplicación que no sea de AEM a un entorno de AEM as a Cloud Service, incluido el token de acceso en el encabezado. Por lo tanto, para el encabezado "Autorización", use el valor "Bearer <access_token>".
Actualizar credenciales refresh-credentials
De forma predeterminada, las credenciales de AEM as a Cloud Service caducan al cabo de un año. Para garantizar la continuidad del servicio, los desarrolladores tienen la opción de actualizar las credenciales y ampliar su disponibilidad durante un año adicional.
Para conseguir esta extensión de actualización, haga lo siguiente:
-
Use el botón Agregar certificado en Integraciones - Cuentas técnicas en Developer Console, como se muestra a continuación
-
Después de pulsar el botón, se genera un conjunto de credenciales que incluye un nuevo certificado. Instale las nuevas credenciales en su servidor externo a AEM y asegúrese de que la conectividad se comporta según lo esperado, sin eliminar las credenciales antiguas.
-
Asegúrese de que se utilizan las nuevas credenciales en lugar de las antiguas al generar el token de acceso.
-
Si lo desea, puede revocar (y luego eliminar) el certificado anterior para que ya no se pueda utilizar en la autenticación con AEM as a Cloud Service.
Revocación de credenciales credentials-revocation
Si la clave privada está en peligro, debe crear credenciales con un nuevo certificado y una nueva clave privada. Una vez que la aplicación utiliza las nuevas credenciales para poder generar tokens de acceso, puede revocar y eliminar los certificados antiguos haciendo lo siguiente:
-
En primer lugar, añada la nueva clave. Esta clave genera credenciales con una nueva clave privada y un nuevo certificado. La nueva clave privada está marcada en la interfaz de usuario como actual y, por lo tanto, se usa para todas las credenciales nuevas de esta cuenta técnica a partir de ahora. Las credenciales asociadas con las claves privadas anteriores siguen siendo válidas hasta que se revoquen. Para lograr esta revocación, seleccione los tres puntos (…) de su cuenta técnica actual y, a continuación, seleccione Agregar nueva clave privada:
-
Seleccione Add en el símbolo del sistema que sigue:
Se abre una nueva pestaña de examinar con las nuevas credenciales y se actualiza la interfaz de usuario para mostrar ambas claves privadas con la nueva marcada como actual:
-
Instale las nuevas credenciales en el servidor que no sea de AEM y asegúrese de que la conectividad funciona según lo esperado. Consulte Flujo de servidor a servidor para obtener más información.
-
Revocar el certificado antiguo seleccionando los tres puntos (…) a la derecha del certificado y seleccionando Revocar:
A continuación, confirme la revocación en el siguiente mensaje presionando el botón Revocar:
-
Finalmente, elimine el certificado comprometido.