질문/이슈
토큰 프록시(Token Proxy)를 이용한 DRM 라이선스 연동은 어떤 식으로 이루어지며, 일반적인 토큰 방식 연동 대비 어떤 장점이 있나요?
간략한 설명
토큰 프록시 방식은 서비스 자체 백엔드 시스템에서 클라이언트 기기와 DRM 라이선스 서버 사이의 라이선스 요청/응답을 중계하는 방식을 의미합니다.
프록시를 거치지 않는 일반적인 토큰 방식 연동과 비교했을 때, 토큰 프록시 방식 연동은 아래와 같은 장점이 있습니다.
- 커스텀 라이선스 응답을 이용한 추가적인 DRM 라이선스 관리
- 프록시 서버는 기기 ID와 라이선스 유효기간 등의 부가 정보가 추가된 커스텀 형식의 라이선스 응답을 받을 수 있습니다.
- 서비스에서는 해당 정보를 이용해 '사용자 당 기기 대수 제한' 등의 DRM 외 부가적인 관리 기능을 구현할 수 있습니다. - 더 나은 보안 처리
- 클라이언트로부터의 라이선스 요청을 DRM 서버에 전달하기 전에 사용자의 콘텐츠 이용 권한을 확인할 수 있으며, DRM 라이선스 서버 통신 구간을 Client에 노출하지 않게 됩니다.
- 이를 통해 일반적인 토큰 방식 라이선스 연동보다 더 높은 보안을 적용할 수 있습니다.
적용 방법
토큰 프록시는 다음과 같은 방법으로 적용 가능합니다. 라이선스 토큰에 대한 이해와 구현이 필요하므로, 토큰 프록시 방식을 적용하기 전에 먼저 토큰 방식 라이선스 연동을 적용해 보는 것을 권장합니다.
1단계: 백엔드 서버에 프록시 구현
우선 콘텐츠 서비스의 백엔드에 다음과 같은 기능이 구현된 토큰 프록시 서버를 구축합니다.
DoveRunner에서는 토큰 프록시 구축에 참고 할 수 있는 샘플 프로젝트를 제공하고 있습니다.
- 라이선스 요청의 커스텀 데이터 값에 대한 파싱 처리
- 클라이언트의 DRM 라이선스 요청은 Body 부분의 챌린지 데이터와 Header의 커스텀 데이터(사용자 인증용 데이터)로 구성됩니다.
- 커스텀 데이터의 최소한의 필수 정보는 UserID와 ContentID이며, 이를 포함한 헤더 이름과 값은이며 임의로 정의하여 사용할 수 있습니다. - 사용자 권한 인증 처리
- 프록시에서는 파싱한 커스텀 데이터에 포함된 User ID와 Content ID 등의 정보를 이용해 해당 사용자의 콘텐츠 이용 권한을 확인합니다.
- 권한이 없는 사용자에 대해서는 클라이언트에 관련 에러를 응답합니다. - 라이선스 토큰 생성 및 DRM 서버에 전달
- 사용자 인증에 성공한 경우, 클라이언트로부터 전달된 DRM 챌린지 데이터(Body)에 라이선스 토큰 값을 커스텀 헤더로 추가해 DRM 서버에 전달합니다. (헤더 이름은 'pallycon-customdata-v2' 사용) - 라이선스 응답 수신 및 클라이언트에 전달
- DRM 서버로부터 라이선스 요청에 대한 응답을 수신하고 클라이언트에 해당 응답을 전달합니다.
- 토큰 데이터에 '커스텀 응답'을 설정한 경우, 이 과정에서 기기 ID 등의 커스텀 응답을 처리하고 클라이언트에는 라이선스 데이터만을 전달합니다.
2단계: 클라이언트 기기에 DRM 연동
- 토큰 프록시 서버의 URL을 DRM 라이선스 서버 URL로 지정
- DoveRunner 라이선스 서버의 URL 대신 직접 구축한 프록시 서버 URL을 클라이언트에 적용합니다. - 라이선스 요청 시 전달 할 커스텀 데이터 탑제
- 커스텀 헤더 혹은 Session, Cookie 등 다양한 방법으로 프록시에 전달 할 데이터를 활용 할 수 있습니다.
- DoveRunner의 Mobile SDK에는 프록시와의 통신에 활용 할 수 있도록 Cookie 지정 및 HTTPCallback 인터페이스를 지원합니다.