Kakao i Account::개발 프로세스::DRM API 개발

페이지 이동경로

DRM API 개발

고객사의 직원들이 카카오 i 서비스를 통해 파일을 주고받는 과정에서 각 직원의 DRM(Digital Rights Management) 권한 확인 및 해제 요청이 필요합니다. 이를 수행하기 위해 Adapter Agent API의 DRM Capability를 구현해야 합니다.

주의
Agent Capability 구현 시, SSO Capability 구현 및 계정 연결 제공자 정보 등록이 필수로 선행되어야 합니다.
DRM 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를 호출하는 작업 흐름은 다음과 같습니다.

접근 권한 확인 작업 흐름 그림접근 권한 확인 작업 흐름

  1. 카카오 i 서비스 서버가 카카오 i 계정 서비스 서버를 통해 발급받은 유저의 토큰과 파일 ID를 포함한 authenticate API 요청을 Adapter 서버로 전송합니다.

  2. Adapter 서버가 카카오 i 계정 서버에 전달받은 서비스 토큰을 전달하여 토큰의 정합성 체크 후, 해당 유저의 user_principal을 얻습니다.

  3. Adapter 서버가 user_principal과 파일 ID를 담아 Adapter Agent 서버에 구현된 authenticate API를 호출합니다.

  4. Adapter Agent 서버는 파일 ID와 user_principal을 통해 해당하는 응답 결과를 반환합니다.

Adapter Agent 서버 동작 예제

authenticate API 요청을 받았을 때 Adapter Agent 서버의 동작 예제는 다음과 같습니다.

  1. Adapter Agent 서버로 전달된 파일 ID를 통해 해당 파일의 유/무를 판별합니다.

  2. DRM_SESSION_IDuser_principal을 매핑 및 저장합니다.

  3. 해당 파일이 DRM 파일인 경우, user_principal을 통해 DRM 해제 권한 체크를 합니다.

  4. 인증 결과를 응답 포맷에 맞춰 반환합니다.

decrypt 구현

카카오 i 서비스는 Adapter 서버를 통해 고객사의 Adapter Agent 서버에 파일에 대한 DRM 해제를 요청합니다.

매번 파일을 전달하는 부하를 줄이기 위해, 전달받은 파일은 DRM_SESSION_IDuser_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 해제 작업 흐름 그림DRM 해제 작업 흐름

  1. 카카오 i 서비스 서버가 DRM_SESSION_ID, 파일 ID, 원본 파일을 포함한 decrypt API 요청을 Adapter 서버로 전송합니다.

  2. Adapter 서버가 Adapter Agent 서버에 구현된 decrypt API를 호출합니다.

  3. Adapter Agent 서버는 요청에 대한 응답만 전달합니다.

Adapter Agent 서버 동작 예제

decrypt API 요청을 받았을 때 Adapter Agent 서버의 동작 예제는 다음과 같습니다.

  1. Adapter Agent로 전달된 요청에 대한 응답여부를 반환합니다. 나머지 응답은 Adapter Agent 서버의 상황에 따라 비동기적으로 처리합니다.

  2. 내부적으로 Adapter Agent 서버로 전달된 파일에 대한 DRM 해제 작업을 진행합니다.

  3. 응답 결과를 Adapter서버에게 uploadResult API를 통해 전송합니다.

  4. DRM 해제 파일을 보내줘야하는 경우에는 uploadResult API 호출 후, uploadDecrypted API를 통해 전송합니다.

이 문서가 만족스러운 이유를 알려주세요.
이 문서에 아쉬운 점을 알려주세요.
평가해주셔서 감사합니다.

더 자세한 의견은 contact.dkt@kakaocorp.com 으로 제보해주세요.