PlaynPlay
PlaynPlay

접근 권한 서버 설계

CheckAccessRights 응답으로
재생·다운로드 허용을 판정합니다

라이선스를 발급할 때마다 Callback URL로 접근 권한 검사 요청이 옵니다. 고객사 서버가 돌려주는 결과 네 가지와 만료 일시가 그 학습자의 재생 여부를 정합니다. 요청 필드 읽는 법, 판정 순서, 운영 상황별 응답, 오픈 전 테스트 케이스를 차례로 정리했습니다.

최종 수정

접근 권한 검사를 표현한 PlaynPlay 일러스트
Request

요청 필드마다 판정에서 맡을 역할

요청은 콘솔에 등록한 Callback URL로 POST되고 본문은 JSON입니다. 필드 일곱 개를 아래처럼 나눠 쓰면 거절 사유를 한 번에 가릴 수 있습니다.

필드 담긴 값 판정에서 쓰는 법
type CheckAccessRights 같은 주소로 들어오는 재생·다운로드 보고와 처리 경로를 가릅니다.
appId App 아이디 서비스마다 App을 나눴다면 어느 서비스의 요청인지 판별합니다.
userId 사용자 아이디 회원 상태(정상, 환불, 휴면, 제재)를 조회하는 키입니다.
userData 재생을 실행할 때 넣은 객체(사용자·콘텐츠 식별용) 수강 신청 ID나 상품 ID를 넣어 두면 어떤 권한으로 연 요청인지 바로 찾습니다.
mediaUrl 미디어 URL 이 영상이 해당 수강 신청이나 상품에 들어 있는지 대조합니다.
deviceId 디바이스 아이디 계정에 묶인 기기 목록에 새 기기를 더해도 허용 수 안인지 가립니다.
offline true면 다운로드 콘텐츠, false면 그 외 다운로드를 막아 둔 과정에서 true가 오면 받지 않도록 답합니다.

이 요청에는 sessionId가 없습니다. 뒤이어 오는 재생 보고와 묶어 보려면 userId, mediaUrl, userData 조합을 공통 키로 쓰세요. 보고별 필드는 진도 데이터 설계에 정리돼 있습니다.

Response

응답 결과와 학습자 쪽 오류 이름

result에는 네 값 중 하나를 넣습니다. 재생 중 진행 보고에 쓰는 응답 하나도 마지막 행에 함께 적었습니다. 앱과 PC 커스텀 페이지의 오류 목록에 결과마다 이름이 대응하는 항목이 있으니 안내 문구를 짝지어 둡니다.

결과 문서상 의미 이름이 대응하는 오류 쓰는 경우
Ok 접근 권한 있음. 이때 expiresOn 값이 필요합니다. 없음(재생 진행) 수강 중, 구매 완료, 대여 기간 안
Expired 접근 권한 만료됨 Android AccessRightsExpiredException, iOS accessRightsExpired, PC AccessRightsExpired 수강·대여·구독 기간 종료
NoRights 접근 권한 없음 NoAccessRightsException, noAccessRights, NoAccessRights 미신청, 환불, 권한 회수, 휴면
DeviceLimitExceeded 디바이스 제한 초과 DeviceLimitExceededException, deviceLimitExceeded, DeviceLimitExceeded 고객사가 정한 계정당 기기 기준 초과
PlaybackLimitExceeded (진행 보고 응답) 재생 제한 초과(배수 제한, 재생 횟수 등) PlaybackLimitExceededException, playbackLimitExceeded, PlaybackLimitExceeded 재생 도중 한도를 넘긴 경우. 재생 제한 초과 오류로 처리됩니다.

Android의 다운로드 실패 사유 목록에도 만료, 권한 없음, 기기 초과에 해당하는 값이 들어 있습니다. 오류별 처리 담당은 오류 대응 가이드에서 이어집니다.

expiresOn

만료 일시 값을 정하는 규칙

Ok로 답할 때는 만료 일시가 필요합니다. 값 하나가 학습자 화면과 다운로드본 관리까지 이어지므로 계산 규칙을 미리 문서로 남기세요.

  • Format

    Unix epoch time 숫자

    문서는 형식을 Unix epoch time으로 정합니다. 초와 밀리초 중 어느 쪽으로 보낼지는 첫 연동 테스트에서 Newin과 맞춰 두면 만료 일시가 엉뚱한 연도로 잡히는 실수를 막을 수 있습니다.

  • Rule

    상품 규칙에서 바로 계산

    기간제 과정은 수강 종료 시각, 구독은 다음 결제 시점처럼 계약 조건에서 기계적으로 나오는 값을 넣습니다. 기간이 없는 상품에 넣을 값은 운영 정책으로 먼저 확정합니다.

  • Device

    기기에서 읽는 만료 일시

    Android·iOS SDK에는 기기 안 재생 정보 저장소(PlaybackInfoRepository)가 있어 미디어별 만료 일시, 마지막 재생 위치, 길이를 꺼내 쓸 수 있습니다. 다운로드함의 남은 기간 표시에 알맞습니다.

  • Offline

    오프라인 기한은 별도 값

    다운로드본이 오프라인에서 열리는 기간은 실행 시점의 DRM 설정 값이 따로 정합니다. 그 값을 남은 수강 기간 이하로 계산해야 두 날짜가 엇갈리지 않습니다. 설계 방법은 오프라인 학습 운영에 있습니다.

Decision Order

판정 순서 권장안

거절 사유가 겹칠 때 어떤 결과를 줄지 순서로 정해 두면 같은 학습자가 날마다 다른 오류를 보는 일이 없습니다.

  1. 요청 검증

    헤더의 Bearer 값이 콘솔에 등록한 Authorization 문자열과 같은지, appId가 자사 App인지 봅니다. 맞지 않는 요청에 돌려줄 결과도 네 값 중에서 정해 두고 경보를 남깁니다.

  2. 회원 상태

    userId로 회원을 찾습니다. 환불, 휴면, 이용 제재 상태라면 NoRights로 끝냅니다.

  3. 수강 범위와 기간

    userData의 수강 신청 ID와 mediaUrl로 영상 포함 여부를 확인합니다. 포함되지 않으면 NoRights, 기간이 지났으면 Expired입니다.

  4. 기기와 다운로드

    deviceId를 계정의 기기 목록과 맞춰 보고, 기준을 넘긴 기기라면 결과는 DeviceLimitExceeded입니다. 다운로드를 막은 과정에 offline 값 true가 오면 NoRights를 줍니다.

  5. 허용과 기록

    Ok와 expiresOn을 돌려줍니다. 결과와 판정 단계를 요청마다 로그로 남기면 CS가 거절 사유를 서버 담당자 없이 답할 수 있습니다.

Scenarios

운영 상황별 응답표

자주 생기는 다섯 상황을 응답, 다운로드본 처리, 운영 메모로 나눴습니다. 응답 외 두 칸은 권장안입니다. 응답이 정해지면 학습자가 볼 오류 이름도 정해지므로 CS 답변 예시와 함께 관리하세요.

상황 응답 다운로드본 운영 메모
수강 기간 종료 Expired 오프라인 기한을 남은 기간 이하로 잡아 함께 끝나게 합니다. 복습 기간을 준다면 그동안은 Ok와 연장된 만료 일시로 답합니다.
환불 NoRights 받은 파일이 오프라인 기한 안에서 열릴 수 있다고 가정하고 기한을 짧게 둡니다. 환불 처리 시각과 첫 거절 응답 시각을 함께 기록해 분쟁에 대비합니다.
권한 회수(제재·퇴사) NoRights 대외비 과정은 다운로드를 열지 않는 편이 안전합니다. 녹화 시도가 원인이라면 콘솔 녹화 차단 로그의 사용자 차단도 함께 검토합니다.
기기 교체 기기 목록 정리 뒤 Ok 새 기기에서 다시 내려받도록 안내합니다. 콘솔 디바이스 관리의 리셋과 서버 기기 목록 중 어느 쪽이 기준인지 CS 문서에 적어 둡니다.
휴면 계정 NoRights 오프라인 기한이 휴면 전환 기간보다 짧은지 확인합니다. 권한 없음 오류 문구에 휴면 해제 경로를 함께 넣고, 해제하면 다음 요청부터 Ok로 답합니다.
Test Cases

오픈 전 테스트 케이스

테스트 계정 하나로 서버 응답만 바꿔 가며 PC, Android, iOS에서 각각 실행합니다. 문서에 동작이 적혀 있지 않은 항목은 결과를 기록해 운영 문서로 남깁니다.

케이스 서버 설정 확인할 것
정상 허용 Ok, 한 시간 뒤 만료 일시 재생되고, 요청 로그에 userData·deviceId·offline(false)이 남는지
만료·권한 없음 Expired, NoRights 플랫폼마다 해당 오류 이름과 서비스 안내 문구가 뜨는지
기기 초과 DeviceLimitExceeded 기기 초과 오류가 뜨고, 그 기기가 콘솔 디바이스 관리 기록에도 보이는지
다운로드 거절 offline이 true인 요청에 NoRights 다운로드가 실패하고 다운로드 상태 보고 Failed가 오는지
단위 확인 만료 일시를 정확히 10분 뒤 값으로 10분 전후의 재생 가능 여부로 초·밀리초 해석이 맞는지
만료 일시 경과 만료 일시를 5분 뒤로 재생 중과 다시 열 때의 동작을 기록
오프라인 불가 offlineAccessPeriod 0으로 다운로드 네트워크를 끊고 열 때 오프라인 접근 권한 없음 오류가 나는지
인증 불일치 콘솔의 Authorization만 바꾸고 서버는 그대로 서버가 경보를 남기고 미리 정한 결과로 답하는지
서버 무응답 Callback 서버를 잠시 멈춤 학습자 화면의 오류 이름을 기록하고 대응 방침을 Newin과 확인

테스트 일정 전체와 다른 시나리오는 도입 실행 가이드, 응답 형식 원문은 접근 권한 검사 문서에 있습니다.

접근 권한 설계 FAQ

  • 재생 중에 권한을 거두면 바로 멈추나요?

    접근 권한 검사는 라이선스를 발급할 때 호출됩니다. 문서에 정의된 응답 가운데 재생 도중 받는 것은 진행 보고의 PlaybackLimitExceeded이고, 재생 제한 초과 오류로 처리됩니다. 재생 중 회수까지 반영해야 하는 과정이라면 이 응답을 쓸지 도입 상담에서 함께 정하세요.

  • 기기 기준은 콘솔과 서버 중 어디에 두나요?

    콘솔 디바이스 관리는 설정된 디바이스 제한 기록 조회와 리셋을 맡고, 서버는 deviceId로 DeviceLimitExceeded를 줄 수 있습니다. 학습자 쪽 오류 이름이 같아 CS가 어느 쪽을 풀어야 할지 헷갈리기 쉬우니 기준을 한쪽에 두기를 권합니다. 계정 공유 대응은 계정 공유 방지에서 다룹니다.

  • Expired와 NoRights 중 무엇으로 답할지 애매합니다.

    학습자가 다음에 할 행동으로 고르면 됩니다. 기간 연장이나 재구매로 풀리는 경우는 Expired, 수강 신청이나 본인 확인이 먼저인 경우는 NoRights로 답하면 오류별 안내 문구가 그 행동을 가리킵니다.

  • Authorization 없이 운영해도 되나요?

    문서상 선택 항목입니다. 다만 Callback URL은 외부에서 호출되는 주소이므로 문자열을 등록하고 서버에서 Bearer 값을 검사하기를 권합니다. 교체할 때는 서버가 새 값과 이전 값을 잠시 함께 받도록 한 뒤 콘솔 값을 바꿉니다.

Get Started

PlaynPlay 도입을 위한
기술적 지원과 서비스를 제공합니다.

제품 문의부터 데모 시연까지, 모든 지원을 위해 세일즈 및 기술 지원 팀이 준비되어 있습니다.

  • 제품 및 도입 문의

    도입 범위, 일정, 견적을 상담합니다. 서비스 형태와 사용자 규모를 알려주시면 맞는 연동 방식과 보안 설정을 제안합니다.

  • Trial 신청

    PlaynPlay의 기능을 먼저 테스트해 보세요. 트라이얼 기간 동안 귀사의 제품과 PlaynPlay를 연동하고 성능과 기능을 직접 검증할 수 있습니다.

  • PlaynPlay 기술 문의

    SDK 연동, Callback URL 설계, DRM 패키징 중에 생기는 질문에 기술팀이 답합니다. 공개된 개발 문서와 샘플 프로젝트도 함께 확인하세요.