Поделиться через


Сервер лицензирования PlayReady

Процесс получения лицензии на воспроизведение защищенного содержимого PlayReady обрабатывается сервером лицензирования PlayReady. Сервер PlayReady содержит обработчик, который разрешает воспроизведение защищенного клиента PlayReady. Для этого необходимо предоставить ключ шифрования, который разблокирует зашифрованное содержимое, которое клиент запрашивает для воспроизведения. Кроме того, ответ сервера лицензирования PlayReady содержит ограничения прав и прав для этого содержимого.

На следующем рисунке показаны шаги, описывающие получение клиентом лицензии из службы лицензий PlayReady.

Video Service Architecture

  1. Клиент получает носитель для воспроизведения.
  2. Клиент инициирует запрос лицензии из службы лицензий PlayReady. Клиент может либо заранее запросить лицензию перед воспроизведением содержимого, либо реактивно запросить лицензию после обнаружения лицензии, необходимой после начала воспроизведения.
  3. Сервер лицензирования PlayReady получает запрос от клиента и обрабатывает запрос лицензии.
  4. Сервер лицензирования PlayReady отправляет ответ клиенту обратно в запрос. Ответ на лицензию будет содержать ключ для разблокировки зашифрованного носителя, а также набор ограничений прав и прав, указывающих именно то, что можно воспроизвести.
  5. Клиент получает ответ лицензии, анализирует права и ограничения прав и начинает воспроизведение.

Разработка и развертывание сервера лицензирования PlayReady

Вам не требуется разрабатывать и развертывать собственную службу лицензий PlayReady. Эти службы можно получить от стороннего производителя, например партнера PlayReady. Однако если вы решите разработать собственную службу лицензий PlayReady, корпорация Майкрософт предоставляет пакет средств разработки программного обеспечения PlayReady Server (SDK) бесплатно тем, кто хочет запрограммировать собственный сервер лицензирования PlayReady. Обратите внимание, что сервер лицензирования PlayReady работает только на сервере Windows.

Сервер лицензирования PlayReady можно разрабатывать и развертывать различными способами:

  • Разрабатывайте сервер лицензирования самостоятельно или через стороннюю сторону.
  • Управляйте сервером лицензирования самостоятельно или с помощью поставщика службы приложений (ASP).
  • Развертывание на физическом сервере или виртуальном сервере.
  • Развертывание в локальной среде, в частном облаке или в общедоступном облаке.

Пакет SDK для сервера PlayReady предоставляет следующие функции для серверов лицензий:

  • Технология интегрируется в любую сетевую инфраструктуру (прокси-серверы и т. д.).
  • Технология интегрируется с любой веб-службой или логикой.
  • Доставляется как библиотеки сервера Windows, а также C# код в пакете SDK. Включает примеры обработчиков в исходный код.

Примеры

Ниже приведен пример запроса лицензии:

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
	<soap:Body>
		<AcquireLicense xmlns="http://schemas.microsoft.com/DRM/2007/03/protocols">
			<challenge>
				<Challenge xmlns="http://schemas.microsoft.com/DRM/2007/03/protocols/messages">
					<LA xmlns="http://schemas.microsoft.com/DRM/2007/03/protocols" Id="SignedData" xml:space="preserve">
						<Version>1</Version>
						<ContentHeader>
							<WRMHEADER xmlns="http://schemas.microsoft.com/DRM/2007/03/PlayReadyHeader" version="4.0.0.0">
								<DATA>
									<PROTECTINFO>
										<KEYLEN>16</KEYLEN>
										<ALGID>AESCTR</ALGID>
									</PROTECTINFO>
									<KID>jADgM0TEcEeYmaMh4HndNg==</KID>
								</DATA>
							</WRMHEADER>
						</ContentHeader>
						<CLIENTINFO>
							<CLIENTVERSION>3.1.0.1017</CLIENTVERSION>
						</CLIENTINFO>
						<RevocationLists>
							<RevListInfo><ListID>ioydTlK2p0WXkWklprR5Hw==</ListID><Version>0</Version></RevListInfo>
							<RevListInfo><ListID>gC4IKKPHsUCCVhnlttibJw==</ListID><Version>0</Version></RevListInfo>
							<RevListInfo><ListID>Ef/RUojT3U6Ct2jqTCChbA==</ListID><Version>0</Version></RevListInfo>
							<RevListInfo><ListID>BOZ1zT1UnEqfCf5tJOi/kA==</ListID><Version>0</Version></RevListInfo>
						</RevocationLists>
						<CustomData>User=Roland</CustomData>
						<LicenseNonce>7GYVLC7wvGVR0nqGYXs4DQ==</LicenseNonce>
						<ClientTime>1446224160</ClientTime>
						<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#" Type="http://www.w3.org/2001/04/xmlenc#Element">
							<EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc"></EncryptionMethod>
							<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
								<EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">
									<EncryptionMethod Algorithm="http://schemas.microsoft.com/DRM/2007/03/protocols#ecc256"></EncryptionMethod>
									<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
										<KeyName>WMRMServer</KeyName>
									</KeyInfo>
									<CipherData>
										<CipherValue>Yt2ys5Fp83ayPvva8kT2THtEGze5se5YWaP======</CipherValue>
									</CipherData>
								</EncryptedKey>
							</KeyInfo>
							<CipherData>
							<CipherValue>uLdvYtc5oRk/MD0Dy72ZKH8PuHRI2RBzygKJHGu/M4boyiPOpMQnNlFB30qADHzND7fDwSfZGbOgP/g9OaT1LYDWHU/vq7f0CtiWddtwDSleb651HyQYOmWCcBSY9SVrjXXKITMsQL8PBXQh3O90GZSzS3UKo8OcyhO/yCmTsVWs0EYE98ikWjaPJfoQdvjSfklLjeveqGHhY7YZiSDMTksguLIMycsSTbGelL0P6IIDL7dj===========</CipherValue>
							</CipherData>
						</EncryptedData>
					</LA>
					<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
						<SignedInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
							<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"></CanonicalizationMethod>
							<SignatureMethod Algorithm="http://schemas.microsoft.com/DRM/2007/03/protocols#ecdsa-sha256"></SignatureMethod>
							<Reference URI="#SignedData">
								<DigestMethod Algorithm="http://schemas.microsoft.com/DRM/2007/03/protocols#sha256"></DigestMethod>
								<DigestValue>NnkxTbC9yLGwYWSRfOz3VqKRYd62AGqTnwpSHsCklhI=</DigestValue>
							</Reference>
						</SignedInfo>
						<SignatureValue>Av2+yCEBdJD9+euMzGzuPb5rYgPlXNszEEr+cF7LwbE/Kln1e8JyhAEdIy14z4U43/oQMvMg40QaOAqv3ElM2g==</SignatureValue>
						<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
							<KeyValue>
								<ECCKeyValue>
									<PublicKey>nrZWFO4ExmBomY+Xu5sATbSRi+tjRqMC+bVaKwn5ZAkdoER3nn8eE+yxXA0CkuhhmAmAqYDX7RY2q+MbAvoZuA==</PublicKey>
								</ECCKeyValue>
							</KeyValue>
						</KeyInfo>
					</Signature>
				</Challenge>
			</challenge>
		</AcquireLicense>
	</soap:Body>
</soap:Envelope>

 

Ниже приведен пример ответа лицензии:

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
	<soap:Body>
		<AcquireLicenseResponse xmlns="http://schemas.microsoft.com/DRM/2007/03/protocols">
			<AcquireLicenseResult>
				<Response xmlns="http://schemas.microsoft.com/DRM/2007/03/protocols/messages">
					<LicenseResponse xmlns="http://schemas.microsoft.com/DRM/2007/03/protocols" Id="SignedData">
						<Version>1</Version>
						<Licenses>
							<License>WE1SAAAAAANryW57jI0QQJItXt7rxagIAAMAAQAAAWIAAgAEAAAACAADAAIAAABEAAEAEgAAABAAAAAAVjOhZgAAABMAAAAMVjOhKgABADIAAAAMAAAAHgABADQAAAAKB9AAAAAzAAAACgABAAMACQAAAPIAAQAKAAAAnowA4DNExHBHmJmjIeB53TYAAQADAIAKFe+fsiOCUo/ndSfV1p0YK1qzUAgypRhiMUObPbmJ+P3GMFziaM+O0jHVttk0TAxxGsreh3PumUKJJ1CYMCYGJSgFm7ceuCsOxRBKCJcH+jGVlocmKMw0zrG41DeTrgDLw/rDDEDtmQvIwezIcwUwqWFxq7o5+kYWA4TdwTZNRAAAACoAAABMAAEAQOSjiOqgw3D8yP0vsKUOkh9SDIb3OghTm5812xCi7Y1q+Yr2U6KPQAUDgandzhhSKvebDjmWCIhxcjv+cIE5WIsAAQALAAAAHAABABBDCGMQnJ3JfqzT5K+5nS5k</License>
						</Licenses>
						<RevInfo>
							<Revocation>
								<ListID>ioydTlK2p0WXkWklprR5Hw==</ListID>
								<ListData>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</ListData>
							</Revocation>
							<Revocation>
								<ListID>gC4IKKPHsUCCVhnlttibJw==</ListID>
								<ListData>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</ListData>
							</Revocation>
							<Revocation>
								<ListID>Ef/RUojT3U6Ct2jqTCChbA==</ListID>
								<ListData>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</ListData>
							</Revocation>
							<Revocation>
								<ListID>BOZ1zT1UnEqfCf5tJOi/kA==</ListID>
								<ListData>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</ListData>
							</Revocation>
						</RevInfo>
						<Acknowledgement>
							<TransactionID>265e4a30-72f9-4f46-b41e-102a21ac4bc9</TransactionID>
						</Acknowledgement>
						<LicenseNonce>7GYVLC7wvGVR0nqGYXs4DQ==</LicenseNonce>
						<ResponseID>8qXNFxP4rrn+Rkx3rFTDYQZnfLMkJOm04N2JjWIXZ90=</ResponseID>
						<SigningCertificateChain>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</SigningCertificateChain>
					</LicenseResponse>
					<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
						<SignedInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
							<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"></CanonicalizationMethod>
							<SignatureMethod Algorithm="http://schemas.microsoft.com/DRM/2007/03/protocols#ecdsa-sha256"></SignatureMethod>
							<Reference URI="#SignedData">
								<DigestMethod Algorithm="http://schemas.microsoft.com/DRM/2007/03/protocols#sha256"></DigestMethod>
								<DigestValue>H9QaFwGEr4BnkJX0nRoztartIba7dcvEU5G1vYu9jTs=</DigestValue>
							</Reference>
						</SignedInfo>
						<SignatureValue>IVN3sGMpJ+O/3c1eLXRpEi1s7EuRGDLG/hLLdbLvHq7g/vzKEzw0NH0eB5MUiYuD9HaZlYZVbNGxaX74qed+Hw==</SignatureValue>
					</Signature>
				</Response>
			</AcquireLicenseResult>
		</AcquireLicenseResponse>
	</soap:Body>
</soap:Envelope>

См. также:

Тестовый сервер PlayReady