원격 구성요소에 대한 보안

Oracle Content Management에서 타사 개발자는 사용자정의 구성요소를 Oracle Content Management 플랫폼으로 통합할 수 있지만 원격 서버에 저장됩니다.

각 원격 구성요소는 설정 및 렌더링 끝점이 Oracle Content Management에 등록되어야 합니다. 끝점 외에도 개발자는 등록된 구성요소에 고유한 보안 키를 제공해야 합니다.

Oracle Content Management는 등록된 구성요소의 끝점을 호출하여 사이트 페이지에 콘텐츠를 실현합니다. 해당 끝점은 공용 인터넷에 노출되므로 개발자는 등록된 원격 구성요소의 끝점이 Oracle Content Management에서 호출되는지 확인해야 합니다. 호출자의 진위를 확인하기 위해 서명한 토큰이 등록된 URL 끝점으로 전달됩니다. 등록 프로세스 중에 제공된 원격 구성요소의 보안 키를 사용하여 서명한 토큰에 포함된 디지털 서명을 확인하여 발신자가 인증됩니다.

토큰 형식은 다음과 같습니다.

{base64 encoded serialized JSON data}.{base64 encoded signature}

등록된 앱 끝점으로 전달된 샘플 토큰은 다음과 같습니다.

eyJpbnN0YW5jZWlkIjoiQTRGOTE3REY5OTZEN0Q3ODBCMjUzODZFOTFEMDA3ODJGMjVBRjY2Rjc3OTIiLCJzaWduZGF0ZSI6IjE0NDU2MzcwNTk5MTciLCJzaXRlZG9tYWluIjoic2VydmljZTEtdGVuYW50MS51cy5vcmFjbGUuY29tIiwicGVybWlzc2lvbnMiOiJTSVRFX09XTkVSIiwiZW50aXRsZW1lbnRzIjoiIn0=.5p3of7t11OwuysF3zpm+YgICSHH8C/BHczdbVZx2VH8=

토큰은 '.' 구분자로 분리된 두 개별 부분(데이터 및 서명)으로 구성됩니다.

일반적 지침상, 개발자는 구성요소의 등록된 끝점에 액세스를 부여하기 전에 항상 편집 또는 미리보기 모드에서 토큰을 인증해야 합니다. 또한 설정 끝점에서 발신자를 인증하는 동안 개발자는 항상 토큰의 permissions 필드에서 SITE_OWNER 값을 찾아야 합니다. 토큰의 permissions 필드는 편집 모드에서만 SITE_OWNER 값을 보여줍니다. 편집 세션 중에 생성된 토큰은 절대 페이지 모델에 지속되지 않으며 런타임 토큰으로 전환되어 permissions 필드에 NULL 값을 갖습니다.

데이터

인스턴스의 데이터 부분은 Base64 JSON 인코딩 문자열입니다. 다음은 JSON 문자열의 구조입니다.

{
  "instanceid": "BBDC7614F693B75110D811E6C0B77C935FAEC5112E5E",
  "permissions": "",
  "entitlements": "",
  "signdate": "1435426735293",
  "sitedomain": "service1-tenant4.localhost"
}
필드 이름 설명

instanceid

Oracle Content Management 테넌트에 대한 구성요소의 고유 식별자입니다.

signdate

서명 생성 날짜입니다.

sitedomain

Oracle Content Management 인스턴스의 도메인 이름입니다.

permissions

사이트 멤버의 권한 집합입니다. 편집 모드에서 "SITE_OWNER" 값을 갖고, 그렇지 않으면 값이 없습니다.

entitlements

사이트 소유자가 구매한 프리미엄 기능 목록입니다.

서명

원격 구성요소 인스턴스의 데이터 부분은 APP_SECRET_KEY에 의해 서명되기 전에 직렬화됩니다. 이 보안 키는 구성요소를 등록하는 동안 생성되어 개발자에게 표시되어야 합니다. 다음과 같이 보안 키로 구성요소 인스턴스의 데이터 부분(직렬화된 JSON 구조)의 해시를 생성하여 서명이 계산됩니다.

$signature = HMAC (serialized JSON structure, APP_SECRET_KEY)

서명 생성에 사용된 해시 알고리즘은 SHA256입니다. 다음과 같이 직렬화된 JSON 구조와 생성된 서명 구성요소가 연결되어 토큰이 형성됩니다.

$instance = {base64encoded serialized JSON structure}.{base64encoded $signature}