Setting Up a Distributed Retail Model for MS Windows Media Rights Manager
Summary: This document addresses the issues of setting up a distributed retail model to sell media files packaged using Microsoft® Windows Media™ Rights Manager. Because each situation is unique, this document does not provide a step-by-step solution for setting up a distributed retail model, but rather addresses the main issues and provides ideas for solutions. Issues include how to determine different ways you can keep track of each vendor's sales, how and why you can issue a license before a consumer actually downloads the media file, and how to account for packaged media files that have been shared rather than purchased.
On This Page
If you set up a distributed retail model, you can sell media files packaged with Microsoft® Windows Media™ Rights Manager over the Internet. The tasks of attracting consumers, packaging and distributing media files, collecting payment, and issuing licenses can be delegated in various ways. For example, a content owner might rely on vendors to interact with consumers and collect payment but retain responsibility for delivering packaged media files to consumers and issuing licenses. In a different example, the content owner might only assume the responsibility of distributing media files to vendors, use a clearinghouse to issue licenses, and rely on vendors to handle all other tasks. You must set up your distributed retail model to suit your own business needs.
This document contains the following topics:
Tracking Transactions and Payment. Describes different ways you can keep track of each vendor's sales.
Issuing Licenses Before Media Files Are Downloaded. Explains how and why you can issue a license before a consumer actually downloads the media file.
Accounting for Packaged Media Files That Have Been Shared. Describes the situation that arises when packaged media files are shared rather than purchased.
For More Information.
Tracking Transactions and Payment
The main concern in a distributed retail model is tracking sales and payments. The content owner must be able to determine how many transactions took place, what each vendor is responsible for, how much money each vendor collected, and so forth. The way you track transactions and payment depends on your particular configuration.
The following sections outline ideas for tracking transactions and payments, according to the way media files and licenses are handled. These examples refer to the vendor and content owner, but these roles depend on your situation. For example, a clearinghouse might issue licenses rather than the content owner.
Vendors Package Their Own Media Files
If vendors provide media files to consumers, the content owner can track transactions according to the licenses that are issued. If each vendor uses Windows Media Rights Manager to package their own media files and the content owner issues licenses for all vendors, the content owner can identify the vendor of each media file for which a license is issued by a value that is appended to the license acquisition URL, database_GUID. This value is unique for each instance of Windows Media Rights Manager.
Content Owners Distribute Packaged Media Files to Each Vendor
If vendors receive media files that have already been packaged, the content owner can track transactions by packaging media files individually for each vendor. Each time a media file is repackaged, it receives a new value for key_GUID, so the content owner can use this value to track the vendor for each license that is issued.
The following steps outline this process:
The content owner creates a table in the Windows Media Rights Manager database that identifies the vendor, media file, and key_GUID for each transaction. Each time a media file is repackaged, this table must be updated.
You can use the value for content_GUID to identify the media file; each packaged media file receives a value for content_GUID, which is stored in the drm_content table. Unlike key_GUID, content_GUID remains the same for all versions of a packaged media file. The key_GUID value is stored in the drm_copy_state table.
The content owner creates a packaged copy for each vendor. For example, if the content owner works with six vendors, the content owner packages a given media file six times. The version that each vendor receives is tracked in the table.
Because the content owner will issue licenses for all media files, the license acquisition URL is the same for each packaged copy and points to a page on the content owner's Web site.
Consumers visit the vendors' Web sites, then purchase and download media files.
Each consumer is redirected to the content owner's Web site to get a license. The content owner can determine which vendor sold the media file by finding the key_GUID from the license request. When the license acquisition process is initiated, a challenge string is sent from the consumer's player. This string contains the key_ID, not the key_GUID. However, the content owner can use an unsupported Key Utility COM object to convert the key_ID into the key_GUID. For more information about the Key Utility COM object, see the article Using the Key Utility Object to Generate Key Information on MSDN Online.
Vendors Collect Payment, and Content Owners Distribute Media Files and Issue Licenses
If the content owner provides media files directly to the consumer for download, media files are independent of the vendor. In other words, you cannot tell which vendor is responsible for the transaction according to the media file or its license. If consumers are directed to the content owner's Web site to download media files after paying a vendor, one way to track the vendor is to use session variables that are passed from the vendor's Web site to the content owner's Web site.
The consumer selects and purchases a media file from a vendor.
The consumer is redirected from the vendor's Web site to the content owner's Web site to download the media file. Additional parameters are included from the vendor's Web site, such as identification numbers for the vendor, consumer, requested media file, and checksum to validate the vendor. This page should ensure that the information is legitimate and actually coming from the vendor.
Each transaction is recorded in a table that the content owner created earlier. For example, this table contains columns for vendorID, consumerID, and content_GUID (content_GUID is described in the Content owners distribute packaged media files to each vendor section).
The following approach is an alternative to adding parameters with checksum:
The consumer selects and purchases a media file from a vendor.
The vendor generates a random but unique transaction identification number and assigns it to a parameter. This information is sent to the content owner's Web site, where it is recorded in a database.
The consumer is redirected from the vendor's Web site to the content owner's Web site to download the media file. The vendor's Web site sends the vendorID and tokenID parameters. The content owner looks up vendorID in the database to find a matching tokenID, and if one is found, the transaction can proceed.
For either approach, you can issue the license in different ways:
When the consumer is redirected to the content owner's Web site, the content owner can issue the license before the media file is actually downloaded. This method is described in the following section.
The vendor can initiate the license request by using one global file, and then pass it on to the content owner when the consumer is redirected to the content owner's Web site. The content owner then replaces the key ID in the license request with the key ID of the media file before delivering the license.
Issuing Licenses Before Media Files Are Downloaded
When you require payment for media, you can connect the payment to the media file or to the license. Because media files can be copied and shared, it makes sense to connect the payment to the license. Then, rather than having the consumer follow a separate license acquisition process after making a purchase, you can issue the license at the time of payment and direct the consumer to download the media file afterwards.
By default, the license acquisition process is triggered when a consumer tries to play a packaged media file for the first time. The license acquisition URL, stored in the media file, opens a Web page that runs the ASP script to issue licenses. However, you can trigger the license acquisition process without making the consumer aware of it. For example, after a consumer pays for a media file, you can trigger the license acquisition process in the background to issue a license while the consumer downloads the media file. For more information about issuing a license before the consumer downloads a media file, see the article Distributing a License with a Media File on MSDN Online.
To trigger the license acquisition process in the background, the consumer must have a player (such as Microsoft® Windows Media™ Player version 6.2 or later) that can be embedded in a Web browser. If the consumer does not have such a player, the license cannot be issued with the media file. Therefore, consider including code in your Web site to check for such a player, for example, when the consumer selects a media file to purchase. You can direct consumers who do not have a suitable player to a download site. For more information about checking a consumer's computer for an embeddable player, see the article Detecting a Player on a Consumer's Computer on MSDN Online.
Accounting for Packaged Media Files That Have Been Shared
One issue to consider is what to do when consumers share media files. For example, a consumer purchases a packaged media file, and then sends a copy of it to a friend. Because the friend does not have a license, the license acquisition process begins when the friend tries to play the media file, causing the friend's Web browser to open the license acquisition URL. The result of this action will vary depending on how you have set up your retail distribution model; however, you probably want to ensure that a license is not issued unless it has been paid for, and that the vendor who is responsible for the transaction receives credit.
You can solve this problem in different ways, depending on how your retail distribution model issues licenses. First, your retail distribution model must be able to detect when a consumer visits the license acquisition URL without paying. For example, if you are using session variables, these values are absent.
Then, if licenses are issued from a central site, consider the following ideas:
If you can determine the vendor according to the license request (for example, use the database_GUID or key_GUID value to determine the vendor), you can display a message telling the consumer that the media file must be purchased first, and then redirect the consumer to the appropriate vendor's Web site.
If you cannot determine the vendor according to the license request, you can display a message telling the consumer that the media file must be purchased first, and display a list of vendor Web sites.
For More Information
To learn more about Windows Media Rights Manager, see Windows Media Rights Manager Help. Windows Media Rights Manager is available for download from the Windows Media Technologies page at the Microsoft Web site (http://www.microsoft.com/windows/windowsmedia/default.aspx).
Distributing a License with a Media File on MSDN Online (http://msdn.microsoft.com/workshop/imedia/windowsmedia/liccont.asp).
Detecting a Player on a Consumer's Computer on MSDN Online (http://msdn.microsoft.com/workshop/imedia/windowsmedia/Clientdet.asp).