Generieren von Zugriffs-Token für Server-seitige APIs generating-access-tokens-for-server-side-apis
Einige Architekturen erfordern Aufrufe an Adobe Experience Manager (AEM) as a Cloud Service von einer Anwendung, die auf einem Server außerhalb der AEM-Infrastruktur gehostet wird. Beispielsweise ruft eine Mobile App einen Server auf, der dann API-Anfragen an AEM as a Cloud Service sendet.
Verwenden Sie die AEM as a Cloud Service Developer Console, um ein technisches OAuth-Server-zu-Server-Konto zu erstellen. Ihre Anwendung tauscht ihre Client-ID und ihr Client-Geheimnis mithilfe der Adobe Identity Management Services (IMS)-client_credentials gegen ein Zugriffstoken aus. Es ist kein signiertes JWT, kein privater Schlüssel oder Zertifikat erforderlich.
developer.adobe.com/console. Erstellen und verwalten Sie das technische Konto, das hier in der AEM Developer Console beschrieben wird.Der Server-zu-Server-Fluss the-server-to-server-flow
Benutzende mit der Rolle eines IMS-Organisationsadministrators, die auch Mitglieder des Produktprofils AEM-Benutzende oder AEM- in der AEM-Autoreninstanz sind, können ein technisches Konto erstellen. Das Client-Geheimnis wird bei der Erstellung nur dem Benutzer angezeigt, der es erstellt hat. Benutzende mit der Rolle eines AEM as a Cloud Service-Umgebungs-Administrators können die Kontodetails anzeigen, die das Client-Geheimnis nicht enthalten.
Der Server-zu-Server-Fluss umfasst die folgenden Schritte:
- Erstellen Sie ein technisches OAuth-Server-zu-Server-Konto und speichern Sie dessen Anmeldeinformationen, einschließlich des bei der Erstellung angezeigten Client-Geheimnisses.
- Speichern Sie die Anmeldeinformationen sicher auf dem Server, der Anfragen an AEM sendet.
- Fordern Sie ein Zugriffstoken von IMS mithilfe der Client-ID, des Client-Geheimnisses und der Bereiche an.
- Konfigurieren Sie das Produktprofil und die AEM-Berechtigungen des technischen Kontos.
- Rufen Sie die AEM-API mit dem Zugriffstoken als Bearer-Token auf.
Erstellen eines technischen Kontos und Abrufen seiner Anmeldeinformationen fetch-the-aem-as-a-cloud-service-credentials
-
Integrationen öffnen. Öffnen Sie die AEM Developer Console für die Umgebung, auf die Ihre Anwendung zugreift, und wählen Sie dann Integrationen aus. Wählen Neues technisches Konto erstellen aus.
-
Erstellen Sie das technische Konto. Wählen Sie im Dialogfeld OAuth Server-zu-Server (S2S) als Berechtigungstyp aus und klicken Sie dann auf Erstellen.
-
Speichern Sie das Client-Geheimnis. Das „Client-Geheimnis speichern zeigt die Anmeldeinformationen an, einschließlich
technicalAccount.clientSecret. Wählen Sie Anmeldedaten herunterladen, um sie alsaem-s2s-credentials.jsonzu speichern, oder wählen Sie In Zwischenablage kopieren. Speichern Sie die Anmeldeinformationen in einem geheimen Manager oder einem anderen zugriffsgesteuerten Speicherort für Ihr Programm.
Wählen Sie Schließen aus. Wählen im Bestätigungsdialogfeld „Schließen ohne weiteren Zugriff auf Ihre geheimen Daten die Option Schließen nur nach sicherem Speichern der geheimen Daten aus. Nachdem das Dialogfeld geschlossen wurde, können die geheimen Daten nicht mehr angezeigt werden.
-
Überprüfen Sie das technische Konto. Das neue OAuth Server-zu-Server-Konto wird mit seinem Active-Client-Geheimnis aufgelistet. Die in der Liste angezeigte geheime ID identifiziert ein Geheimnis. Dies ist nicht der geheime Wert und kann nicht als
client_secretin einer Token-Anfrage verwendet werden.
Um die Details der geheimen Daten später zu überprüfen, öffnen Sie das Zeilenmenü des Client-Geheimnisses und wählen Sie Anzeigen aus. Das Dialogfeld „Anmeldeinformationen“ zeigt den IMS-Endpunkt, die Bereiche, die Client-ID, die E-Mail-Adresse des technischen Kontos, die geheime ID und den Sperrstatus an. Der Wert des Client-Geheimnisses wird nicht angezeigt.
Installieren der AEM-Service-Anmeldeinformationen auf einem Nicht-AEM-Server install-the-aem-service-credentials-on-a-non-aem-server
Stellen Sie die Anmeldeinformationen nur für die Server-seitige Anwendung zur Verfügung, die AEM aufruft. Verwenden Sie einen geheimen Manager oder einen anderen Zugriffskontrollmechanismus.
Fügen Sie kein Client-Geheimnis in Browser-seitigen Code, Mobile Apps, Quellcodeverwaltung oder Protokollen ein. Behandeln Sie Zugriffs-Token auch als Geheimnisse.
Anfordern eines OAuth-Zugriffstoken request-an-oauth-access-token
Senden Sie eine HTTPS-POST an https://<imsEndpoint>/ims/token/v3. Der imsEndpoint in der JSON-Datei zur Berechtigung ist ein IMS-Hostname. ims-na1.adobelogin.com verwendet beispielsweise https://ims-na1.adobelogin.com/ims/token/v3. Verwenden Sie den in Ihren Anmeldeinformationen angegebenen Hostnamen, einschließlich des Hostnamens für das Stadium bei Verwendung der Anmeldeinformationen für das Stadium.
Verwenden Sie Content-Type: application/x-www-form-urlencoded und schließen Sie diese Formularfelder in den Anfrageinhalt ein:
grant_typeclient_credentialsclient_idtechnicalAccount.clientId aus Ihren Anmeldedaten.client_secrettechnicalAccount.clientSecret, die Sie beim Erstellen der geheimen Daten gespeichert haben.scopescopes, verbunden mit Kommas.URL-Codierung jedes Formularwerts. Senden Sie geheime Daten im Anfragetext, nicht in der URL oder Abfragezeichenfolge.
Die Antwort umfasst access_token, token_type und expires_in. Verwenden Sie access_token , um AEM aufzurufen. Der expires_in Wert ist die Token-Lebensdauer in Sekunden. Verwenden Sie diesen Wert, anstatt eine feste Ablaufzeit anzunehmen.
Speichern Sie das Zugriffstoken zwischen und verwenden Sie es erneut, bis es fast abläuft. Fordern Sie dann ein neues Token mit denselben Client-Anmeldeinformationen an. Diese Gewährung erfordert keinen JWT-Austausch oder ein Aktualisierungs-Token.
Beispiel für die Node.js-Authentifizierung nodejs-authentication-example
Eine minimale OAuth-Server-zu-Server-Implementierung finden Sie im Beispiel der AEM-CS API-Client-Bibliothek. Es verwendet integrierte Node.js-APIs und erfordert Node.js 18 oder neuer ohne zusätzliche Abhängigkeiten.
Das Beispiel erwartet die Anmeldeinformationen in einem integration. Die von AEM Developer Console heruntergeladene aem-s2s-credentials.json-Datei enthält die Anmeldeinformationen ohne diesen Wrapper. Schließen Sie den Inhalt vor der Verwendung mit dem Beispiel ein, z. B. mit jq:
jq '{integration: .}' aem-s2s-credentials.json > downloaded_integration.json
Bearbeiten Sie alternativ die Datei so, dass ihr vollständiger Inhalt zum Wert eines integration-Felds der obersten Ebene wird. Führen Sie aus dem Beispiel-Repository Folgendes aus:
node oauth-s2s-cli.js downloaded_integration.json
Für die programmgesteuerte Verwendung akzeptiert der OAuth-Helper das umschlossene Objekt als requestAccessToken(credentials). Dabei werden der IMS-Hostname, die Client-ID, das Client-Geheimnis und die Bereiche in integration verwendet.
Behalten Sie die Datei mit den Anmeldeinformationen für sich. Die CLI druckt ein Zugriffs-Token. Senden Sie keine Ausgaben an freigegebene Protokolle oder veröffentlichen Sie sie nicht. Die README-Datei des Beispiels zeigt auch, wie das Token in einer AEM-API-Anfrage verwendet wird.
Aufrufen der AEM-API calling-the-aem-api
Fügen Sie das Zugriffstoken mithilfe des Bearer <access_token> in die Authorization-Kopfzeile von Anfragen an Ihre AEM as a Cloud Service-Umgebung ein.
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
"https://author-p<program-id>-e<environment-id>.adobeaemcloud.com/content/dam.json"
Verwenden Sie den Hostnamen für die Umgebung und die Ebene, auf die Ihre Anwendung zugreift. Nur Ressourcen aufrufen, auf die das technische Konto zugreifen darf.
Festlegen der entsprechenden Berechtigungen für den technischen Kontobenutzer in AEM set-the-appropriate-permissions-for-the-technical-account-user-in-aem
- Öffnen Sie die Adobe Admin Console.
- Wählen Sie AEM as a Cloud Service unter Produkte und Services aus.
- Erstellen Sie ein Produktprofil für die Integration oder wählen Sie ein geeignetes vorhandenes Profil aus.
- Wählen Sie Benutzer hinzufügen aus und fügen Sie das technische Konto mithilfe des
emailaus dessen Anmeldeinformationen hinzu. - Warten Sie, bis sich die Produktprofiländerungen auswirken. Erstellen Sie einen API-Aufruf an AEM mit einem für das technische Konto generierten Zugriffstoken. Das Produktprofil wird als AEM-Gruppe mit dem technischen Konto als Mitglied synchronisiert.
- Öffnen Sie in der entsprechenden AEM-Autoreninstanz Tools > Sicherheit > Gruppen. Suchen Sie die Produktprofilgruppe und überprüfen Sie, ob das technische Konto unter Mitglieder angezeigt wird. Sie können auch die Gruppenmitgliedschaft unter Tools > Sicherheit > Benutzer überprüfen.
- Öffnen Sie Einstellungen > Sicherheit > Berechtigungen. Wählen Sie die dem Produktprofil entsprechende Gruppe aus und konfigurieren Sie die für Ihre API-Aufrufe erforderlichen Berechtigungen.
- Überprüfen Sie die erforderlichen API-Aufrufe für jede Ebene, auf die die Anwendung zugreift. Gewähren Sie nur die für die Integration erforderlichen Berechtigungen.
Weitere Informationen zu IMS und AEM-Benutzern und -Gruppen finden Sie unter IMS-Unterstützung.
Entwicklungsablauf developer-flow
Für lokale Tests können Entwicklerinnen und Entwickler ein Entwicklungs-Zugriffstoken direkt in der AEM Developer Console generieren, ohne ein technisches OAuth-Server-zu-Server-Konto zu erstellen. Das Token kann zum Aufrufen von AEM-Umgebungen verwendet werden, auf die Entwicklerinnen und Entwickler zugreifen können. Verwenden Sie für unbeaufsichtigte Server-seitige Anwendungen OAuth-Server-zu-Server-Anmeldeinformationen anstelle eines lokalen Entwicklungstokens.
Die für Verwendung von AEM Developer Console erforderlichen finden Sie in den Entwicklerrichtlinien .
Generieren des Zugriffs-Tokens generating-the-access-token
- Navigieren Sie in AEM Developer Console zu Integrationen > Lokales Token.
- Wählen Sie Lokales Entwicklungstoken abrufen aus.
Aufrufen der AEM-Anwendung mit einem Zugriffs-Token call-the-aem-application-with-an-access-token
Verwenden Sie das lokale Entwicklungs-Zugriffstoken als Bearer-Token in der Authorization-Kopfzeile, wie in Aufrufen der AEM-API beschrieben.
Für ein AEM-Projekt, das auf Ihrem lokalen Computer ausgeführt wird, ist kein IMS-Zugriffstoken erforderlich.
Rotieren von Client-Geheimnissen refresh-credentials
OAuth-Server-zu-Server-Anmeldeinformationen erfordern keine jährliche Zertifikatsverlängerung. Rotieren Sie Client-Geheimnisse regelmäßig und immer dann, wenn geheime Daten offen gelegt werden. Erstellen Sie neue geheime Daten, stellen Sie sie in Ihren Anwendungen ein und widerrufen Sie erst dann die alten geheimen Daten.
Das Erstellen und Widerrufen von geheimen Daten erfordert die von Ihnen gespeicherten geheimen Daten. AEM Developer Console verwendet einen eingegebenen geheimen Schlüssel nur zur Authentifizierung der Anfrage bei IMS und speichert ihn nicht.
-
Neue geheimen Daten erstellen. Öffnen in "" das Aktionsmenü neben dem Namen des OAuth-Server-zu-Server-Kontos und wählen Sie Neue geheimen Daten erstellen aus. Dies ist das Menü auf Kontoebene, nicht das Zeilenmenü eines Client-Geheimnisses.
-
Mit einem aktiven Geheimnis authentifizieren. Geben im Dialogfeld Neue geheimen Schlüssel erstellen den Wert eines aktiven Client-Geheimnisses für das Konto ein und wählen Sie dann Neue geheimen Schlüssel erstellen aus.
-
Speichern Sie die neuen geheimen Daten. Das Dialogfeld zeigt die neuen geheimen Daten einmal mit ihren
clientId,secretId,clientSecretundscopesan. Herunterladen oder kopieren, sicher speichern und das Dialogfeld schließen. Bestätigen Sie, dass Sie das Geheimnis nur schließen möchten, nachdem Sie die geheimen Daten sicher gespeichert haben. Nachdem das Dialogfeld geschlossen wurde, können die neuen geheimen Daten nicht mehr angezeigt werden.
-
Wechseln Sie zu den neuen geheimen Daten. Ersetzen Sie den
technicalAccount.clientSecretWert in den Anmeldedaten, die jede Anwendungsinstanz und Bereitstellung verwendet, durch den neuenclientSecret. Die anderen Werte der Anmeldeinformationen ändern sich nicht.Fordern Sie ein neues Zugriffstoken mit den neuen geheimen Daten an und überprüfen Sie die erforderlichen AEM-API-Aufrufe, bevor Sie fortfahren. Beide Geheimnisse bleiben während der Programmumstellung aktiv. Durch die Wiederverwendung eines zuvor ausgestellten Zugriffstokens wird der neue geheime Schlüssel nicht überprüft.
-
Wählen Sie das alte Geheimnis für die Sperrung aus. Nachdem alle Programme die neuen geheimen Daten verwendet haben, öffnen Sie das Zeilenmenü der alten geheimen Daten und wählen Sie Widerrufen aus. Überprüfen Sie die geheime ID, um sicherzustellen, dass Sie die alten geheimen Daten ausgewählt haben.
-
Widerruf bestätigen. Markieren Sie im Dialogfeld Client- widerrufen“ die zu widerrufende Client-Geheimnis-ID, geben Sie den Wert dieses Geheimnisses ein und wählen Sie Widerrufen aus. Wenn Sie den geheimen Wert nicht mehr haben, wenden Sie sich an den Adobe-Support. Sobald sich die Sperrung über IMS ausbreitet, können Programme dieses Geheimnis nicht mehr verwenden, um neue Token anzufordern. Vorhandene Zugriffstoken bleiben möglicherweise gültig.
-
Überprüfen Sie das Ergebnis. Das alte Geheimnis wird als Widerrufen“, während das neue Geheimnis Aktiv bleibt.
Nachdem der Widerruf wirksam wird, stellen Sie sicher, dass die alten geheimen Daten keine neuen Zugriffstoken ausgeben können und dass die neuen geheimen Daten Folgendes können. Durch Überprüfen des angezeigten Status allein wird die IMS-Verbreitung nicht überprüft.
-
Entfernen Sie die widerrufenen geheimen Daten, wenn sie nicht mehr benötigt werden. Um die widerrufenen geheimen Daten aus der Liste zu entfernen, öffnen Sie das Menü in der Zeile, wählen Sie Löschen und bestätigen Sie den Vorgang.
Widerrufen der Anmeldeinformationen credentials-revocation
Widerrufen deaktiviert ein ausgewähltes Geheimnis für neue Token-Anfragen. Dazu muss der Wert der geheimen Daten widerrufen werden. Es kann einige Zeit dauern, bis die Sperrung propagiert wird. Gehen Sie nicht davon aus, dass durch Widerrufen geheimer Daten bereits ausgestellte Zugriffstoken sofort ungültig werden.
Löschen bei widerrufenen geheimen Daten werden deren Metadaten, wie die geheime ID und der Sperrstatus, aus AEM Developer Console entfernt. Es führt keine separate IMS-Sperrung durch und ist nicht für aktive geheime Daten verfügbar.
Löschen eines technischen Kontos delete-a-technical-account
Durch das Löschen eines technischen Kontos werden das Konto und alle zugehörigen Client-Geheimnisse in IMS sofort widerrufen. Für Anmeldeinformationen unter dem Konto werden keine neuen Zugriffs-Token ausgestellt und Integrationen, die sie verwenden, funktionieren nicht mehr, sobald ihre aktuellen Token ablaufen. Um den Zugriff wiederherzustellen, müssen Sie ein neues technisches Konto erstellen, Ihre Anwendungen mit den zugehörigen Anmeldeinformationen aktualisieren und die erforderlichen Berechtigungen in AEM erneut zuweisen.
Das Löschen des Kontos kann nicht rückgängig gemacht werden. Bestätigen Sie erst, nachdem Sie geprüft haben, welche Programme vom Konto abhängen, und verwenden Sie sie nicht als Drehschritt „Individual-Secret“.
-
Öffnen in Integrationen“ das Aktionsmenü neben dem Namen des technischen Kontos und wählen Sie Löschen.
-
Überprüfen Sie das Dialogfeld Technisches Konto löschen und wählen Sie dann Löschen.
Migrieren einer JWT-basierten Integration migrate-a-jwt-based-integration
- Erstellen Sie in der AEM-Developer Console ein neues technisches OAuth-Server-zu-Server-Konto.
- Weisen Sie das neue technische Konto den erforderlichen Produktprofilen zu und konfigurieren Sie die zugehörigen AEM-Berechtigungen.
- Aktualisieren Sie die Server-seitige Anwendung, um Token mit
client_credentialsanzufordern, anstatt ein JWT zu signieren und auszutauschen. - Überprüfen Sie die Erstellung eines neuen Tokens und die erforderlichen API-Aufrufe mit dem neuen Konto.
- Nachdem alle Anwendungsinstanzen OAuth-Server-zu-Server verwendet haben, löschen Sie die alten JWT-Anmeldeinformationen und löschen Sie das alte technische Konto.
Informationen zu Vorgängen im Zusammenhang mit Zertifikaten und privaten Schlüsseln im alten Konto finden Sie im JWT Legacy-Handbuch. Entfernen Sie das alte Konto nicht, bevor die Ersatzintegration überprüft wurde.