為伺服器端API產生存取權杖(舊版) generating-access-tokens-for-server-side-apis-legacy
有些架構需仰賴從託管於AEM as a Cloud Service基礎架構以外之伺服器上的應用程式呼叫AEM。 例如,行動應用程式,它會呼叫伺服器,然後向AEM as a Cloud Service發出API請求。
伺服器對伺服器的流程如下所述,以及簡化的開發流程。 AEM as a Cloud Service Developer Console是用來產生驗證程式所需的權杖。
伺服器對伺服器流量 the-server-to-server-flow
具有IMS組織管理員角色,並且也是AEM Author上的AEM使用者或AEM管理員產品設定檔成員的使用者,可以產生AEM as a Cloud Service認證。 具有AEM as a Cloud Service環境管理員角色的使用者稍後可以擷取該認證,且應安裝在伺服器上,並且需要謹慎將其視為機密金鑰。 此JSON格式檔案包含與AEM as a Cloud Service API整合所需的所有資料。 資料可用來建立已簽署的JWT權杖,該權杖會與IMS交換以取得IMS存取權杖。 然後,可將此存取權杖用作持有者驗證權杖,以向AEM as a Cloud Service提出請求。 認證預設在一年後到期,但可視需要重新整理,請參閱重新整理認證。
伺服器對伺服器流程涉及以下步驟:
- 從Developer Console擷取AEM as a Cloud Service的認證
- 在呼叫AEM as a Cloud Service的非AEM伺服器上安裝AEM的認證
- 產生JWT權杖並使用Adobe的IMS API將該權杖交換為存取權杖
- 使用存取權杖作為持有者驗證權杖呼叫AEM API
- 在AEM環境中為技術帳戶使用者設定適當的許可權
擷取AEM as a Cloud Service認證 fetch-the-aem-as-a-cloud-service-credentials
有權存取AEM as a Cloud Service開發人員控制檯的使用者會看到指定環境的Developer Console中的整合功能索引標籤和兩個按鈕。 具有AEM as a Cloud Service環境管理員角色的使用者可以按一下 產生服務認證 按鈕,以產生並顯示服務認證json。 json包含非AEM伺服器所需的所有資訊,包括使用者端ID、使用者端密碼、私密金鑰、憑證,以及環境製作和發佈層級的設定,不論Pod選取範圍為何。
輸出類似以下內容:
{
"ok": true,
"integration": {
"imsEndpoint": "ims-na1.adobelogin.com",
"metascopes": "ent_aem_cloud_sdk,ent_cloudmgr_sdk",
"technicalAccount": {
"clientId": "cm-p123-e1234",
"clientSecret": "4AREDACTED17"
},
"email": "abcd@techacct.adobe.com",
"id": "ABCDAE10A495E8C@techacct.adobe.com",
"org": "1234@AdobeOrg",
"privateKey": "-----BEGIN RSA PRIVATE KEY-----\r\REDACTED\r\n==\r\n-----END RSA PRIVATE KEY-----\r\n",
"publicKey": "-----BEGIN CERTIFICATE-----\r\nREDACTED\r\n-----END CERTIFICATE-----\r\n"
},
"statusCode": 200
}
產生認證之後,稍後可以按相同位置的 取得服務認證 按鈕來擷取認證。
在非AEM伺服器上安裝AEM服務認證 install-the-aem-service-credentials-on-a-non-aem-server
呼叫AEM的非AEM應用程式應能存取AEM as a Cloud Service的認證,並將其視為秘密。
產生JWT權杖並將其交換為存取權杖 generate-a-jwt-token-and-exchange-it-for-an-access-token
使用認證在呼叫Adobe的IMS服務中建立JWT權杖以擷取存取權杖,該權杖的有效期間為24小時。
可使用為此目的而設計的程式碼範例來交換AEM CS服務認證以換取存取權杖。 範常式式碼可從Adobe的公用GitHub存放庫取得,其中包含您可複製並調整自己專案的程式碼範例。 請注意,此存放庫包含參考的範常式式碼,不會維護為生產就緒的程式庫相依性。
/*jshint node:true */
"use strict";
const fs = require('fs');
// Sample code adapted from Adobe's GitHub repository
const exchange = require("./your-local-aemcs-client"); // Copy and adapt the code from the GitHub repository
const jsonfile = "aemcs-service-credentials.json";
var config = JSON.parse(fs.readFileSync(jsonfile, 'utf8'));
exchange(config).then(accessToken => {
// output the access token in json form including when it will expire.
console.log(JSON.stringify(accessToken,null,2));
}).catch(e => {
console.log("Failed to exchange for access token ",e);
});
相同交換可以用任何能夠產生具有正確格式的已簽署JWT權杖並呼叫IMS權杖交換API的語言執行。
存取權杖會定義其到期時間,通常為24小時。 Git存放庫中有範常式式碼,可用來管理存取權杖並在其過期前重新整理。
呼叫AEM API calling-the-aem-api
對AEM as a Cloud Service環境發出適當的伺服器對伺服器API呼叫,包括標頭中的存取權杖。 所以對於「授權」標頭,請使用值"Bearer <access_token>"。 例如,使用curl:
curl -H "Authorization: Bearer <your_ims_access_token>" https://author-p123123-e23423423.adobeaemcloud.com/content/dam.json
在AEM中為技術帳戶使用者設定適當的許可權 set-the-appropriate-permissions-for-the-technical-account-user-in-aem
在AEM中建立技術帳戶使用者之後(在第一次具有對應存取權杖的請求之後發生),技術帳戶使用者必須在 AEM中獲得 的適當許可權。
依預設,在AEM Author服務中,技術帳戶使用者會新增至提供讀取許可權AEM的貢獻者使用者群組。
可使用一般方法,進一步布建此AEM技術帳戶使用者的許可權。
開發人員流程 developer-flow
開發人員應使用其非AEM應用程式的開發執行個體進行測試(在他們的筆記型電腦上執行或託管),該應用程式會向開發AEM as a Cloud Service開發環境發出請求。 不過,由於開發人員不一定具備IMS管理員角色許可權,Adobe無法假設他們可以產生一般伺服器對伺服器流程中說明的JWT持有者。 因此,Adobe為開發人員提供了一種直接產生存取權杖的機制,可用於對其有權存取的AEM as a Cloud Service環境的請求。
如需使用AEM as a Cloud Service開發人員主控台所需許可權的資訊,請參閱開發人員指引檔案。
開發人員可使用此代號,從非AEM測試應用程式呼叫AEM as a Cloud Service環境。 開發人員通常會在自己的筆記型電腦上,將此代號與非AEM應用程式搭配使用。 此外,AEM as a Cloud通常是非生產環境。
開發人員流程涉及以下步驟:
- 從Developer Console產生存取權杖
- 使用存取權杖呼叫AEM應用程式。
開發人員也可以對其本機電腦上執行的AEM專案進行API呼叫,如此便不需要存取權杖。
產生存取權杖 generating-the-access-token
若要產生存取權杖,請在Developer Console中按一下[取得本機開發權杖] 。
使用存取權杖呼叫AEM應用程式 call-the-aem-application-with-an-access-token
從非AEM應用程式對AEM as a Cloud Service環境發出適當的伺服器對伺服器API呼叫,包括標頭中的存取權杖。 所以對於「授權」標頭,請使用值"Bearer <access_token>"。
重新整理認證 refresh-credentials
根據預設,AEM as a Cloud Service上的認證一年後過期。 為確保服務的連續性,開發人員可以選擇重新整理憑證,將其可用性延長一年。 從Developer Console的 整合 索引標籤使用重新整理服務認證,如下所示。
按下按鈕後,會產生一組新的認證。 您可以使用新的認證更新您的秘密儲存空間,並驗證它們是否如預期般運作。
服務認證撤銷 service-credentials-revocation
如果認證必須撤銷,您必須使用下列步驟向客戶支援提交請求:
-
在使用者介面中停用Adobe Admin Console的技術帳戶使用者:
- 在Cloud Manager中,按一下環境旁的 … 按鈕。 此動作會開啟產品設定檔頁面
- 現在,按一下 AEM使用者 設定檔,以顯示使用者清單
- 按一下 API認證 標籤,然後尋找適當的技術帳戶使用者並將其刪除
-
請聯絡客戶支援,並要求刪除該特定環境的服務認證
-
最後,您可以再次產生認證,如本檔案所述。 同時也請確定建立的新技術帳戶使用者擁有適當的許可權。