Informations d’identification du service

Les intégrations avec Adobe Experience Manager (AEM) as a Cloud Service doivent pouvoir s’authentifier en toute sécurité au service AEM. AEM Developer Console accorde l’accès aux informations d’identification du service, qui sont utilisées pour faciliter les applications, systèmes et services externes pour interagir par programmation avec les services AEM Author ou Publish sur HTTP.

Les informations d’identification du service peuvent apparaître similaires. Jetons d’accès au développement local mais sont différents de plusieurs manières clés :

  • Les informations d’identification du service sont associées aux comptes techniques. Plusieurs informations d’identification de service peuvent être principales pour un compte technique.
  • Les informations d’identification du service sont not les jetons d’accès ; il s’agit plutôt d’informations d’identification utilisées pour obtenir jetons d’accès.
  • Les informations d’identification du service sont plus permanentes (leur certificat expire tous les 365 jours) et ne changent pas à moins d’être révoqué, tandis que les jetons d’accès au développement local expirent tous les jours.
  • Les informations d’identification du service pour un environnement as a Cloud Service AEM sont mappées à un utilisateur de compte technique unique AEM, tandis que les jetons d’accès au développement local s’authentifient en tant qu’utilisateur ayant généré le jeton d’accès.
  • Un environnement as a Cloud Service AEM peut comporter jusqu’à dix comptes techniques, chacun disposant de ses propres informations d’identification de service, chacune d’elles étant associée à un compte technique distinct AEM utilisateur.

Les informations d’identification du service et les jetons d’accès qu’ils génèrent, ainsi que les jetons d’accès au développement local, doivent être gardés secrets. Comme les trois peuvent être utilisés pour obtenir, l'accès à leur environnement as a Cloud Service respectif AEM.

Générer les informations d’identification du service

La génération des informations d’identification du service est divisée en deux étapes :

  1. Création ponctuelle d’un compte technique par un administrateur de l’organisation Adobe IMS
  2. Téléchargement et utilisation des informations d’identification du service du compte technique JSON

Créer un compte technique

Contrairement aux jetons d’accès au développement local, les informations d’identification du service requièrent la création d’un compte technique par un administrateur IMS de l’organisation d’Adobe avant de pouvoir les télécharger. Des comptes techniques distincts doivent être créés pour chaque client qui nécessite un accès programmatique à AEM.

Créer un compte technique

Les comptes techniques sont créés une seule fois, mais les clés privées utilisent pour gérer les informations d’identification du service associées au compte technique. Par exemple, les nouvelles informations d’identification de clé privée/service doivent être générées avant l’expiration de la clé privée actuelle, afin de permettre un accès ininterrompu à un utilisateur des informations d’identification du service.

  1. Vérifiez que vous êtes connecté en tant que :
    • Administrateur de l’organisation Adobe IMS
    • Membre du Administrateurs AEM Profil de produit IMS sur Auteur AEM
  2. Connectez-vous à Adobe Cloud Manager
  3. Ouvrez le programme contenant l’environnement as a Cloud Service AEM pour intégrer la configuration des informations d’identification du service pour
  4. Appuyez sur les points de suspension en regard de l’environnement dans la Environnements et sélectionnez Developer Console
  5. Appuyez sur Intégrations tab
  6. Appuyez sur le bouton Comptes techniques tab
  7. Appuyer Créer un compte technique button
  8. Les informations d’identification du service du compte technique sont initialisées et affichées au format JSON.

AEM Developer Console - Intégrations - Obtention des informations d’identification du service

Une fois l’AEM comme informations d’identification de service de l’environnement de Cloud Service initialisé, d’autres développeurs AEM de votre organisation Adobe IMS peuvent les télécharger.

Téléchargement des informations d’identification du service

Téléchargement des informations d’identification du service

Le téléchargement des informations d’identification du service suit les étapes similaires à l’initialisation.

  1. Vérifiez que vous êtes connecté en tant que :
    • Administrateur de l’organisation Adobe IMS
    • Membre du Administrateurs AEM Profil de produit IMS sur Auteur AEM
  2. Connectez-vous à Adobe Cloud Manager
  3. Ouvrez le programme contenant l’environnement as a Cloud Service AEM à intégrer à
  4. Appuyez sur les points de suspension en regard de l’environnement dans la Environnements et sélectionnez Developer Console
  5. Appuyez sur Intégrations tab
  6. Appuyez sur le bouton Comptes techniques tab
  7. Développez l’objet Compte technique à utiliser
  8. Développez l’objet Clé privée dont les informations d’identification du service seront téléchargées et vérifiez que l’état est Principal
  9. Appuyez sur le > Affichage associé à la propriété Clé privée, qui affiche les informations d’identification du service JSON.
  10. Appuyez sur le bouton de téléchargement dans le coin supérieur gauche pour télécharger le fichier JSON contenant la valeur Service Credentials (Informations d’identification du service), puis enregistrez le fichier à un emplacement sécurisé.

Installation des informations d’identification du service

Les informations d’identification du service fournissent les détails nécessaires à la génération d’un jeton JWT, qui est échangé contre un jeton d’accès utilisé pour s’authentifier avec AEM as a Cloud Service. Les informations d’identification du service doivent être stockées dans un emplacement sécurisé accessible par les applications, systèmes ou services externes qui l’utilisent pour accéder à AEM. Le mode et l’emplacement de gestion des informations d’identification du service sont uniques par client.

Pour plus de simplicité, ce tutoriel transmet les informations d’identification du service dans via la ligne de commande. Toutefois, travaillez avec votre équipe de sécurité informatique pour comprendre comment stocker ces informations d’identification et y accéder conformément aux directives de sécurité de votre entreprise.

  1. Copiez le téléchargé JSON Informations d’identification du service. dans un fichier nommé service_token.json à la racine du projet
    • Souvenez-vous, ne jamais commettre toutes les informations d’identification à Git !

Utilisation des informations d’identification du service

Les informations d’identification du service, un objet JSON entièrement formé, ne sont pas identiques au JWT ni au jeton d’accès. Les informations d’identification du service (qui contiennent une clé privée) sont utilisées pour générer un jeton d’accès JWT qui est échangé avec les API Adobe IMS.

Informations d’identification du service - Application externe

  1. Téléchargez les informations d’identification du service depuis AEM Developer Console vers un emplacement sécurisé.
  2. L’application externe doit interagir par programmation avec AEM environnement as a Cloud Service.
  3. L’application externe lit les informations d’identification du service à partir d’un emplacement sécurisé.
  4. L’application externe utilise les informations d’identification du service pour construire un jeton JWT.
  5. Le jeton JWT est envoyé à Adobe IMS pour échanger contre un jeton d’accès.
  6. Adobe IMS renvoie un jeton d’accès qui peut être utilisé pour accéder à AEM as a Cloud Service
    • Une expiration peut être demandée pour les jetons d’accès. Il est préférable de raccourcir la durée de vie du jeton d’accès et de l’actualiser si nécessaire.
  7. L’application externe effectue des requêtes HTTP pour AEM as a Cloud Service, en ajoutant le jeton d’accès en tant que jeton porteur à l’en-tête d’autorisation des requêtes HTTP.
  8. AEM as a Cloud Service reçoit la requête HTTP, authentifie la requête et effectue le travail demandé par la requête HTTP, puis renvoie une réponse HTTP à l’application externe.

Mises à jour de l’application externe

Pour accéder à AEM as a Cloud Service à l’aide des informations d’identification du service, l’application externe doit être mise à jour de trois façons :

  1. Lecture dans les informations d’identification du service
  • Pour plus de simplicité, les informations d’identification du service sont lues à partir du fichier JSON téléchargé. Toutefois, dans les scénarios d’utilisation réelle, les informations d’identification du service doivent être stockées en toute sécurité conformément aux directives de sécurité de votre entreprise.
  1. Génération d’un JWT à partir des informations d’identification du service
  2. Échange du JWT pour un jeton d’accès
  • Lorsque les informations d’identification du service sont présentes, l’application externe utilise ce jeton d’accès au lieu du jeton d’accès au développement local lors de l’accès à AEM as a Cloud Service

Dans ce tutoriel, Adobe @adobe/jwt-auth Le module npm est utilisé pour (1) générer le JWT à partir des informations d’identification du service et (2) l’échanger contre un jeton d’accès, dans un seul appel de fonction. Si votre application n’est pas basée sur JavaScript, veuillez consulter la section exemple de code dans d’autres langues pour savoir comment créer un jeton JWT à partir des informations d’identification du service et l’échanger contre un jeton d’accès avec Adobe IMS.

Lire les informations d’identification du service

Consultez la section getCommandLineParams() voyez donc comment le fichier JSON Informations d’identification du service est lu en utilisant le même code que celui utilisé pour lire dans le JSON JSON Jeton d’accès au développement local.

function getCommandLineParams() {
    ...

    // Read in the credentials from the provided JSON file
    // Since both the Local Development Access Token and Service Credentials files are JSON, this same approach can be re-used
    if (parameters.file) {
        parameters.developerConsoleCredentials = JSON.parse(fs.readFileSync(parameters.file));
    }

    ...
    return parameters;
}

Création d’un JWT et échange d’un jeton d’accès

Une fois les informations d’identification du service lues, elles sont utilisées pour générer un jeton d’accès JWT qui est ensuite échangé avec les API Adobe IMS. Ce jeton d’accès peut ensuite être utilisé pour accéder à AEM as a Cloud Service.

Cet exemple d’application est basé sur Node.js. Il est donc préférable d’utiliser @adobe/jwt-auth module npm pour faciliter la génération (1) JWT et l’échange (20) avec Adobe IMS. Si votre application est développée à l’aide d’une autre langue, veuillez consulter les exemples de code appropriés ; sur la manière de construire la requête HTTP vers Adobe IMS à l’aide d’autres langages de programmation.

  1. Mettez à jour le getAccessToken(..) pour examiner le contenu du fichier JSON et déterminer s’il représente un jeton d’accès au développement local ou des informations d’identification du service. Pour ce faire, il suffit de vérifier l’existence de la variable .accessToken qui n’existe que pour le JSON JSON du jeton d’accès au développement local.

    Si les informations d’identification du service sont fournies, l’application génère un JWT et l’échange avec Adobe IMS pour un jeton d’accès. Utilisez la variable @adobe/jwt-auth's auth(...) qui génère un JWT et l’échange pour un jeton d’accès dans un appel de fonction unique. Les paramètres de auth(..) sont Objet JSON composé d’informations spécifiques disponible à partir du JSON des informations d’identification du service, comme décrit ci-dessous dans le code .

 async function getAccessToken(developerConsoleCredentials) {

     if (developerConsoleCredentials.accessToken) {
         // This is a Local Development access token
         return developerConsoleCredentials.accessToken;
     } else {
         // This is the Service Credentials JSON object that must be exchanged with Adobe IMS for an access token
         let serviceCredentials = developerConsoleCredentials.integration;

         // Use the @adobe/jwt-auth library to pass the service credentials generated a JWT and exchange that with Adobe IMS for an access token.
         // If other programming languages are used, please see these code samples: https://www.adobe.io/authentication/auth-methods.html#!AdobeDocs/adobeio-auth/master/JWT/samples/samples.md
         let { access_token } = await auth({
             clientId: serviceCredentials.technicalAccount.clientId, // Client Id
             technicalAccountId: serviceCredentials.id,              // Technical Account Id
             orgId: serviceCredentials.org,                          // Adobe IMS Org Id
             clientSecret: serviceCredentials.technicalAccount.clientSecret, // Client Secret
             privateKey: serviceCredentials.privateKey,              // Private Key to sign the JWT
             metaScopes: serviceCredentials.metascopes.split(','),   // Meta Scopes defining level of access the access token should provide
             ims: `https://${serviceCredentials.imsEndpoint}`,       // IMS endpoint used to obtain the access token from
         });

         return access_token;
     }
 }
Désormais, en fonction du fichier JSON transmis par le biais de ce paramètre de ligne de commande, soit le JSON JSON du jeton d’accès au développement local, soit le JSON des informations d’identification du service, l’application obtient un jeton d’accès.

N’oubliez pas que même si les informations d’identification du service expirent tous les 365 jours, le jeton d’accès JWT et le jeton d’accès correspondant expirent fréquemment et doivent être actualisés avant expiration. Pour ce faire, utilisez un "refresh_token" [fourni par Adobe IMS](https://www.adobe.io/authentication/auth-methods.html#!AdobeDocs/adobeio-auth/master/OAuth/OAuth.md#access-tokens).
  1. Une fois ces modifications en place, le fichier JSON des informations d’identification du service a été téléchargé à partir d’AEM Developer Console et, pour plus de simplicité, enregistré sous la forme service_token.json dans le même dossier que celui-ci index.js. Maintenant, exécutez l’application en remplaçant le paramètre de ligne de commande file avec service_token.jsonet de mettre à jour la variable propertyValue à une nouvelle valeur afin que les effets soient visibles dans AEM.

    $ node index.js \
        aem=https://author-p1234-e5678.adobeaemcloud.com \
        folder=/wknd-shared/en/adventures/napa-wine-tasting \
        propertyName=metadata/dc:rights \
        propertyValue="WKND Restricted Use" \
        file=service_token.json
    

    La sortie vers le terminal ressemble à ce qui suit :

    200 - OK @ https://author-p1234-e5678.adobeaemcloud.com/api/assets/wknd-shared/en/adventures/napa-wine-tasting.json
    403 - Forbidden @ https://author-p1234-e5678.adobeaemcloud.com/api/assets/wknd-shared/en/adventures/napa-wine-tasting/AdobeStock_277654931.jpg.json
    403 - Forbidden @ https://author-p1234-e5678.adobeaemcloud.com/api/assets/wknd-shared/en/adventures/napa-wine-tasting/AdobeStock_239751461.jpg.json
    403 - Forbidden @ https://author-p1234-e5678.adobeaemcloud.com/api/assets/wknd-shared/en/adventures/napa-wine-tasting/AdobeStock_280313729.jpg.json
    403 - Forbidden @ https://author-p1234-e5678.adobeaemcloud.com/api/assets/wknd-shared/en/adventures/napa-wine-tasting/AdobeStock_286664352.jpg.json
    

    Le 403 - Interdit lignes, indiquez les erreurs dans les appels API HTTP à AEM as a Cloud Service. Ces erreurs 403 interdites se produisent lors de la tentative de mise à jour des métadonnées des ressources.

    Cela s’explique par le fait que le jeton d’accès dérivé des informations d’identification du service authentifie la demande d’AEM à l’aide d’un compte technique créé automatiquement AEM utilisateur qui, par défaut, dispose uniquement d’un accès en lecture. Pour permettre l’accès en écriture de l’application à AEM, l’utilisateur du compte technique AEM associé au jeton d’accès doit se voir accorder l’autorisation dans l’.

Configurer l’accès dans AEM

Le jeton d’accès dérivé des informations d’identification du service utilise un compte technique AEM utilisateur qui est membre du Contributeurs AEM groupe d’utilisateurs.

Informations d’identification du service - Utilisateur AEM compte technique

Une fois que le compte technique AEM utilisateur existe dans AEM (après la première requête HTTP avec le jeton d’accès), les autorisations de cet utilisateur peuvent être gérées de la même manière que les autres utilisateurs .

  1. Tout d’abord, recherchez le nom de connexion AEM du compte technique en ouvrant le fichier JSON des informations d’identification du service téléchargé à partir d’AEM Developer Console, puis recherchez le integration.email qui doit ressembler à : 12345678-abcd-9000-efgh-0987654321c@techacct.adobe.com.
  2. Connectez-vous au service Auteur de l’environnement AEM correspondant en tant qu’administrateur AEM
  3. Accédez à Outils > Sécurité > Utilisateurs
  4. Localisez l’utilisateur AEM avec le Nom de connexion identifié à l’étape 1 et ouvrez le Propriétés
  5. Accédez au Groupes et ajoutez le Utilisateurs de DAM groupe (qui écrit l’accès aux ressources)
  6. Appuyer Enregistrer et fermer

Avec le compte technique autorisé dans AEM à disposer d’autorisations d’écriture sur les ressources, réexécutez l’application :

$ node index.js \
    aem=https://author-p1234-e5678.adobeaemcloud.com \
    folder=/wknd-shared/en/adventures/napa-wine-tasting \
    propertyName=metadata/dc:rights \
    propertyValue="WKND Restricted Use" \
    file=service_token.json

La sortie vers le terminal ressemble à ce qui suit :

200 - OK @ https://author-p1234-e5678.adobeaemcloud.com/api/assets/wknd-shared/en/adventures/napa-wine-tasting.json
200 - OK @ https://author-p1234-e5678.adobeaemcloud.com/api/assets/wknd-shared/en/adventures/napa-wine-tasting/AdobeStock_277654931.jpg.json
200 - OK @ https://author-p1234-e5678.adobeaemcloud.com/api/assets/wknd-shared/en/adventures/napa-wine-tasting/AdobeStock_286664352.jpg.json
200 - OK @ https://author-p1234-e5678.adobeaemcloud.com/api/assets/wknd-shared/en/adventures/napa-wine-tasting/AdobeStock_239751461.jpg.json
200 - OK @ https://author-p1234-e5678.adobeaemcloud.com/api/assets/wknd-shared/en/adventures/napa-wine-tasting/AdobeStock_280313729.jpg.json

Vérifier les modifications

  1. Connectez-vous à l’environnement as a Cloud Service AEM qui a été mis à jour (en utilisant le même nom d’hôte que celui fourni dans la variable aem paramètre de ligne de commande)
  2. Accédez au Ressources > Fichiers
  3. Accédez au dossier de ressources spécifié par la propriété folder paramètre de ligne de commande, par exemple WKND > Anglais > Aventures > Goûts du vin de Napa
  4. Ouvrez le Propriétés pour toute ressource du dossier
  5. Accédez au Avancé tab
  6. Vérifiez la valeur de la propriété mise à jour, par exemple Copyright qui est mappé à la mise à jour metadata/dc:rights Propriété JCR, qui reflète désormais la valeur fournie dans la propriété propertyValue par exemple, Utilisation restreinte de WKND

Mise à jour des métadonnées d’utilisation restreinte WKND

Félicitations !

Maintenant que nous avons accédé par programmation à AEM as a Cloud Service à l’aide d’un jeton d’accès au développement local et d’un jeton d’accès service à service prêt pour la production !

Sur cette page