Aufrufen von OpenAPI-basierten AEM-APIs mithilfe der OAuth-Web-App-Authentifizierung
Erfahren Sie, wie Sie OpenAPI-basierte AEM-APIs in AEM as a Cloud Service mithilfe der benutzerbasierten Authentifizierung über eine benutzerdefinierte Web-App aufrufen, die die OAuth-Web-App verwendet.
Die OAuth-Web-App-Authentifizierung ist ideal für Web-Anwendungen mit Frontend- und Backend-Komponenten, die (eines Benutzers auf AEM-APIs zugreifen). Sie verwendet den Gewährungstyp OAuth 2.0 authorization_code, um ein Zugriffs-Token für den Benutzer abzurufen, der auf die AEM-APIs zugreift. Weitere Informationen finden Sie unter Unterschied zwischen OAuth Server-zu-Server- und OAuth Web App/Single Page App-Anmeldeinformationen.
Lerninhalt what-you-learn
In diesem Tutorial erfahren Sie, wie Sie:
-
Konfigurieren Sie ein Adobe Developer Console (ADC)-Projekt für den Zugriff auf die Assets Author-API mithilfe der OAuth Web App-Authentifizierung.
-
Implementieren des OAuth-Web-App-Authentifizierungsflusses in einer benutzerdefinierten Web-App.
- IMS-Benutzerauthentifizierung und App-Autorisierung.
- Benutzerspezifischer Abruf von Zugriffstoken.
- Zugreifen auf OpenAPI-basierte AEM-APIs mithilfe des benutzerspezifischen Zugriffstokens.
Bevor Sie beginnen, stellen Sie sicher, dass Sie Folgendes überprüft haben:
Beispiel-Web-App: WKND-PIM - Übersicht und funktionaler Ablauf
Im Folgenden werden die Beispiel-Web-App, das WKND-Produktinformations-Management (PIM) und der funktionale Ablauf erläutert.
Die WKND-PIM-App ist eine Beispiel-Web-Anwendung, die zur Verwaltung von Produktattributen und deren in AEM as a Cloud Service gespeicherten Asset-Metadaten entwickelt wurde. Dieses Beispiel zeigt, wie Web-Apps nahtlos in Adobe-APIs integriert werden können, um effiziente, benutzerorientierte Workflows bereitzustellen.
Das Adobe Developer Console-Projekt (ADC) ist so konfiguriert, dass es über die OAuth-Web-App-Authentifizierung auf die Assets-Autoren-API zugreift. Sie stellt der WKND-PIM Web-App die erforderlichen client_id und client_secret bereit, um den authorization_code-Gewährungsfluss zu initiieren.
Die folgende Abbildung zeigt den Funktionsablauf der WKND-PIM-Web-App Abrufen benutzerspezifischer Zugriffstoken für die Interaktion mit der Assets Author-API.
- Die Web-App initiiert den Prozess, indem sie den Benutzer zur Authentifizierung zum Adobe Identity Management System (IMS) weiterleitet.
- Zusammen mit der Umleitung übergibt die Web-App die erforderlichen client_id und redirect_uri an IMS.
- IMS authentifiziert den Benutzer und sendet ihn mit einem authorization_code zurück an den angegebenen redirect_uri.
- Die Web-App tauscht den authorization_code mit IMS gegen ein benutzerspezifisches Zugriffstoken aus und verwendet hierfür client_id und client_secret.
- Nach erfolgreicher Validierung gibt IMS das benutzerspezifische (Zugriffs Token).
- Die Web-App verwendet auf sichere Weise das Zugriffstoken, um mit der Assets-Autoren-API zu interagieren, sodass Benutzende Produkt-Asset-Metadaten abrufen oder aktualisieren können.
Die WKND-PIM-Web-App wird mit Node.js und Express entwickelt. Express fungiert als Server, der private Geheimnisse und benutzerspezifische Zugriffstoken sicher verwaltet.
Andere Web-Stacks (Java, Python, .NET-basiert usw.) können mithilfe der in diesem Tutorial beschriebenen Ansätze zum Erstellen von Web-Apps verwendet werden, die sich mit den Adobe-APIs integrieren lassen.
Verwendung dieses Tutorials how-to-use-this-tutorial
Sie können entweder den Abschnitt Überprüfen von Code-Snippets für WebApps , um den Authentifizierungsfluss der OAuth-Web-App und die in der WKND-PIM-Web-App verwendeten Code-Snippets für API-Aufrufe zu verstehen. Oder fahren Sie direkt mit dem Abschnitt Einrichten und Ausführen der Web-Anwendung fort, um die Web-Anwendung WKND-PIM auf Ihrem lokalen Computer einzurichten und auszuführen und den OAuth-Authentifizierungsfluss und die API-Aufrufe zu verstehen.
Überprüfen von Web-App-Schlüssel-Code-Snippets review-web-app-key-code-snippets
Sehen wir uns die in der WKND-PIM-Web-App verwendeten Schlüssel-Code-Snippets an, um den Authentifizierungsfluss und die API-Aufrufe der OAuth-Web-App zu verstehen.
Herunterladen des WKND-PIM-Web-App-Codes
-
Laden Sie die ZIPDatei „WKND-PIM web app herunter und extrahieren Sie sie.
-
Navigieren Sie zum extrahierten Ordner und öffnen Sie die
.env.example
in Ihrem bevorzugten Code-Editor. Überprüfen Sie die erforderlichen Konfigurationsparameter.code language-plaintext ######################################################################## # Adobe IMS, Adobe Developer Console (ADC), and AEM Assets Information ######################################################################## # Adobe IMS OAuth endpoints ADOBE_IMS_AUTHORIZATION_ENDPOINT=https://ims-na1.adobelogin.com/ims/authorize/v2 ADOBE_IMS_TOKEN_ENDPOINT=https://ims-na1.adobelogin.com/ims/token/v3 ADOBE_IMS_USERINFO_ENDPOINT=https://ims-na1.adobelogin.com/ims/userinfo/v2 # Adobe Developer Console (ADC) Project's OAuth Web App credential ADC_CLIENT_ID=<ADC Project OAuth Server-to-Server credential ClientID> ADC_CLIENT_SECRET=<ADC Project OAuth Server-to-Server credential Client Secret> ADC_SCOPES=<ADC Project OAuth Server-to-Server credential Scopes> # AEM Assets Information AEM_ASSET_HOSTNAME=<AEM Assets Hostname, e.g., https://author-p63947-e1502138.adobeaemcloud.com/> AEM_ASSET_IDS=< AEM Asset IDs Comma Seperated, e.g., urn:aaid:aem:9f20a8ce-934a-4560-8720-250e529fbb17,urn:aaid:aem:6e0123cd-8a67-4d1f-b721-1b3da987d831> ################################################ # Web App Information ################################################ # The port number on which this server (web app) will run PORT = 3000 # The URL to which the user will be redirected after the OAuth flow is complete REDIRECT_URI=https://localhost:3001/callback # The Express (express-session) uses this secret to encrypt and verify the authenticity of that cookie EXPRESS_SESSION_SECRET=<Express Session Secret>
Sie müssen die Platzhalter durch die tatsächlichen Werte aus dem Adobe Developer Console (ADC)-Projekt und der AEM as a Cloud Service Assets-Instanz ersetzen.
IMS-Benutzerauthentifizierung und App-Autorisierung
Überprüfen wir den Code, der die IMS-Benutzerauthentifizierung und die App-Autorisierung initiiert. Um die Asset-Metadaten zu überprüfen oder zu aktualisieren, müssen sich die Benutzenden beim Adobe IMS authentifizieren und die WKND-PIM-Web-App autorisieren, in ihrem Namen auf die Assets Author-API zuzugreifen.
Beim ersten Anmeldeversuch muss der Benutzer seine Zustimmung geben, damit die WKND-PIM-Web-App in seinem Namen auf die Assets Author-API zugreifen kann.
-
Die
routes/update-product-attributes.js
-Datei überprüft, ob die Express-Sitzung des Benutzers über ein Zugriffs-Token verfügt. Andernfalls wird der Benutzer zur/auth
weitergeleitet.code language-javascript ... // The update-product-attributes route, shows the product attributes form with tabs router.get("/update-product-attributes", async (req, res) => { // Check if the user is authenticated, if not redirect to the auth route if (!req.session.accessToken) { return res.redirect("/auth"); } ... });
-
In
routes/adobe-ims-auth.js
Datei initiiert die/auth
Route den IMS-Benutzerauthentifizierungs- und App-Autorisierungsfluss. Beachten Sie die client_id, redirect_uri und response_type Parameter, die an den Adobe IMS-Autorisierungsendpunkt übergeben werden.code language-javascript ... // Route to initiate Adobe IMS user authentication router.get("/auth", (req, res) => { // Redirect user to Adobe IMS authorization endpoint try { // Constructing the authorization URL const params = new URLSearchParams({ client_id: adobeADCConfig.clientId, redirect_uri: redirectUri, response_type: "code", }); // Append scopes if defined in configuration if (adobeADCConfig?.scopes) params.append("scope", adobeADCConfig.scopes); // Redirect user to Adobe IMS authorization URL const imsAuthorizationUrl = `${ adobeIMSConfig.authorizationEndpoint }?${params.toString()}`; res.redirect(imsAuthorizationUrl); } catch (error) { console.error("Error initiating Adobe IMS authentication:", error); res.status(500).send("Unable to initiate authentication"); } }); ...
Wenn die Benutzerin bzw. der Benutzer nicht über Adobe IMS authentifiziert wird, wird die Adobe ID-Anmeldeseite angezeigt, auf der die Benutzerin bzw. der Benutzer zur Authentifizierung aufgefordert wird.
Wenn der Benutzer bereits authentifiziert ist, wird er mit einem authorization_code zurück zum angegebenen redirect_uri der WKND-PIM-Web-App umgeleitet.
Abrufen von Zugriffstoken
Die WKND-PIM-Web-App tauscht den authorization_code sicher mit dem Adobe IMS gegen ein benutzerspezifisches Zugriffstoken aus, indem sie die client_id und client_secret der OAuth-Web-App-Anmeldeinformationen des ADC-Projekts verwendet.
In der routes/adobe-ims-auth.js
-Datei tauscht die /callback
Route den authorization_code mit dem Adobe IMS gegen ein benutzerspezifisches Zugriffstoken aus.
...
// Callback route to exchange authorization code for access token
router.get("/callback", async (req, res) => {
// Extracting authorization code from the query parameters
const authorizationCode = req.query.code;
if (!authorizationCode) {
return res.status(400).send("Missing authorization code");
}
// Exchange authorization code for access token
try {
// Fetch access token from Adobe IMS token endpoint
const response = await fetch(adobeIMSConfig.tokenEndpoint, {
method: "POST",
headers: {
"Content-Type": "application/x-www-form-urlencoded",
Authorization: `Basic ${Buffer.from(
`${adobeADCConfig.clientId}:${adobeADCConfig.clientSecret}`
).toString("base64")}`,
},
body: new URLSearchParams({
code: authorizationCode,
grant_type: "authorization_code",
}),
});
if (!response.ok) {
console.error("Failed to fetch access token:", response.statusText);
return res.status(500).send("Failed to fetch access token");
}
const data = await response.json();
if (!data.access_token) {
console.error("Access token missing in the response:", data);
return res.status(500).send("Invalid response from token endpoint");
}
// For debugging purposes
console.log("Access token:", data.access_token);
// Store the access token in the session
req.session.accessToken = data.access_token;
// Redirect user to update product attributes
res.redirect("/update-product-attributes");
} catch (error) {
console.error("Error exchanging authorization code:", error);
res.status(500).send("Error during token exchange");
}
});
Das Zugriffstoken wird in der Express-Sitzung für nachfolgende Anfragen an die Assets-Autoren-API gespeichert.
Zugriff auf OpenAPI-basierte AEM-APIs mithilfe des Zugriffstokens
Die WKND-PIM-Web-App verwendet auf sichere Weise das benutzerspezifische Zugriffstoken, um mit der Assets-Autoren-API zu interagieren, sodass Benutzende Produkt-Asset-Metadaten abrufen oder aktualisieren können.
In der routes/invoke-aem-apis.js
-Datei rufen die /api/getAEMAssetMetadata
- und /api/updateAEMAssetMetadata
-Routen die Assets Author-APIs mithilfe des Zugriffstokens auf.
...
// API Route: Get AEM Asset Metadata
router.get("/api/getAEMAssetMetadata", async (req, res) => {
const assetId = req.query.assetId;
const bucketName = getBucketName(aemAssetsConfig.hostname);
if (!assetId || !bucketName) {
return res.status(400).json({ error: "Missing AEM Information" });
}
// Get the access token from the session
const accessToken = req.session.accessToken;
if (!accessToken) {
return res.status(401).json({ error: "Not Authenticated with Adobe IMS" });
}
try {
const assetMetadata = await invokeGetAssetMetadataAPI(
bucketName,
assetId,
accessToken
);
const filteredMetadata = getFilteredMetadata(JSON.parse(assetMetadata));
res.status(200).json(filteredMetadata);
} catch (error) {
console.error("Error getting asset metadata:", error.message);
res.status(500).json({ error: `Internal Server Error: ${error.message}` });
}
});
// Helper function to invoke the AEM API to get asset metadata
async function invokeGetAssetMetadataAPI(bucketName, assetId, accessToken) {
const apiUrl = `https://${bucketName}.adobeaemcloud.com/adobe/assets/${assetId}/metadata`;
// For debugging purposes
console.log("API URL:", apiUrl);
console.log("Access Token:", accessToken);
console.log("API Key:", adobeADCConfig.clientId);
try {
const response = await fetch(apiUrl, {
method: "GET",
headers: {
"If-None-Match": "string",
"X-Adobe-Accept-Experimental": "1",
Authorization: `Bearer ${accessToken}`,
"X-Api-Key": adobeADCConfig.clientId,
},
});
console.log("Response Status:", response.status);
if (!response.ok) {
throw new Error(`AEM API Error: ${response.statusText}`);
}
return await response.text();
} catch (error) {
throw new Error(`Failed to fetch asset metadata: ${error.message}`);
}
}
// Helper function to filter the metadata properties like pim: and dc:
function getFilteredMetadata(data) {
if (!data || !data.assetMetadata) {
throw new Error("Invalid metadata structure received from API");
}
const properties = data.assetMetadata;
return Object.keys(properties).reduce((filtered, key) => {
if (
key.startsWith("pim:") ||
key === "dc:title" ||
key === "dc:description"
) {
filtered[key] = properties[key];
}
return filtered;
}, {});
}
// API Route: Update AEM Asset Metadata
router.post("/api/updateAEMAssetMetadata", async (req, res) => {
const { assetId, metadata } = req.body;
if (!assetId || !metadata || typeof metadata !== "object") {
return res.status(400).json({ error: "Invalid or Missing Metadata" });
}
const bucketName = getBucketName(aemAssetsConfig.hostname);
if (!bucketName) {
return res.status(400).json({ error: "Missing AEM Information" });
}
const accessToken = req.session.accessToken;
if (!accessToken) {
return res.status(401).json({ error: "Not Authenticated with Adobe IMS" });
}
try {
const updatedMetadata = await invokePatchAssetMetadataAPI(
bucketName,
assetId,
metadata,
accessToken
);
res.status(200).json(updatedMetadata);
} catch (error) {
console.error("Error updating asset metadata:", error.message);
res.status(500).json({ error: `Internal Server Error: ${error.message}` });
}
});
// Helper function to invoke the AEM API to update asset metadata
async function invokePatchAssetMetadataAPI(
bucketName,
assetId,
metadata,
accessToken
) {
const apiUrl = `https://${bucketName}.adobeaemcloud.com/adobe/assets/${assetId}/metadata`;
const headers = {
"Content-Type": "application/json-patch+json",
"If-Match": "*",
"X-Adobe-Accept-Experimental": "1",
Authorization: `Bearer ${accessToken}`,
"X-Api-Key": adobeADCConfig.clientId,
};
try {
const response = await fetch(apiUrl, {
method: "PATCH",
headers,
body: JSON.stringify(getTransformedMetadata(metadata)),
});
if (!response.ok) {
throw new Error(`AEM API Error: ${response.statusText}`);
}
return await response.json();
} catch (error) {
throw new Error(`Failed to update asset metadata: ${error.message}`);
}
}
// Helper function to transform metadata into JSON Patch format, e.g. [{ op: "add", path: "dc:title", value: "New Title" }]
function getTransformedMetadata(metadata) {
return Object.keys(metadata).map((key) => ({
op: "add",
path: `/${key}`,
value: metadata[key],
}));
}
Die OpenAPI-basierten AEM-API-Aufrufe erfolgen Server-seitig (Express-Middleware) und nicht direkt Client-seitig (Browser), um sicherzustellen, dass das Zugriffstoken sicher verwaltet wird und nicht Client-seitig verfügbar gemacht wird.
Aktualisieren des Zugriffstokens
Um das Zugriffstoken vor Ablauf zu aktualisieren, können Sie den Aktualisierungstokenfluss implementieren. Um das Tutorial jedoch einfach zu halten, implementiert die WKND-PIM-Web-App den Aktualisierungstoken-Fluss nicht.
Einrichten und Ausführen der Web-Anwendung
Konfigurieren wir die WKND-PIM-Web-App auf Ihrem lokalen Computer und führen sie aus, um den Authentifizierungsfluss und die API-Aufrufe der OAuth-Web-App zu verstehen.
Voraussetzungen
Zum Durchführen dieses Tutorials benötigen Sie Folgendes:
-
Modernisierte AEM as a Cloud Service-Umgebung mit folgenden Neuerungen:
- AEM-Version
2024.10.18459.20241031T210302Z
oder höher. - Neue Stil-Produktprofile (wenn die Umgebung vor November 2024 erstellt wurde)
Weitere finden Sie im Artikel zum Einrichten von OpenAPIbasierten AEM-APIs .
- AEM-Version
-
Das Beispielprojekt WKND Sites muss darin bereitgestellt werden.
-
Rufen Sie die Adobe Developer Console auf.
-
Installieren Sie Node.js auf Ihrem lokalen Computer, um die NodeJS-Beispielanwendung auszuführen.
-
Installieren Sie einen local-ssl-proxy auf Ihrem lokalen Computer, um einen lokalen SSL-HTTP-Proxy mit einem selbstsignierten Zertifikat zu erstellen.
Entwicklungsschritte
Die allgemeinen Entwicklungsschritte lauten:
-
ADC-Projekt konfigurieren
- Hinzufügen der Assets Author-API
- Konfigurieren von OAuth Web App-Anmeldeinformationen
-
Konfigurieren der AEM-Instanz, um die ADC-Projektkommunikation zu aktivieren
-
Erstellen und Anwenden von Asset-Metadatenschemata in AEM
-
Konfigurieren und Ausführen der WKND-PIM-Web-App
-
Überprüfen des End-to-End-Flusses
ADC-Projekt konfigurieren
Der Schritt zum Konfigurieren des ADC Projekts wird der OpenAPI-basierten AEM-APIs wiederholt. Wiederholt wird, um die Assets Author-API hinzuzufügen und ihre Authentifizierungsmethode als OAuth Web App zu konfigurieren.
-
Öffnen Sie in der {0🔗Adobe Developer Console} das gewünschte Projekt.
-
Um AEM-APIs hinzuzufügen, klicken Sie auf die Schaltfläche API hinzufügen.
-
Filtern Sie Dialogfeld " hinzufügen“ nach Experience Cloud und wählen Sie die Karte AEM Assets Author API aus und klicken Sie auf Weiter.
-
Wählen Sie anschließend im Dialogfeld API konfigurieren die Option Benutzerauthentifizierung und klicken Sie auf Weiter.
-
Wählen Sie im nächsten API konfigurieren die Authentifizierungsoption OAuth Web App und klicken Sie auf Weiter.
-
Geben Sie Dialogfeld OAuth-Web App konfigurieren die folgenden Details ein und klicken Sie auf Weiter.
- Standard-Umleitungs-URI:
https://localhost:3001/callback
- Umleitungs-URI-Muster:
https://localhost:3001/callback
- Standard-Umleitungs-URI:
-
Überprüfen Sie die verfügbaren Bereiche und klicken Sie auf Konfigurierte API speichern.
-
Überprüfen Sie die AEM-API und die Authentifizierungskonfiguration.
Konfigurieren der AEM-Instanz zur Aktivierung der ADC-Projektkommunikation
Befolgen Sie die Anweisungen im Artikel Einrichten von OpenAPI-basierten AEMAPIs , um die AEM-Instanz so zu konfigurieren, dass die ADC-Projektkommunikation aktiviert wird.
Erstellen und Anwenden eines Asset-Metadatenschemas
Standardmäßig verfügt das WKND Sites-Projekt nicht über das erforderliche Asset-Metadatenschema zum Anzeigen der Produktattribute. Erstellen wir nun das Asset-Metadatenschema und wenden es auf einen Asset-Ordner in der AEM-Instanz an.
-
Melden Sie sich bei der AEM as a Cloud Service Asset-Instanz an. Navigieren Sie mithilfe AssetAnsicht zum
/content/dam/wknd-shared/en
. -
Erstellen Sie ein PIM und darin den Ordner Camping und laden Sie dann Beispielbilder in den Ordner Camping hoch.
Als Nächstes erstellen wir das PIM-Attribut-spezifische Metadatenschema und wenden es auf den Ordner PIM an.
-
Navigieren Sie in der Leiste zur Option Einstellungen > Metadaten-Forms und klicken Sie auf die Schaltfläche Erstellen.
-
Geben Sie im Dialogfeld Metadatenformular erstellen die folgenden Details ein und klicken Sie auf Erstellen.
- Name:
PIM
- Vorhandene Formularstruktur als Vorlage verwenden:
Check
- Auswählen aus:
default
- Name:
-
Klicken Sie auf das Symbol + , um eine neue Registerkarte PIM hinzuzufügen und Komponenten Einzeiliger Text hinzuzufügen. Die Namen der Metadateneigenschaften sollten mit
pim:
Präfix beginnen.table 0-row-3 1-row-3 2-row-3 3-row-3 4-row-3 5-row-3 6-row-3 Bezeichnung Platzhalter Metadaten-Eigenschaft SKU SKU-ID eingeben pim:sku
Produkttyp z. B. Rucksack, Zelt, Jacke pim:productType
Produktkategorie z.B. Camping, Wandern, Klettern pim:productCategory
Hersteller Herstellernamen eingeben pim:manufacturer
Modell Modellnamen eingeben pim:model
Markenname Markennamen eingeben pim:brandName
-
Klicken Sie auf Speichern und Schließen, um das Metadatenformular zu speichern.
-
Wenden Sie abschließend das PIM-Metadatenschema auf den PIM-Ordner an.
Mit den oben genannten Schritten können die Assets aus dem PIM-Ordner die Metadaten der Produktattribute speichern.
Konfigurieren und Ausführen der WKND-PIM-Web-App
-
Laden Sie die ZIPDatei „WKND-PIM web app herunter und extrahieren Sie sie.
-
Navigieren Sie zum extrahierten Ordner und kopieren Sie die
.env.example
in.env
. -
Aktualisieren Sie die
.env
mit den erforderlichen Konfigurationsparametern aus dem Adobe Developer Console-Projekt (ADC) und der AEM as a Cloud Service Assets-Instanz.code language-plaintext ######################################################################## # Adobe IMS, Adobe Developer Console (ADC), and AEM Assets Information ######################################################################## # Adobe IMS OAuth endpoints ADOBE_IMS_AUTHORIZATION_ENDPOINT=https://ims-na1.adobelogin.com/ims/authorize/v2 ADOBE_IMS_TOKEN_ENDPOINT=https://ims-na1.adobelogin.com/ims/token/v3 ADOBE_IMS_USERINFO_ENDPOINT=https://ims-na1.adobelogin.com/ims/userinfo/v2 # Adobe Developer Console (ADC) Project OAuth Web App credential ADC_CLIENT_ID=e1adsfsd59384320bbe4f9298f00b7ab ADC_CLIENT_SECRET=p8e-Mdfgfdsg43RHugVRTEOyWlmEU5m ADC_SCOPES=AdobeID,openid,aem.folders,aem.assets.author # AEM Assets Information AEM_ASSET_HOSTNAME=https://author-p3947-e1542138.adobeaemcloud.com/ AEM_ASSET_IDS=urn:aaid:aem:aa689a9f-04da-4fbb-b460-74a5b6a69090,urn:aaid:aem:e4fdb6f6-1007-4e84-9726-a9522931786a ################################################ # Web App Information ################################################ # The port number on which this server (web app) will run PORT = 3000 # The URL to which the user will be redirected after the OAuth flow is complete REDIRECT_URI=http://localhost:3000/auth/callback # The Express (express-session) uses this secret to encrypt and verify the authenticity of that cookie # For demonstration purposes, this is a simple secret. In production, you should use a strong secret EXPRESS_SESSION_SECRET=1234554321
Die
AEM_ASSET_IDS
sind derjcr:uuid
Eigenschaftswert der hochgeladenen Bilder im Ordner Camping. Weitere Informationen finden Sie diesem. -
Öffnen Sie ein Terminal und navigieren Sie zum extrahierten Ordner. Installieren Sie die erforderlichen Abhängigkeiten mithilfe des folgenden Befehls.
code language-bash $ npm install
-
Starten Sie die WKND-PIM-Web-App mit dem folgenden Befehl.
code language-bash $ npm start
-
Führen Sie den lokalen SSL-HTTP-Proxy mit dem folgenden Befehl aus.
code language-bash $ local-ssl-proxy --source 3001 --target 3000 --cert ./ssl/server.crt --key ./ssl/server.key
Der lokale SSL-HTTP-Proxy wird verwendet, da IMS erfordert, dass der Umleitungs-URI HTTPS ist.
Überprüfen des End-to-End-Flusses
-
Öffnen Sie einen Browser und navigieren Sie zu
https://localhost:3001
, um auf die WKND-PIM-Web-App zuzugreifen. Akzeptieren Sie die Warnung zum selbstsignierten Zertifikat. -
Klicken Sie Jetzt versuchen, um die Metadaten der Produktattribute zu überprüfen und zu aktualisieren. Er initiiert den IMS-Benutzerauthentifizierungs- und App-Autorisierungsfluss.
-
Melden Sie sich mit Ihren Adobe ID-Anmeldeinformationen an und stimmen Sie zu, dass die WKND-PIM-Web-App in Ihrem Namen auf die Assets-Autoren-API zugreifen darf.
-
Klicken Sie auf der
https://localhost:3001/update-product-attributes
Route/Seite auf die Registerkarte AEM Asset-Attribute . Wählen Sie aus Dropdown-Liste Asset-ID“ eine Asset-ID aus, um die Asset-Metadaten anzuzeigen. -
Aktualisieren Sie die Asset-Metadaten und klicken Sie auf AEM-Asset-Attribute aktualisieren um die Asset-Metadaten zu aktualisieren.
Überprüfen des Anwendungs-Codes
Sehen wir uns die allgemeine Code-Struktur und die wichtigsten Einstiegspunkte der WKND-PIM-Web-App an. Die Anwendung wird mit Node.js + Express entwickelt.
-
Der
app.js
ist der Haupteinstiegspunkt der Anwendung. Es initialisiert die Express-App, richtet die Sitzung ein und mountet die Routen. -
Der
public
-Ordner enthält die statischen Assets wie CSS, JavaScript und Bilder. Diescript.js
enthält den Client-seitigen JavaScript-Code für die Interaktion mit den Express-/api/getAEMAssetMetadata
und/api/updateAEMAssetMetadata
. -
Der Ordner
routes
enthält die Express-Routen:index.js
: Die Hauptroute, die die Startseite rendert.update-product-attributes.js
: Die Route, die das Produktattribut-Formular mit Registerkarten rendert, überprüft auch die Express-Sitzung für das Zugriffstoken.adobe-ims-auth.js
: Die Route, die den Adobe IMS-Benutzerauthentifizierungs- und App-Autorisierungsfluss initiiert.invoke-aem-apis.js
: Die Route, die die OpenAPI-basierten AEM-APIs mithilfe des benutzerspezifischen Zugriffstokens aufruft.
-
Der
views
-Ordner enthält die JS-Vorlagen zum Rendern der HTML-Seiten. -
Der Ordner
utils
enthält die Dienstprogrammfunktionen. -
Der
ssl
-Ordner enthält das selbstsignierte Zertifikat und die Schlüsseldateien zum Ausführen des lokalen SSL-HTTP-Proxys.
Sie können die vorhandene Web-App mit den Adobe-APIs entwickeln oder integrieren, indem Sie andere Server-seitige Technologien wie Java, Python oder .NET verwenden.
Zusammenfassung
In diesem Tutorial haben Sie erfahren, wie Sie OpenAPI-basierte AEM-APIs für AEM as a Cloud Service über eine benutzerdefinierte Web-App mithilfe der OAuth-Web-App-Authentifizierung aufrufen. Sie haben die in der WKND-PIM-Web-App verwendeten Schlüssel-Code-Snippets gelesen, um den Authentifizierungsfluss der OAuth-Web-App zu verstehen.
Sie können das Tutorial als Referenz verwenden, um die OpenAPI-basierten AEM-APIs in Ihre benutzerdefinierten Web-Anwendungen zu integrieren und so effiziente, benutzerorientierte Workflows bereitzustellen.