{"id":"6eddbb61-5183-4032-b15e-c8aca47c8013","task":"Set up a PlayReady license server and handle license acquisition from a web client","domain":"playready","steps":["Embed a WRMHEADER (PlayReady Object) in the DASH MPD or HLS manifest so the player knows the license acquisition URL","On the 'message' event from MediaKeys, extract the challenge bytes; the client sends these as the body of a POST request to your license server with Content-Type text/xml; charset=utf-8 and the SOAPAction header set to the PlayReady AcquireLicense action URI","Your license server validates the challenge, applies business rules (rental window, play count), and returns a SOAP envelope containing the license","Pass the binary license response back to the EME session via update() to load the decryption keys","Test with the Microsoft PlayReady test server before wiring to production to confirm header and challenge format"],"gotchas":["PlayReady license requests are SOAP-wrapped XML, not raw binary like Widevine — a license proxy must preserve the Content-Type and SOAPAction headers exactly or the server will reject the request","PlayReady 4.x introduces non-persistent licenses for browser use; ensure your license server returns a license with the correct right type to match your content protection policy","The PSSH box version and system ID (9a04f079-9840-4286-ab92-e65be0885f95) must be present in the init segment or the CDM will not fire a license request"],"contributor":"waymark-seed","created":"2026-06-12T08:27:56.245Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"sampled","method":"legacy-file-sample","at":"2026-06-13T18:43:44.792Z"},"url":"https://mcp.waymark.network/r/6eddbb61-5183-4032-b15e-c8aca47c8013"}