다음을 통해 공유


PlayReady 테스트 서버에 대한 CustomData JSON 구문

개요

PlayReady 테스트 서버는 고급 라이선스 구성을 위한 CustomData JSON 구문을 지원합니다. 이 방법을 사용하면 개발자가 라이선스 요청의 CustomData 필드 내에서 JSON 형식을 사용하여 복잡한 라이선스 매개 변수 및 정책을 지정할 수 있습니다.

JSON 구조체

CustomData 필드는 다양한 구성 매개 변수가 있는 JSON 개체를 허용합니다.

{
  "version": "1.0",
  "config": {
    "licenseType": "persistent|non-persistent|rental|subscription",
    "keyId": "GUID",
    "contentKey": "base64-encoded-key",
    "policies": {
      "outputProtection": {
        "digital": "required|optional|never",
        "analog": "required|optional|never"
      },
      "playback": {
        "allowOffline": true|false,
        "expirationDate": "ISO-8601-datetime",
        "gracePeriod": "duration-in-seconds"
      }
    }
  }
}

구성 매개 변수

라이선스 유형

생성할 라이선스 유형을 지정합니다.

  • 영구적: 디바이스에 저장된 라이선스, 애플리케이션 다시 시작 유지
  • 비영구: 임시 라이선스, 애플리케이션이 닫히면 만료됩니다.
  • 임대: 특정 만료가 있는 시간 제한 라이선스
  • 구독: 정기 유효성 검사를 사용하는 구독 기반 라이선스

키 관리

암호화 키 및 식별자 구성:

{
  "keyId": "12345678-1234-1234-1234-123456789012",
  "contentKey": "base64EncodedContentKey",
  "keyRotation": {
    "enabled": true,
    "interval": "PT1H"
  }
}

출력 보호 정책

출력 보호 요구 사항 제어:

{
  "outputProtection": {
    "digital": {
      "hdcp": "required",
      "cgmsa": "copy-never"
    },
    "analog": {
      "macrovision": "required",
      "cgmsa": "copy-once"
    }
  }
}

예제 구성

기본 영구 라이선스

{
  "version": "1.0",
  "config": {
    "licenseType": "persistent",
    "keyId": "12345678-1234-1234-1234-123456789012",
    "policies": {
      "playback": {
        "allowOffline": true
      }
    }
  }
}

시간 제한이 있는 임대 라이선스

{
  "version": "1.0",
  "config": {
    "licenseType": "rental",
    "keyId": "87654321-4321-4321-4321-210987654321",
    "policies": {
      "playback": {
        "expirationDate": "2024-12-31T23:59:59Z",
        "gracePeriod": 3600
      },
      "outputProtection": {
        "digital": "required",
        "analog": "optional"
      }
    }
  }
}

출력 보호를 사용하여 구독 라이선스

{
  "version": "1.0",
  "config": {
    "licenseType": "subscription",
    "keyId": "11111111-2222-3333-4444-555555555555",
    "policies": {
      "playback": {
        "allowOffline": false
      },
      "outputProtection": {
        "digital": "required",
        "analog": "required"
      },
      "subscription": {
        "renewalUrl": "https://subscription.service.com/renew",
        "validationInterval": "PT24H"
      }
    }
  }
}

라이선스 요청의 사용량

HTTP POST 요청

CustomData 필드에 JSON 구성을 포함합니다.

POST /pr/svc/rightsmanager.asmx HTTP/1.1
Host: playready.directtaps.net
Content-Type: application/octet-stream

[License Request with CustomData containing JSON configuration]

클라이언트 통합

JavaScript 예제

const customData = {
  version: "1.0",
  config: {
    licenseType: "persistent",
    keyId: keyId,
    policies: {
      playback: {
        allowOffline: true
      }
    }
  }
};

// Include in license request
const licenseRequest = {
  customData: JSON.stringify(customData),
  // ... other license request parameters
};

C# 예제

var customData = new {
    version = "1.0",
    config = new {
        licenseType = "persistent",
        keyId = keyId,
        policies = new {
            playback = new {
                allowOffline = true
            }
        }
    }
};

string jsonCustomData = JsonConvert.SerializeObject(customData);
// Include in PlayReady license request

고급 기능

조건부 액세스

디바이스 또는 사용자 특성에 따라 조건부 액세스를 구성합니다.

{
  "conditionalAccess": {
    "deviceRestrictions": {
      "allowedDeviceTypes": ["mobile", "desktop"],
      "blockedDevices": ["emulator", "debugger"]
    },
    "geoRestrictions": {
      "allowedCountries": ["US", "CA", "GB"],
      "blockedRegions": ["region1", "region2"]
    }
  }
}

다중 키 지원

여러 암호화 키 지원:

{
  "keys": [
    {
      "keyId": "key-1-guid",
      "contentKey": "base64-key-1",
      "keyType": "content"
    },
    {
      "keyId": "key-2-guid", 
      "contentKey": "base64-key-2",
      "keyType": "track"
    }
  ]
}

오류 처리

JSON 유효성 검사 오류

  • 형식이 잘못된 JSON: JSON 구문 분석 오류 세부 정보가 있는 HTTP 400
  • 필수 필드 누락: 필드 유효성 검사 오류가 있는 HTTP 400
  • 잘못된 필드 값: 값 제약 조건 위반이 있는 HTTP 400

구성 오류

  • 지원되지 않는 라이선스 유형: 지원되는 형식 목록이 있는 HTTP 400
  • 잘못된 키 형식: 키 형식 요구 사항이 있는 HTTP 400
  • 정책 충돌: 정책 해결 지침이 포함된 HTTP 400

모범 사례

  1. JSON 유효성 검사: 요청을 보내기 전에 JSON 구조의 유효성 검사
  2. 버전 호환성: 기능 지원에 적절한 버전 사용
  3. 키 보안: 클라이언트 쪽 코드에서 콘텐츠 키를 노출하지 않습니다.
  4. 정책 테스트: 다양한 정책 조합을 철저히 테스트
  5. 오류 처리: 모든 시나리오에 대한 포괄적인 오류 처리 구현

지원 및 문제 해결

CustomData JSON 구문 관련 문제:

  1. JSON 형식 및 구조 유효성 검사
  2. 필수 필드 현재 상태 및 값 확인
  3. 정책 호환성 및 제약 조건 확인
  4. 먼저 간소화된 구성으로 테스트
  5. 자세한 오류 정보는 서버 응답 검토

추가 지원은 기본 PlayReady 테스트 서버 설명서를 참조하세요.