為伺服器端API產生存取權杖 generating-access-tokens-for-server-side-apis

NOTE
AEM Developer Console中的OAuth伺服器對伺服器憑證自2026年11月4日起提供。
IMPORTANT
使用OAuth伺服器對伺服器憑證進行伺服器端整合。 服務帳戶(JWT)憑證已遭取代,傾向於OAuth伺服器對伺服器。 如需現有JWT型整合,請參閱產生伺服器端API的存取權杖 — JWT (舊版)。

有些架構仰賴從託管於Adobe Experience Manager基礎結構以外之伺服器上的應用程式呼叫AEM (AEM) as a Cloud Service。 例如,行動應用程式會呼叫伺服器,然後向AEM as a Cloud Service發出API請求。

使用AEM as a Cloud Service Developer Console建立OAuth伺服器對伺服器技術帳戶。 您的應用程式會使用Adobe Identity Management Services (IMS) client_credentials授權,交換其使用者端ID和使用者端密碼以取得存取權杖。 不需要已簽署的JWT、私密金鑰或憑證。

NOTE
AEM Developer Console會管理您AEM環境的存取權。 它與developer.adobe.com/console的​Adobe Developer Console不同。 建立並管理AEM Developer Console中說明的技術帳戶。

伺服器對伺服器流量 the-server-to-server-flow

如果使用者擁有IMS組織管理員角色,且也是AEM Author上的​ AEM使用者 ​或​ AEM管理員 ​產品設定檔的成員,則可建立技術帳戶。 使用者端密碼在建立時只會顯示給建立該密碼的使用者。 具有AEM as a Cloud Service環境管理員角色的使用者可以檢視帳戶的詳細資料,其中不包含使用者端密碼。

伺服器對伺服器流程涉及以下步驟:

  1. 建立OAuth伺服器對伺服器技術帳戶並儲存其認證,包括建立時顯示的使用者端密碼。
  2. 請將憑證安全地儲存在向AEM提出要求的伺服器上。
  3. 使用使用者端ID、使用者端密碼和範圍向IMS要求存取權杖。
  4. 設定技術帳戶的產品設定檔和AEM許可權。
  5. 以存取權杖作為持有人權杖呼叫AEM API。

建立技術帳戶並擷取其認證 fetch-the-aem-as-a-cloud-service-credentials

IMPORTANT
AEM Developer Console在建立時,只會顯示一次OAuth伺服器對伺服器使用者端密碼。 AEM Developer Console不會儲存機密值。 它只會保留秘密ID及其狀態。 IMS會將秘密儲存為單向雜湊。 顯示機密時,請妥善儲存。 如果您遺失密碼,請使用其他使用中密碼建立新密碼,或建立新的技術帳戶。
  1. 開啟整合。 針對您的應用程式存取的環境開啟AEM Developer Console,然後選取「整合」。 選取​建立新的技術帳戶。

    與建立新的技術帳戶的整合頁面強調顯示

  2. 建立技術帳戶。 在對話方塊中,選取​ OAuth伺服器對伺服器(S2S) ​做為​認證型別,然後選取​建立。

    已選取OAuth伺服器對伺服器,建立新的技術帳戶對話方塊

  3. 儲存使用者端密碼。 儲存使用者端密碼​對話方塊會顯示認證,包括technicalAccount.clientSecret。 選取「下載認證」以將認證儲存為aem-s2s-credentials.json,或選取「複製到剪貼簿」。 將認證儲存在機密管理員或應用程式的其他存取控制位置。

    儲存使用者端密碼對話方塊並隱藏使用者端密碼值,並反白顯示下載認證並複製到剪貼簿

    選取「「關閉」」。 在​ 關閉中,若沒有進一步存取您的密碼 ​確認對話方塊,請選取​關閉,但必須先安全地儲存密碼。 對話方塊關閉後,密碼無法再顯示。

    關閉,無法再存取您的秘密確認對話方塊,並反白顯示關閉

  4. 檢閱技術帳戶。 列出新的OAuth伺服器對伺服器帳戶及其​ Active ​使用者端密碼。 清單中顯示的密碼ID可識別密碼。 這不是機密值,而且無法在權杖要求中當作client_secret使用。

    新的OAuth伺服器對伺服器帳戶,有一個使用中使用者端密碼,其動作功能表已開啟

若要稍後檢閱密碼的詳細資料,請開啟使用者端密碼的列功能表,然後選取​檢視。 憑證對話方塊會顯示IMS端點、範圍、使用者端ID、技術帳戶電子郵件、密碼ID和撤銷狀態。 它不會顯示使用者端密碼值。

認證對話方塊沒有使用者端密碼值

NOTE
客戶最多可建立20個技術帳戶。 已刪除的帳戶計入此限制。
IMPORTANT
身為AEM Author上​ AEM使用者 ​或​ AEM管理員 ​產品設定檔成員的IMS組織管理員必須建立技術帳戶。 由於使用者端密碼只會顯示一次,因此建立帳戶的使用者必須負責透過安全通道將認證傳遞給應用程式擁有者。

在非AEM伺服器上安裝AEM服務認證 install-the-aem-service-credentials-on-a-non-aem-server

讓認證僅供呼叫AEM的伺服器端應用程式使用。 使用秘密管理員或其他存取控制的儲存機制。

請勿在瀏覽器端程式碼、行動應用程式、原始檔控制或記錄檔中放入使用者端密碼。 也將存取權杖視為秘密。

請求OAuth存取權杖 request-an-oauth-access-token

傳送HTTPS POST要求給https://<imsEndpoint>/ims/token/v3。 您的認證JSON中的imsEndpoint是IMS主機名稱。 例如,ims-na1.adobelogin.com使用https://ims-na1.adobelogin.com/ims/token/v3。 使用認證中提供的主機名稱,包括使用階段認證時的階段主機名稱。

使用Content-Type: application/x-www-form-urlencoded並在要求內文中包含這些表單欄位:

參數
值
grant_type
client_credentials
client_id
來自您認證的technicalAccount.clientId。
client_secret
建立密碼時您儲存的technicalAccount.clientSecret。
scope
scopes中的值,以逗號聯結。

對每個表單值進行網址編碼。 在要求內文中傳送秘密,而不是在URL或查詢字串中傳送。

回應包括access_token、token_type和expires_in。 使用access_token呼叫AEM。 expires_in值是權杖存留期(以秒為單位)。 請使用該值,而不是假設固定的到期時間。

快取並重複使用存取權杖,直到接近到期日為止,然後使用相同的使用者端憑證請求新的權杖。 此授權不需要JWT交換或重新整理權杖。

NOTE
針對您呼叫的AEM環境使用認證。 有效的IMS存取權杖不會授予其他AEM許可權。 如下所述設定技術帳戶的許可權。

Node.js驗證範例 nodejs-authentication-example

如需最小的OAuth伺服器對伺服器實作,請參閱AEM-CS API使用者端程式庫範例。 它使用內建的Node.js API並需要Node.js 18或更新版本,沒有其他相依性。

此範例需要integration物件內的認證。 從AEM Developer Console下載的aem-s2s-credentials.json檔案包含不含此包裝函式的認證。 在將其用於範例(例如jq)之前,請先包裝其內容:

jq '{integration: .}' aem-s2s-credentials.json > downloaded_integration.json

或者,編輯檔案,使其完整內容成為最上層integration欄位的值。 從範例存放庫結帳,執行:

node oauth-s2s-cli.js downloaded_integration.json

若為程式化使用,OAuth協助程式會接受包裝物件為requestAccessToken(credentials)。 它使用integration內的IMS主機名稱、使用者端ID、使用者端密碼和範圍。

將認證檔案設為私人。 CLI會列印存取權杖。 請勿將其輸出傳送至共用記錄檔或予以發佈。 範例的README也說明如何在AEM API請求中使用權杖。

呼叫AEM API calling-the-aem-api

使用值Bearer <access_token>,將存取權杖包含在要求AEM as a Cloud Service環境的Authorization標頭中。

curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
  "https://author-p<program-id>-e<environment-id>.adobeaemcloud.com/content/dam.json"

使用您的應用程式存取之環境與階層的主機名稱。 僅呼叫技術帳戶有權存取的資源。

在AEM中為技術帳戶使用者設定適當的許可權 set-the-appropriate-permissions-for-the-technical-account-user-in-aem

  1. 開啟Adobe Admin Console。
  2. 在​ 產品和服務 ​下選取​AEM as a Cloud Service。
  3. 為整合建立產品設定檔,或選取適當的現有設定檔。
  4. 選取​新增使用者,並使用其認證中的email新增技術帳戶。
  5. 留出時間讓產品設定檔變更傳播。 使用為技術帳戶產生的存取權杖向AEM進行API呼叫。 產品設定檔會同步為AEM群組,技術帳戶會同步為成員。
  6. 在適當的AEM作者執行個體上,開啟​工具 > 安全性 > 群組。 尋找產品設定檔群組,並確認技術帳戶出現在​ 成員 ​下方。 您也可以在​工具 > 安全性 > 使用者​下檢查其群組成員資格。
  7. 開啟​設定 > 安全性 > 許可權。 選取與產品設定檔對應的群組,並設定API呼叫所需的許可權。
  8. 針對應用程式存取的每個層驗證所需的API呼叫。 僅授予整合所需的許可權。
NOTE
以OAuth伺服器對伺服器帳戶取代JWT技術帳戶時,請將新帳戶指派給所需的產品設定檔,並驗證其AEM許可權。 舊技術帳戶的許可權不會自動轉移到新帳戶。

如需IMS和AEM使用者和群組的詳細資訊,請參閱IMS支援。

開發人員流程 developer-flow

對於本機測試,開發人員可以直接在AEM Developer Console中產生開發存取權杖,無需建立OAuth伺服器對伺服器技術帳戶。 代號可用來呼叫開發人員可存取的AEM環境。 針對自動伺服器端應用程式,請使用OAuth伺服器對伺服器憑證,而非本機開發權杖。

如需使用AEM Developer Console所需的許可權,請參閱開發人員指南。

NOTE
本機開發存取權杖的有效期最長為24小時。 到期後,使用相同方法產生另一個權杖。

產生存取權杖 generating-the-access-token

  1. 在AEM Developer Console中,移至​整合 > 本機權杖。
  2. 選取​取得本機開發權杖。

使用存取權杖呼叫AEM應用程式 call-the-aem-application-with-an-access-token

如呼叫AEM API中所述,使用本機開發存取權杖作為Authorization標頭中的持有人權杖。

對於在本機電腦上執行的AEM專案,不需要IMS存取權杖。

輪換使用者端密碼 refresh-credentials

OAuth伺服器對伺服器憑證不需要每年更新憑證。 定期輪換使用者端密碼,並在密碼公開時進行輪換。 建立新密碼,將您的應用程式切換到該密碼,然後才撤銷舊密碼。

建立和撤銷密碼需要您儲存的密碼值。 AEM Developer Console僅使用輸入的密碼透過IMS驗證請求,不會儲存該請求。

IMPORTANT
IMS至少需要一個使用中密碼。 在撤銷最後一個使用中密碼之前,請先建立並驗證新密碼。 若要完全停止使用技術帳戶,請改為刪除帳戶。
  1. 建立新密碼。 在​ 整合 ​中,開啟OAuth伺服器對伺服器帳戶名稱旁的動作功能表,並選取​建立新密碼。 這是帳戶層級功能表,不是使用者端密碼的列功能表。

    OAuth伺服器對伺服器帳戶動作功能表,醒目提示建立新密碼

  2. 使用使用使用中的密碼進行驗證。 在​ 建立新密碼 ​對話方塊中,輸入帳戶的使用中使用者端密碼值,然後選取​建立新密碼。

    使用使用中使用者端密碼欄位及建立新密碼按鈕反白顯示的建立新密碼對話方塊

  3. 儲存新密碼。 對話方塊顯示新密碼一次,包含其clientId、secretId、clientSecret和scopes。 下載或複製、安全地儲存,並關閉對話方塊。 確認您只想在安全地儲存機密之後才關閉它。 對話方塊關閉後,新密碼無法再顯示。

    已隱藏使用者端密碼值的新密碼對話方塊,並反白顯示下載認證和複製到剪貼簿

  4. 將應用程式切換到新密碼。 以新的clientSecret取代每個應用程式執行個體和部署所使用的認證中的technicalAccount.clientSecret值。 其他認證值不會變更。

    使用新密碼請求新的存取權杖並驗證所需的AEM API呼叫,然後再繼續。 應用程式切換期間,這兩個秘密都會保持作用中。 重複使用先前核發的存取權杖無法驗證新密碼。

  5. 選取要撤銷的舊密碼。 在所有應用程式使用新密碼之後,請開啟舊密碼的列功能表,然後選取​撤銷。 檢查密碼ID以確定您已選取舊密碼。

    舊使用者端密碼的動作功能表(當兩個密碼都使用中時,反白顯示撤銷)

  6. 確認撤銷。 在​ 撤銷使用者端密碼 ​對話方塊中,檢查要撤銷的使用者端密碼識別碼,輸入該密碼的值,然後選取​撤銷。 如果您不再擁有機密值,請聯絡Adobe支援。 一旦撤銷透過IMS傳播,應用程式就無法使用該密碼來請求新權杖。 現有的存取權杖可能維持有效。

    使用使用者端密碼欄位和撤銷按鈕反白顯示撤銷使用者端密碼對話方塊

  7. 驗證結果。 舊密碼列為​已撤銷,而新密碼仍為​使用中。

    使用者端密碼清單將舊密碼顯示為「已撤銷」,新密碼顯示為「使用中」,同時反白顯示已撤銷密碼的「刪除」選項

    撤銷生效後,請確認舊密碼無法核發新的存取權杖,且新密碼可以核發。 僅檢查顯示的狀態不會驗證IMS傳播。

  8. 如果不再需要,請移除撤銷的密碼。 若要從清單中移除撤銷的密碼,請開啟其列功能表,選取[刪除],然後確認。​

認證撤銷 credentials-revocation

撤銷​會停用新Token要求的選取密碼。 它需要撤銷密碼的值。 撤銷可能需要一些時間才能傳播。 請勿假設撤銷機密會立即讓已核發的存取權杖失效。

針對已撤銷密碼的​ 刪除 ​會從AEM Developer Console移除其中繼資料,例如密碼識別碼和撤銷狀態。 它不會執行單獨的IMS撤銷,且不適用於作用中密碼。

刪除技術帳戶 delete-a-technical-account

刪除技術帳戶會立即在IMS中撤銷該帳戶及其所有使用者端密碼。 不會為帳戶下的任何認證核發新的存取權杖,而使用它的整合功能在其目前的權杖過期後即會停止運作。 若要還原存取權,您必須建立新的技術帳戶、使用憑證更新您的應用程式,並再次在AEM中指派所需許可權。

無法復原帳戶刪除。 只有在檢查哪些應用程式相依於帳戶後才能確認,且請勿將其用作個人機密輪換步驟。

  1. 在​ 整合 ​中,開啟技術帳戶名稱旁的動作功能表,並選取​刪除。

    OAuth伺服器對伺服器帳戶動作功能表的刪除反白顯示

  2. 檢閱​ 刪除技術帳戶 ​對話方塊,然後選取​刪除。

    刪除技術帳戶確認對話方塊

移轉JWT型整合 migrate-a-jwt-based-integration

  1. 在AEM Developer Console中建立新的OAuth伺服器對伺服器技術帳戶。
  2. 將新的技術帳戶指派給所需的產品設定檔,並設定其AEM許可權。
  3. 更新伺服器端應用程式以使用client_credentials來要求權杖,而不是簽署和交換JWT。
  4. 使用新帳戶驗證新Token的產生和必要的API呼叫。
  5. 在所有應用程式執行個體使用OAuth伺服器對伺服器後,請淘汰舊的JWT憑證並刪除舊的技術帳戶。

有關舊帳戶上的憑證和私密金鑰作業,請參閱JWT舊版指南。 在驗證取代整合之前,請勿移除舊帳戶。

recommendation-more-help
experience-manager-cloud-service-help-main-toc