Things that can go wrong when working on PlayReady license server

Many things can go wrong when you try to stand up a PlayReady license server. Below are some of the common errors you may have when working with PlayReady license server and PlayReady Server SDK, v 1.5.2, v 2.0 or v 2.1.

Error Number 1:

If you use OTADLAClient.exe to test a PlayReady license server, you may have the following error in Event Log.

Microsoft.Media.Drm.RMServerException: Service handler has returned malformed server authorization certificate. at Microsoft.Media.Drm.CertValidationHelper.ValidateServerCert(String certChainStringToVerify, String keysStringToMatch, HttpContext context, ServerCertificate& serverCertificate, Boolean& fCanSignResponse) at Microsoft.Media.Drm.ServerAuthorizationHelper.CheckServerAuthorization(String
pluginPath, HttpContext context) at Microsoft.Media.Drm.LAHelper.AcquireLicense(XmlDocument challenge, String pluginPath, SoapUnknownHeader[] Headers, HttpContext context) at Microsoft.Media.Drm.RightsManager.AcquireLicense(XmlDocument challenge)

This error is caused by the fact that RevocationData.xml is missing from the vdir directory.

RevocationData.xml lists client devices that are prohibited from obtaining PlayReady licenses. PlayReady license servers use the file to check incoming client certificates during licensing operations (to determine if a client may be issued a PlayReady license). Microsoft periodically updates the revocation file. Operators must check at a regular interval if there are changes to the file, and if so, to download the file from Microsoft PlayReady website and install the file on each
machine that hosts a PlayReady-related server role. Operators generally do not edit this file, but may do so according to the format specified in the PlayReady SDK help file (.chm.)

Besides making sure RevocationData.xml is in \vdir\ folder, you also need to add the following node under <appSettings>:

<add key=”RevocationDataFile” value=”RevocationData.xml”/>

Error Number 2:

If your license acquisition URL contains more than one query string parameters, “&” must be used. In this case, if you use a Silverlight player (either SSME or SMFPlayer) to acquire license and playback a video, license acquisition will fail.

For example, if your URL is http://server/playready/rightsmanager.asmx?contentid=transformers3&categoryid=action, license acquisition will fail.

The reason is that there is a bug in Silverlight SSME: the default license acquirer of SSME automatically converts “&” in license acquisition URL to “&amp;” (XML encoding). If a PlayReady license server needs to read the query strings to get the input parameters, it cannot understand “&amp;” in the query string and would fail to issue a license.

The solution is to use a custom license acquirer to replace the default one in Silverlight SSME. And in the custom license acquirer, we need to put in code to replace “&amp;” by “&” in the license acquisition URL.

If you are using SMFPlayer in MMPPF (Microsoft Media Platform Player Framework, formerly SMF, or Silverlight Media Framework) the steps involved are:

  1. Create and use a custom SMFPlayer;
  2. Expose SmoothStreamingMediaElement of the custom SMFPlayer;
  3. Create a custom license acquirer;
  4. In the custom SMFPlayer, assign its SmoothStreamingMediaElement.LicenseAcquirer to an instance of the custom license acquirer.

Error Number 3:

In web.config of PlayReady license server web service application, HandlerDLL <appSettings> is pointing to a non-existent DLL file.

Error Number 4:

By default, the test client (OTADLAClient.exe) in PlayReady Server SDK has security level 150. If license server DLL has the following line of code
mediaLicense.MinimumSecurityLevel = 2000;

The following error will occur:

We need to change mediaLicense.MinimumSecurityLevel to 150 to make the OTADLAClient working against the PlayReady license server.

Error Number 5:

If you are using PlayReady Server SDK v 1.5.2, handler DLL’s must be compiled targeting .NET Framework 2.0. Otherwise, errors will be thrown.

If you are using PlayReady Server SDK v 2.x, handler DLL’s can be compiled to .NET Framework 2.0, 3.5 or 4.0, as long as proper application pool is used.

Error Number 6:

Copy the right version of .dat file from \Tools\Pregenerated folder to C:\WMDRMPD folder before you use OTADLAClient.exe to test the setup. Otherwise the test will fail in initializing DRM.


Comments (2)

  1. Amiya says:

    Thanks…It's very useful!!!

  2. Tom Wang says:

    running the Subscription sample and failed with the following. Any ideas? thanks!

    c:Program FilesPlayReady Server SDK 3.0Tools>OTADLAClient.exe -i:pregeneratedjazzv4_aes.eny -o:jazzv4_aes.asf -s:http://localhost/playready/rightsmanager.asmx

    Get License (Challenge): Failed

    Get License (Challenge/Ack): Failed

    Failed with error code: 0x8004C604