서버측 API용 액세스 토큰 생성 generating-access-tokens-for-server-side-apis
일부 아키텍처는 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 서비스(IMS) client_credentials 부여를 사용하여 액세스 토큰에 대한 클라이언트 ID와 클라이언트 암호를 교환합니다. 서명된 JWT, 개인 키 또는 인증서가 필요하지 않습니다.
developer.adobe.com/console의 Adobe Developer Console과 다릅니다. AEM Developer Console에 설명된 기술 계정을 만들고 관리합니다.서버 간 흐름 the-server-to-server-flow
AEM 작성자의 AEM 사용자 또는 AEM 관리자 제품 프로필의 구성원인 IMS 조직 관리자 역할이 있는 사용자는 기술 계정을 만들 수 있습니다. 클라이언트 암호는 만들 때 만든 사용자에게만 표시됩니다. AEM as a Cloud Service 환경 관리자 역할이 있는 사용자는 클라이언트 암호를 포함하지 않는 계정의 세부 정보를 볼 수 있습니다.
서버 간 흐름에는 다음 단계가 포함됩니다.
- OAuth 서버 간 기술 계정을 만들고 생성 시 표시되는 클라이언트 암호를 포함하는 자격 증명을 저장합니다.
- AEM에 요청하는 서버에 자격 증명을 안전하게 저장합니다.
- 클라이언트 ID, 클라이언트 암호 및 범위를 사용하여 IMS에서 액세스 토큰을 요청합니다.
- 기술 계정의 제품 프로필 및 AEM 권한을 구성합니다.
- 액세스 토큰을 전달자 토큰으로 사용하여 AEM API를 호출합니다.
기술 계정 만들기 및 자격 증명 검색 fetch-the-aem-as-a-cloud-service-credentials
-
통합 열기 애플리케이션이 액세스하는 환경에 대한 AEM Developer Console을 연 다음 통합을 선택합니다. 새 기술 계정 만들기를 선택합니다.
새 기술 계정 만들기가 강조 표시된
-
기술 계정을 만듭니다. 대화 상자에서 OAuth 서버 간(S2S)을(를) 자격 증명 유형(으)로 선택한 다음 만들기를 선택합니다.
-
클라이언트 암호를 저장합니다. 클라이언트 암호 저장 대화 상자에
technicalAccount.clientSecret을(를) 포함한 자격 증명이 표시됩니다. 자격 증명 다운로드를 선택하여aem-s2s-credentials.json(으)로 저장하거나 클립보드에 복사를 선택합니다. 자격 증명을 비밀 관리자 또는 응용 프로그램의 다른 액세스 제어 위치에 저장합니다.
닫기를 선택합니다. 암호를 안전하게 저장한 후에만 암호에 액세스하지 않고 닫기 확인 대화 상자에서 닫기를 선택합니다. 대화 상자가 닫히면 암호를 다시 표시할 수 없습니다.
-
기술 계정을 검토하십시오. 새 OAuth 서버 간 계정이 Active 클라이언트 암호와 함께 나열됩니다. 목록에 표시되는 암호 ID는 암호를 식별합니다. 이 값은 비밀 값이 아니므로 토큰 요청에서
client_secret(으)로 사용할 수 없습니다.
나중에 암호의 세부 정보를 검토하려면 클라이언트 암호의 행 메뉴를 열고 보기를 선택하십시오. 자격 증명 대화 상자는 IMS 끝점, 범위, 클라이언트 ID, 기술 계정 이메일, 암호 ID 및 해지 상태를 표시합니다. 클라이언트 암호 값은 표시되지 않습니다.
비 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_typeclient_credentialsclient_idtechnicalAccount.clientId입니다.client_secrettechnicalAccount.clientSecret입니다.scopescopes의 값입니다.각 양식 값을 URL 인코딩합니다. URL 또는 쿼리 문자열이 아닌 요청 본문에 비밀을 보냅니다.
응답에는 access_token, token_type 및 expires_in이(가) 포함됩니다. access_token을(를) 사용하여 AEM을 호출합니다. expires_in 값은 토큰 수명(초)입니다. 고정된 만료 시간을 가정하지 않고 해당 값을 사용합니다.
액세스 토큰이 만료될 때까지 캐시하고 재사용한 다음 동일한 클라이언트 자격 증명으로 새 토큰을 요청합니다. 이 부여는 JWT 교환 또는 새로 고침 토큰이 필요하지 않습니다.
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
- Adobe Admin Console을 엽니다.
- 제품 및 서비스에서 AEM as a Cloud Service을(를) 선택하십시오.
- 통합을 위한 제품 프로필을 만들거나 적절한 기존 프로필을 선택합니다.
- 사용자 추가를 선택하고 해당 자격 증명에서
email을(를) 사용하여 기술 계정을 추가하십시오. - 제품 프로필 변경 사항이 전파될 수 있도록 합니다. 기술 계정에 대해 생성된 액세스 토큰을 사용하여 AEM에 대한 API 호출을 만듭니다. 제품 프로필은 기술 계정을 구성원으로 하여 AEM 그룹으로 동기화됩니다.
- 적절한 AEM 작성자 인스턴스에서 도구 > 보안 > 그룹을 엽니다. 제품 프로필 그룹을 찾아 기술 계정이 구성원 아래에 표시되는지 확인하십시오. 도구 > 보안 > 사용자에서도 그룹 구성원을 확인할 수 있습니다.
- 설정 > 보안 > 권한을 엽니다. 제품 프로필에 해당하는 그룹을 선택하고 API 호출에 필요한 권한을 구성합니다.
- 애플리케이션이 액세스하는 각 계층에 대해 필요한 API 호출을 확인합니다. 통합에 필요한 권한만 부여합니다.
IMS 및 AEM 사용자 및 그룹에 대한 자세한 내용은 IMS 지원을 참조하세요.
개발자 흐름 developer-flow
로컬 테스트의 경우 개발자는 OAuth 서버 간 기술 계정을 생성하지 않고 AEM Developer Console에서 직접 개발 액세스 토큰을 생성할 수 있습니다. 개발자가 액세스할 수 있는 AEM 환경을 호출하는 데 토큰을 사용할 수 있습니다. 무인 서버측 애플리케이션에 로컬 개발 토큰이 아닌 OAuth 서버 간 자격 증명을 사용합니다.
AEM Developer Console을 사용하는 데 필요한 권한은 개발자 지침을 참조하세요.
액세스 토큰 생성 generating-the-access-token
- AEM Developer Console에서 통합 > 로컬 토큰으로 이동합니다.
- 로컬 개발 토큰 가져오기를 선택하십시오.
액세스 토큰으로 AEM 애플리케이션 호출 call-the-aem-application-with-an-access-token
AEM API 호출에 설명된 대로 로컬 개발 액세스 토큰을 Authorization 헤더의 전달자 토큰으로 사용합니다.
로컬 컴퓨터에서 실행 중인 AEM 프로젝트의 경우 IMS 액세스 토큰이 필요하지 않습니다.
클라이언트 암호 회전 refresh-credentials
OAuth 서버 간 자격 증명에는 연간 인증서 갱신이 필요하지 않습니다. 비밀이 노출될 때마다 클라이언트 비밀을 주기적으로 회전합니다. 새 암호를 만들고 응용 프로그램을 해당 암호로 전환한 다음 이전 암호만 취소합니다.
비밀을 만들고 취소하려면 저장한 비밀 값이 필요합니다. AEM Developer Console은 입력한 비밀만 IMS로 인증하고 저장하지 않습니다.
-
새 암호를 만드세요. 통합에서 OAuth 서버 간 계정 이름 옆의 작업 메뉴를 열고 새 암호 만들기를 선택합니다. 클라이언트 암호의 행 메뉴가 아닌 계정 수준 메뉴입니다.
새 암호 만들기가 강조 표시된
-
활성 암호로 인증합니다. 새 암호 만들기 대화 상자에서 계정에 대한 활성 클라이언트 암호 값을 입력한 다음 새 암호 만들기를 선택합니다.
-
새 암호를 저장합니다. 대화 상자에 새 암호가
clientId,secretId,clientSecret및scopes(으)로 한 번 표시됩니다. 다운로드하거나 복사하고 안전하게 저장한 다음 대화 상자를 닫습니다. 암호를 안전하게 저장한 후에만 닫을 것인지 확인합니다. 대화 상자가 닫히면 새 암호를 다시 표시할 수 없습니다.
-
응용 프로그램을 새 암호로 전환합니다. 모든 응용 프로그램 인스턴스 및 배포에서 사용하는 자격 증명의
technicalAccount.clientSecret값을 새clientSecret(으)로 바꿉니다. 다른 자격 증명 값은 변경되지 않습니다.새 암호로 새 액세스 토큰을 요청하고 필수 AEM API 호출을 확인한 후 계속 진행하십시오. 두 비밀은 응용 프로그램 전환 중에 활성 상태로 유지됩니다. 이전에 발급한 액세스 토큰을 다시 사용해도 새 암호가 확인되지 않습니다.
-
취소할 이전 암호를 선택하십시오. 모든 응용 프로그램에서 새 암호를 사용한 후 이전 암호의 행 메뉴를 열고 취소를 선택합니다. 암호 ID를 확인하여 이전 암호를 선택했는지 확인하십시오.
-
해지 확인 클라이언트 암호 취소 대화 상자에서 취소할 클라이언트 암호 ID를 확인하고 해당 암호 값을 입력한 다음 취소를 선택합니다. 더 이상 비밀 값이 없다면 Adobe 지원 센터에 문의하십시오. 해지가 IMS를 통해 전파되면 애플리케이션은 해당 암호를 사용하여 새 토큰을 요청할 수 없습니다. 기존 액세스 토큰은 계속 유효할 수 있습니다.
-
결과를 확인합니다. 이전 암호는 해지됨(으)로 나열되지만 새 암호는 활성 상태로 유지됩니다.
해지 효력이 발생하면 이전 암호가 새 액세스 토큰을 발급할 수 없으며 새 암호가 발급될 수 있는지 확인합니다. 표시된 상태만 확인해도 IMS 전파가 확인되지 않습니다.
-
더 이상 필요하지 않은 경우 해지된 암호를 제거합니다. 목록에서 해지된 암호를 제거하려면 해당 행 메뉴를 열고 삭제를 선택하고 확인합니다.
자격 증명 해지 credentials-revocation
해지은(는) 선택한 암호를 새 토큰 요청에 사용할 수 없도록 설정합니다. 이 경우 취소할 비밀의 값이 필요합니다. 해지를 전파하는 데 시간이 걸릴 수 있습니다. 비밀을 취소하면 이미 발급된 액세스 토큰이 즉시 무효화된다고 가정하지 마십시오.
해지된 비밀에 대한 삭제은(는) AEM Developer Console에서 비밀 ID 및 해지 상태와 같은 해당 메타데이터를 제거합니다. 별도의 IMS 해지 작업을 수행하지 않으며 활성 비밀에 사용할 수 없습니다.
기술 계정 삭제 delete-a-technical-account
기술 계정을 삭제하면 IMS에서 계정 및 모든 클라이언트 암호가 즉시 취소됩니다. 계정의 자격 증명에 대해 새 액세스 토큰이 발급되지 않으며, 현재 토큰이 만료되면 이 액세스 토큰을 사용하는 통합이 작동하지 않습니다. 액세스를 복원하려면 새 기술 계정을 만들고 자격 증명으로 애플리케이션을 업데이트한 다음 AEM에서 필요한 권한을 다시 할당해야 합니다.
계정 삭제는 실행 취소할 수 없습니다. 계정에 종속된 응용 프로그램을 확인한 후에만 확인하고 개인 비밀 순환 단계로 사용하지 마십시오.
-
통합에서 기술 계정 이름 옆의 작업 메뉴를 열고 삭제를 선택합니다.
삭제 강조 표시된
-
기술 계정 삭제 대화 상자를 검토한 다음 삭제를 선택하십시오.
JWT 기반 통합 마이그레이션 migrate-a-jwt-based-integration
- AEM Developer Console에서 새 OAuth 서버 간 기술 계정을 만듭니다.
- 필요한 제품 프로필에 새 기술 계정을 할당하고 AEM 권한을 구성합니다.
- JWT에 서명하고 교환하는 대신
client_credentials을(를) 사용하여 토큰을 요청하도록 서버측 응용 프로그램을 업데이트합니다. - 새 계정을 사용하여 새 토큰 생성 및 필수 API 호출을 확인합니다.
- 모든 애플리케이션 인스턴스가 OAuth Server-to-Server를 사용한 후 이전 JWT 자격 증명을 폐기하고 이전 기술 계정을 삭제합니다.
이전 계정의 인증서 및 개인 키 작업에 대해서는 JWT 레거시 안내서를 참조하세요. 교체 통합이 확인되기 전에 이전 계정을 제거하지 마십시오.