Informations d’identification du service

Les intégrations à AEM as a Cloud Service doivent pouvoir s’authentifier en toute sécurité dans 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 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 (expirent tous les 365 jours) et ne changent pas, sauf si elles sont révoquées, 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 AEM as a Cloud Service comporte une information d’identification de service qui correspond à un compte technique AEM utilisateur. Les informations d’identification du service ne peuvent pas être utilisées pour s’authentifier dans le même environnement as a Cloud Service AEM que des utilisateurs AEM compte technique différents.

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, car les trois peuvent être utilisés pour accéder à leurs environnements as a Cloud Service respectifs 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. Initialisation ponctuelle des informations d’identification du service par un administrateur de l’organisation Adobe IMS
  2. Téléchargement et utilisation des informations d’identification du service JSON

Initialisation des informations d’identification du service

Contrairement aux jetons d’accès de développement locaux, les informations d’identification du service requièrent un initialisation unique par l’administrateur IMS de votre organisation d’Adobe avant de pouvoir les télécharger.

Initialisation des informations d’identification du service

Il s’agit d’une initialisation unique par environnement as a Cloud Service AEM

  1. Vérifiez que vous êtes connecté en tant que :
    • Votre administrateur de l’organisation Adobe IMS
    • Membre du Cloud Manager - Développeur Profil de produit IMS
    • Membre du Utilisateur AEM ou 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. Appuyer Obtention des informations d’identification du service button
  7. Les informations d’identification du service seront 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 mêmes étapes que l’initialisation. Si l’initialisation n’a pas encore eu lieu, une erreur s’affiche lorsque l’utilisateur appuie sur la balise Obtention des informations d’identification du service bouton .

  1. Vérifiez que vous êtes connecté en tant que :
    • Membre du Cloud Manager - Développeur Profil de produit IMS (qui accorde l’accès à AEM Developer Console)
      • Les environnements Sandbox AEM as a Cloud Service ne nécessitent pas cette Cloud Manager - Développeur abonnement
    • Membre du Utilisateur AEM ou 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. Appuyer Obtention des informations d’identification du service button
  7. Appuyez sur le bouton de téléchargement dans le coin supérieur gauche pour télécharger le fichier JSON contenant la valeur Informations d’identification du service, puis enregistrez le fichier à un emplacement sécurisé.
    • Si les informations d’identification du service sont compromises, contactez immédiatement l’assistance Adobe pour qu’elles soient révoquées.

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 seront 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
    • Mais rappelez-vous, ne validez jamais vos identifiants à 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. Une application externe doit interagir par programmation avec AEM environnements 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
    • Un délai d’expiration peut être demandé 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, votre application externe doit être mise à jour de trois façons :

  1. Lecture dans les informations d’identification du service
    • Pour plus de simplicité, nous lirons ces informations à 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.
  2. Génération d’un JWT à partir des informations d’identification du service
  3. Échange du JWT pour un jeton d’accès
    • Lorsque les informations d’identification du service sont présentes, notre 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() et vérifiez que nous pouvons lire dans les fichiers JSON Informations d’identification du service 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 pour un jeton d’accès qui 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. Nous utiliserons la variable @adobe/jwt-auth's auth(...) qui génère un JWT et l’échange pour un jeton d’accès dans un seul appel de fonction. Les paramètres de auth(..) est un 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, selon le fichier JSON transmis par l’intermédiaire de : JSON du jeton d’accès au développement local ou JSON des informations d’identification du service. file paramètre de ligne de commande, l’application dérive 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 une refresh_token fourni par Adobe IMS.

  2. Une fois ces modifications en place, et le fichier JSON des informations d’identification du service téléchargé depuis AEM Developer Console (et, pour plus de simplicité, enregistré sous service_token.json le même dossier que celui-ci index.js), exécutez l’application en remplaçant le paramètre de ligne de commande file avec service_token.json, puis mettez à 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/en/adventures/napa-wine-tasting \
        propertyName=metadata/dc:rights \
        propertyValue="WKND Restricted Use" \
        file=service_token.json
    

    La sortie vers le terminal se présentera comme suit :

    200 - OK @ https://author-p1234-e5678.adobeaemcloud.com/api/assets/wknd/en/adventures/napa-wine-tasting.json
    403 - Forbidden @ https://author-p1234-e5678.adobeaemcloud.com/api/assets/wknd/en/adventures/napa-wine-tasting/AdobeStock_277654931.jpg.json
    403 - Forbidden @ https://author-p1234-e5678.adobeaemcloud.com/api/assets/wknd/en/adventures/napa-wine-tasting/AdobeStock_239751461.jpg.json
    403 - Forbidden @ https://author-p1234-e5678.adobeaemcloud.com/api/assets/wknd/en/adventures/napa-wine-tasting/AdobeStock_280313729.jpg.json
    403 - Forbidden @ https://author-p1234-e5678.adobeaemcloud.com/api/assets/wknd/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 membre du groupe d’utilisateurs AEM contributeurs .

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 pour disposer d’autorisations d’écriture sur les ressources, exécutez de nouveau l’application :

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

La sortie vers le terminal se présentera comme suit :

200 - OK @ https://author-p1234-e5678.adobeaemcloud.com/api/assets/wknd/en/adventures/napa-wine-tasting.json
200 - OK @ https://author-p1234-e5678.adobeaemcloud.com/api/assets/wknd/en/adventures/napa-wine-tasting/AdobeStock_277654931.jpg.json
200 - OK @ https://author-p1234-e5678.adobeaemcloud.com/api/assets/wknd/en/adventures/napa-wine-tasting/AdobeStock_286664352.jpg.json
200 - OK @ https://author-p1234-e5678.adobeaemcloud.com/api/assets/wknd/en/adventures/napa-wine-tasting/AdobeStock_239751461.jpg.json
200 - OK @ https://author-p1234-e5678.adobeaemcloud.com/api/assets/wknd/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, ainsi que d’un jeton d’accès service à service prêt pour la production !

Sur cette page