콘텐츠로 이동

DRM 블랙리스트 관리 가이드

도브러너 멀티 DRM 서비스는 불법복제나 무단 콘텐츠 사용이 의심되는 사용자나 클라이언트 기기에 대해 OTT 플랫폼이 추가적인 DRM 라이선스 발급을 차단할 수 있는 DRM 블랙리스트 관리 기능을 제공합니다. 고객사는 HTTP API 또는 도브러너 콘솔 웹 UI의 블랙리스트 관리 섹션을 통해 차단 대상 사용자 또는 기기의 ID를 등록, 조회, 업데이트할 수 있습니다.

sequenceDiagram
    participant A as OTT 사용자
(클라이언트 기기) participant B as OTT 플랫폼 participant C as 도브러너 서버 A ->> C: DRM 라이선스 요청 (블랙리스트 미등록) C ->> C: 토큰 유효성 확인 C ->> A: DRM 라이선스 발급 A ->> A: 콘텐츠 재생 opt 블랙리스트를 통한 차단 B ->> C: 불법 사용자 또는 기기 ID 등록 C ->> C: 블랙리스트 DB에 해당 ID 저장 A ->> C: DRM 라이선스 요청 (블랙리스트 대상) C ->> C: 토큰 및 블랙리스트 확인 C -->> A: DRM 라이선스 발급 거부 A -->> A: 콘텐츠 재생 불가 end

도브러너 콘솔을 통한 블랙리스트 관리

Section titled “도브러너 콘솔을 통한 블랙리스트 관리”

도브러너 콘솔의 블랙리스트 관리 화면에서 차단 대상 사용자 ID 또는 기기 ID에 대한 등록, 조회, 상태 변경을 처리할 수 있습니다.

도브러너 콘솔 로그인 후 멀티 DRM > 블랙리스트 관리 > 사용자 블랙리스트 메뉴로 이동하면 다음과 같은 화면에서 사용자 ID에 대한 블랙리스트를 관리할 수 있습니다.

사용자 블랙리스트 관리

사용자 블랙리스트 화면에서 각종 검색 조건을 적용해 블랙리스트에 등록된 사용자 ID와 현재 상태를 조회할 수 있습니다.

사용자 블랙리스트 화면의 등록 버튼을 누르면 다음과 같은 사용자 ID 등록 화면으로 이동합니다.

사용자 ID 등록

여러 ID를 입력하는 경우 등록 버튼 상단의 + 버튼으로 항목을 추가할 수 있으며, 각 항목 우측의 휴지통 버튼을 클릭하면 항목을 줄일 수 있습니다.

블랙리스트에 등록된 각 사용자 ID마다 상태(차단 또는 차단 해제)를 변경할 수 있습니다. 목록에서 해당 항목 좌측의 체크 박스를 선택하면 현재 상태에 따라 상태 변경 버튼이 차단 또는 차단 해제로 전환되고, 클릭 시 선택된 대상의 차단 상태가 변경됩니다.

도브러너 콘솔 로그인 후 멀티 DRM > 블랙리스트 관리 > 기기 블랙리스트 메뉴로 이동하면 다음과 같은 화면에서 기기 ID에 대한 블랙리스트를 관리할 수 있습니다.

기기 블랙리스트 관리

기기 블랙리스트 화면에서 각종 검색 조건을 적용해 블랙리스트에 등록된 기기 ID, DRM 유형 및 현재 상태를 조회할 수 있습니다.

기기 블랙리스트 화면의 등록 버튼을 누르면 다음과 같은 기기 ID 등록 화면으로 이동합니다.

기기 ID 등록

등록할 항목마다 기기 ID에 해당하는 DRM 유형을 선택한 후 차단할 기기 ID 값을 입력합니다. 여러 ID를 입력하는 경우 등록 버튼 상단의 + 버튼으로 항목을 추가할 수 있으며, 각 항목 우측의 휴지통 버튼을 클릭하면 항목을 줄일 수 있습니다.

블랙리스트에 등록된 각 기기 ID마다 상태(차단 또는 차단 해제)를 변경할 수 있습니다. 목록에서 해당 항목 좌측의 체크 박스를 선택하면 현재 상태에 따라 상태 변경 버튼이 차단 또는 차단 해제로 전환되고, 클릭 시 선택된 대상의 차단 상태가 변경됩니다.

DRM 블랙리스트 기능은 콘솔 UI 외에 HTTP API를 통해서도 관리할 수 있습니다. 고객사 시스템과 자동화된 연동이 필요한 경우 아래 가이드를 참고해 API 방식 연동을 구현하시기 바랍니다.

DRM 블랙리스트 API는 정보의 안전한 전송을 위해 JSON Web Token(JWT)을 사용합니다.

온라인 JWT 도구 또는 서버 측 프로그래밍 언어를 사용하여 JWT 토큰을 생성하고 테스트할 수 있습니다.

Service API JWT Specification

토큰은 HMAC SHA256(HS256) 알고리듬과 함께 계정별 비밀 키를 사용하여 서명해야 합니다. 토큰 페이로드에 사용되는 서비스 API 키와 계정 seq 값은 헬프데스크 티켓을 통해 요청할 수 있습니다.

위 캡쳐 이미지에서 확인할 수 있듯이, 인코딩된 JWT 토큰의 형식은 다음과 같습니다.

base64UrlEncode(header) + "." + base64UrlEncode(payload) + "." + HS256 signature value

토큰은 아래 예시와 같은 JSON 페이로드 데이터를 사용합니다.

{
"sub" : "PallyConAPI",
"aud" : "INKA",
"iss" : "PallyCon",
"account_id" : "Your 도브러너 account ID",
"account_seq": "Your 도브러너 account SEQ",
"exp": 1583191411
}
필수 여부
subYPallyConAPI (고정 값)
audYINKA (고정 값)
issYPallyCon (고정 값)
account_idY도브러너 서비스 계정 ID
account_seqY도브러너 서비스 계정의 SEQ (헬프데스크 티켓을 통해 요청 가능)
expN토큰 만료 일자 (형식: date number)

SEQ는 도브러너 서비스 API에서 주요 데이터를 인덱싱하는데 사용되는 키값입니다.

블랙리스트 API는 공통적으로 다음과 같은 요청 데이터를 필요로합니다.

명칭유형설명
AuthorizationHeader / StringAPI 인증용 JWT 토큰. HTTP 헤더에 추가됨.
api_codeURL Param / String기능 별로 API를 구분하기 위한 코드. URL 파라미터로 추가됨.

DRM 블랙리스트 API를 호출하면 아래와 같은 HTTP 상태 코드 중 하나를 받게 됩니다.

HTTP 상태 코드설명
401JWT 토큰 사양이 잘못되었거나 사용자 정보를 찾을 수 없음
403호출된 API에 대한 권한이 없음
200HTTP 통신 성공

HTTP 상태 코드가 200(HTTP 통신 성공)인 경우 JSON 형식으로 아래 응답 데이터를 받게 됩니다.

유형
error_codeString0000: 성공 / 기타 숫자: 실패
error_messageString실패한 요청에 대한 오류 메시지 표시
dataJSONAPI 요청 결과 (성공 시)

이 API는 블랙리스트에 등록된 사용자 ID의 목록을 조회합니다.

파라미터유형필수 여부설명
user_idStringN조회할 사용자 ID 값
status_codeStringN상태 코드 (BL000: 차단 중, BL001: 차단 해제) 기본값: 전체
fromStringN조회 기간 시작일 (형식: YYYY-MM-DD) 등록일(GMT) 기준
toStringN조회 기간 종료일 (형식: YYYY-MM-DD) 등록일(GMT) 기준
time_zoneStringN검색에 사용될 시간대 설정 (형식: +/-hh:mm) 기본값: +00:00
page_unitIntN검색 결과 수 지정 (기본 값:25, 최대: 1000)
page_indexIntN검색 결과 페이지 번호 (결과 수가 page_unit 보다 클 경우)
  • 요청 예제
GET /api/v2/drm/blacklist/user/{siteId}?api_code=UA013001100&user_id=testUser&from=2024-04-15&to=2024-04-17&page_index=1&page_unit=10&site_id=DEMO&status_code=BL000&time_zone=%2B09%3A00 HTTP/1.1
Authorization: Bearer valid_token
Content-Type: application/json;charset=UTF-8
Host: service.pallycon.com
명칭유형설명
black_listJson Array조회된 사용자 목록
user_idString블랙리스트에 등록된 사용자 ID
status_codeString상태 코드 (BL000: 차단 중, BL001: 차단 해제)
reg_dateString등록된 날짜 (GMT 기준)
update_dateString변경된 날짜 (GMT 기준)
  • 응답 데이터 예제
{
"black_list" : [
{
"user_id" : "test",
"status_code" : "BL000",
"reg_date" : "20240214000000",
"update_date" : "20240214000000"
},
{
"user_id" : "test",
"status_code" : "BL000",
"reg_date" : "20240214000000",
"update_date" : "20240214000000"
},
],
total_count : 2,
error_code: "0000",
error_message: "Success."
}

이 API는 블랙리스트에 새로운 차단 대상 사용자 ID를 등록합니다.

{
"user_id_list" : [
"test", "test2"
]
}
파라미터유형필수 여부설명
user_id_listString ArrayY차단 대상 사용자 ID 목록
{
"error_code" : "0000",
"error_message" : "Success"
}

이 API는 블랙리스트에 등록된 사용자 ID의 차단/허용 여부를 변경합니다.

{
"user_id_list" : [
"test", "test2"
],
"status_code" : "BL000"
}
파라미터유형필수 여부설명
user_id_listString ArrayY상태 변경할 사용자 ID 목록
status_codeStringY변경할 상태 코드 (BL000: 차단 중, BL001: 차단 해제)
{
"error_code" : "0000",
"error_message" : "Success"
}

이 API는 블랙리스트에 등록된 기기 ID의 목록을 조회합니다.

파라미터유형필수 여부설명
device_idStringN조회할 기기 ID 값
status_codeStringN상태 코드 (BL000: 차단 중, BL001: 차단 해제) 기본값: 전체
fromStringN조회 기간 시작일 (형식: YYYY-MM-DD) 등록일(GMT) 기준
toStringN조회 기간 종료일 (형식: YYYY-MM-DD) 등록일(GMT) 기준
time_zoneStringN검색에 사용될 시간대 설정 (형식: +/-hh:mm) 기본값: +00:00
page_unitIntN검색 결과 수 지정 (기본 값:25, 최대: 1000)
page_indexIntN검색 결과 페이지 번호 (결과 수가 page_unit 보다 클 경우)
  • 요청 예제
GET /api/v2/drm/blacklist/device/{siteId}?api_code=UA013002100&device_id=device1&from=2024-04-15&to=2024-04-17&page_index=1&page_unit=10&site_id=DEMO&status_code=BL000&time_zone=%2B09%3A00&dr HTTP/1.1
Authorization: Bearer valid_token
Content-Type: application/json;charset=UTF-8
Host: service.pallycon.com
명칭유형설명
black_listJson Array조회된 기기 목록
device_idString블랙리스트에 등록된 기기 ID
drm_typeString해당 기기의 DRM 유형 (widevine / playready / fairplay / ncg)
status_codeString상태 코드 (BL000: 차단 중, BL001: 차단 해제)
reg_dateString등록된 날짜 (GMT 기준)
update_dateString변경된 날짜 (GMT 기준)
  • 응답 데이터 예제
{
"black_list" : [
{
"device_id" : "59fe7cf3e07c42e8a5de64fefb1356bd",
"drm_type" : "widevine",
"status_code" : "BL000",
"reg_date" : "20240214000000",
"update_date" : "20240214000000"
},
{
"device_id" : "59fe7cf3e07c42e8a5de64fefb1356bd",
"drm_type" : "widevine"
"status_code" : "BL000",
"reg_date" : "20240214000000",
"update_date" : "20240214000000"
},
],
total_count : 2,
error_code: "0000",
error_message: "Success."
}

이 API는 블랙리스트에 새로운 차단 대상 기기 ID를 등록합니다.

{
"device_id_list": [
{
"device_id": "59fe7cf3e07c42e8a5de64fefb1356bd",
"drm_type": "widevine"
},
{
"device_id": "59fe7cf3e07c42e8a5de6",
"drm_type": "playready"
}
]
}
파라미터유형필수 여부설명
device_idStringY등록할 기기 ID
drm_typeStringY등록할 기기의 DRM 유형 (playready / widevine / fairplay / ncg)
{
"error_code" : "0000",
"error_message" : "Success"
}

이 API는 블랙리스트에 등록된 기기 ID의 차단/허용 여부를 변경합니다.

{
"device_id_list": [
{
"device_id": "59fe7cf3e07c42e8a5de64fefb1356bd",
"drm_type": "widevine"
},
{
"device_id": "59fe7cf3e07c42e8a5de6",
"drm_type": "playready"
}
],
"status_code": "BL000"
}
파라미터유형필수 여부설명
device_id_listJson ArrayY상태 변경할 기기 ID 목록
device_idStringY상태 변경할 기기의 ID
drm_typeStringY상태 변경할 기기의 DRM 유형 (playready / widevine / fairplay / ncg)
status_codeStringY변경할 상태 코드 (BL000: 차단 중, BL001: 차단 해제)
{
"error_code" : "0000",
"error_message" : "Success"
}
에러 코드에러 메시지
A9048Fail to Insert User IDs In Black List.
A9049Request Spec About Black List API Is Invalid.
A9050User ID Already Exists In Black List.
A9051Fail to Get User IDs From Black List.
A9052Fail to Delete User IDs In Black List.
A9053Fail to Insert Device IDs In Black List.
A9054Device ID Already Exists In Black List.
A9055Fail to Get Device IDs From Black List.
A9056Fail to Delete Device IDs In Black List.