DRM API 개발
고객사의 직원들이 카카오 i 서비스를 통해 파일을 주고받는 과정에서 각 직원의 DRM(Digital Rights Management) 권한 확인 및 해제 요청이 필요합니다. 이를 수행하기 위해 Adapter Agent API의 DRM Capability를 구현해야 합니다.
주의표DRM Capability
Agent Capability 구현 시, SSO Capability 구현 및 계정 연결 제공자 정보 등록이 필수로 선행되어야 합니다.
분류 | Capability | API 명 | 설명 |
---|---|---|---|
Adapter Agent API | DRM Capability | authenticate | 파일 타입 확인 및 DRM 파일인 경우, 사용자의 접근 권한 확인 |
decrypt | 파일 타입 확인 및 DRM 파일인 경우, 사용자의 접근 권한 확인 및 DRM 해제 요청 | ||
Adapter API | - | uploadResult | DRM 해제 결과 전달 |
uploadDecrypted | DRM 해제 파일 전달 |
authenticate 구현
카카오 i 서비스는 authenticate API를 통해 Adapter Agent 서버에 사용자의 DRM 파일 접근 권한 확인을 요청합니다. 권한 확인은 카카오 i 서비스에서 카카오 i 계정으로부터 발급받은 사용자의 서비스 토큰을 통해 user_principal
을 얻고, 이를 고객사의 Adapter Agent 서버에 요청하는 방식입니다.
Adapter 서버가 Adapter Agent 서버로 요청할 때 Kep-AgentSession
값을 두어, Adapter Agent 서버로 들어온 요청을 구분할 세션 키를 생성 및 관리합니다. 이 키는 해당 사용자의 DRM 권한 확인을 위해 필요한 user_principal
에 대한 매핑을 합니다. 이를 통해 카카오 i 서비스에서 Adapter 서버에 파일의 DRM 권한 확인을 위한 API 호출횟수를 줄일 수 있습니다. 이 과정에서 실제 파일 내용은 확인할 수 없고 각 서비스가 전달한 파일 ID를 통해 고객사의 Adapter Agent 서버 내, 해당 파일의 유/무를 판단합니다.
고객사의 Adapter Agent 서버 내, 파일 존재 유무와 타입에 따라 발생할 수 있는 경우는 다음과 같습니다.
표Adapter Agent 서버 내, 파일 존재 유무 및 타입에 따른 경우구분 | 설명 |
---|---|
서버 내 파일이 존재하는 경우 | 확인하려는 파일의 ID와 고객사의 Adapter Agent 서버의 파일 ID가 일치하는 경우 - 파일 타입에 따른 경우 발생 |
DRM 파일인 경우- 해당 사용자의 DRM 파일 접근 권한에 따른 응답 전달 |
|
DRM 파일이 아닌 경우- DRM 해제 요청을 할 필요가 없으므로 API 요청 실패 응답 전달 |
|
서버 내 파일이 존재하지 않는 경우 | 확인하려는 파일의 ID와 고객사의 Adapter Agent 서버의 파일 ID가 일치하지 않는 경우 - 성공 응답을 전달하여 카카오 i 서비스가 decrypt API를 통해 DRM 해제 요청하도록 유도 |
안내
카카오 i 서비스 시스템에서 authenticate API를 호출하는 시점은 다음과 같습니다.
- 카카오 i 서비스에서 사용자가 DRM 파일 확인을 수행하려는 시점
API 작업 흐름
카카오 i 서비스 시스템에서 authenticate API를 호출하는 작업 흐름은 다음과 같습니다.
그림접근 권한 확인 작업 흐름
-
카카오 i 서비스 서버가 카카오 i 계정 서비스 서버를 통해 발급받은 유저의 토큰과 파일 ID를 포함한 authenticate API 요청을 Adapter 서버로 전송합니다.
-
Adapter 서버가 카카오 i 계정 서버에 전달받은 서비스 토큰을 전달하여 토큰의 정합성 체크 후, 해당 유저의
user_principal
을 얻습니다. -
Adapter 서버가
user_principal
과 파일 ID를 담아 Adapter Agent 서버에 구현된 authenticate API를 호출합니다. -
Adapter Agent 서버는 파일 ID와
user_principal
을 통해 해당하는 응답 결과를 반환합니다.
Adapter Agent 서버 동작 예제
authenticate API 요청을 받았을 때 Adapter Agent 서버의 동작 예제는 다음과 같습니다.
-
Adapter Agent 서버로 전달된 파일 ID를 통해 해당 파일의 유/무를 판별합니다.
-
DRM_SESSION_ID
와user_principal
을 매핑 및 저장합니다. -
해당 파일이 DRM 파일인 경우,
user_principal
을 통해 DRM 해제 권한 체크를 합니다. -
인증 결과를 응답 포맷에 맞춰 반환합니다.
decrypt 구현
카카오 i 서비스는 Adapter 서버를 통해 고객사의 Adapter Agent 서버에 파일에 대한 DRM 해제를 요청합니다.
매번 파일을 전달하는 부하를 줄이기 위해, 전달받은 파일은 DRM_SESSION_ID
와 user_principal
을 매핑하여 저장해 관리합니다. 이를 통해, 사용자의 권한을 사전에 확인해서 authenticate API 호출 시 카카오 i 서비스에서 Adapter 서버에 파일의 DRM 권한 확인을 위한 API 호출을 줄일 수 있습니다. Adapter Agent 서버에서 해당 파일에 대한 권한을 authenticate API로 알 수 없는 경우(파일 타입이 N/A
), 경우에 따라서 user_principal
을 통해 권한 확인을 진행할 수도 있습니다. decrypt API에서는 user_principal
을 따로 전달하지 않습니다. 오직 DRM_SESSION_ID (DSID)
만 전달되고 이를 통해 user_principal
을 찾을 수 있어야합니다.
decrypt API의 응답은 DRM 해제 요청을 받았는지에 대한 응답을 전달할 뿐, 실제 결과를 답은 응답은 Adapter 서버에 API 요청을 통해 확인할 수 있습니다.
안내
카카오 i 서비스 시스템에서 decrypt API를 호출하는 시점은 다음과 같습니다.
- authenticate API 호출 후, DRM 파일의 DRM을 해제하는 시점
API 작업 흐름
카카오 i 서비스 시스템에서 decrypt API를 호출하는 작업 흐름은 다음과 같습니다.
그림DRM 해제 작업 흐름
-
카카오 i 서비스 서버가
DRM_SESSION_ID
, 파일 ID, 원본 파일을 포함한 decrypt API 요청을 Adapter 서버로 전송합니다. -
Adapter 서버가 Adapter Agent 서버에 구현된 decrypt API를 호출합니다.
-
Adapter Agent 서버는 요청에 대한 응답만 전달합니다.
Adapter Agent 서버 동작 예제
decrypt API 요청을 받았을 때 Adapter Agent 서버의 동작 예제는 다음과 같습니다.
-
Adapter Agent로 전달된 요청에 대한 응답여부를 반환합니다. 나머지 응답은 Adapter Agent 서버의 상황에 따라 비동기적으로 처리합니다.
-
내부적으로 Adapter Agent 서버로 전달된 파일에 대한 DRM 해제 작업을 진행합니다.
-
응답 결과를 Adapter서버에게 uploadResult API를 통해 전송합니다.
-
DRM 해제 파일을 보내줘야하는 경우에는 uploadResult API 호출 후, uploadDecrypted API를 통해 전송합니다.