Entwurf eines Multi-DRM-Inhaltsschutzsystems mit ZugriffssteuerungDesign of a multi-DRM content protection system with access control

Das Entwerfen und Erstellen eines DRM-Subsystems (Digital Rights Management) für eine Over-The-Top-Lösung (OTT) oder eine Onlinestreaminglösung ist eine komplexe Aufgabe.Designing and building a Digital Rights Management (DRM) subsystem for an over-the-top (OTT) or online streaming solution is a complex task. Anbieter von Internet- oder Onlinevideodiensten übertragen diese Aufgabe in der Regel spezialisierten DRM-Dienstanbietern.Operators/online video providers typically outsource this task to specialized DRM service providers. Ziel dieses Dokuments ist es, einen Referenzentwurf und eine Referenzimplementierung eines kompletten DRM-Subsystems in einer OTT- oder Onlinestreaminglösung zu präsentieren.The goal of this document is to present a reference design and a reference implementation of an end-to-end DRM subsystem in an OTT or online streaming solution.

Zielgruppe sind Entwickler, die an einem DRM-Subsystem für OTT- oder Onlinestreaming-/Multibildschirmlösungen arbeiten, oder Leser, die sich für ein DRM-Subsystem interessieren.The targeted readers for this document are engineers who work in DRM subsystems of OTT or online streaming/multiscreen solutions or readers who are interested in DRM subsystems. Es wird angenommen, dass Leser mit mindestens einer der DRM-Technologien auf dem Markt vertraut sind, wie z.B. PlayReady, Widevine, FairPlay oder Adobe Access.The assumption is that readers are familiar with at least one of the DRM technologies on the market, such as PlayReady, Widevine, FairPlay, or Adobe Access.

In dieser Beschreibung werden die drei DRMs behandelt, die von Azure Media Services unterstützt werden (Multi-DRM): Common Encryption (CENC) für PlayReady und Widevine, FairPlay sowie Verschlüsselung mit unverschlüsseltem AES-128-Schlüssel.In this discussion, by multi-DRM we include the 3 DRMs supported by Azure Media Services: Common Encryption (CENC) for PlayReady and Widevine, FairPlay as well as AES-128 clear key encryption. Beim Onlinestreaming und in der OTT-Branche lässt sich immer mehr der Trend feststellen, dass native DRM-Systeme auf verschiedenen Clientplattformen verwendet werden.A major trend in online streaming and the OTT industry is to use native DRMs on various client platforms. Dieser Trend löst die vorherige Vorgehensweise ab, bei der ein einzelnes DRM-System und das zugehörige Client-SDK für verschiedene Clientplattformen verwendet wurden.This trend is a shift from the previous one that used a single DRM and its client SDK for various client platforms. Bei Verwenden von CENC mit mehreren nativen DRM-Systemen sind PlayReady und Widevine gemäß der Spezifikation Common Encryption (ISO/IEC 23001-7 CENC) verschlüsselt.When you use CENC with multi-native DRM, both PlayReady and Widevine are encrypted per the Common Encryption (ISO/IEC 23001-7 CENC) specification.

Die Verwendung eines nativen Multi-DRM-Systems für den Inhaltsschutz bietet folgende Vorteile:The benefits of using native multi-DRM for content protection are that it:

  • Die Kosten für die Verschlüsselung sinken, da ein einzelner Verschlüsselungsprozess für unterschiedliche Zielplattformen mit deren systemeigenen DRM-Systemen ausgeführt wird.Reduces encryption cost because a single encryption process is used to target different platforms with its native DRMs.
  • Die Kosten für die Verwaltung von Medienobjekten sinken, da nur eine einzige Kopie des Medienobjekts im Speicher erforderlich ist.Reduces the cost of managing assets because only a single copy of asset is needed in storage.
  • Die Kosten für die DRM-Clientlizenzierung entfallen, da native DRM-Clients in der Regel auf den entsprechenden nativen Plattformen kostenlos sind.Eliminates DRM client licensing cost because the native DRM client is usually free on its native platform.

Schwerpunkte des ArtikelsGoals of the article

Für diesen Artikel gelten die folgenden Zielsetzungen:The goals of this article are to:

  • Bereitstellung eines Referenzentwurfs für ein DRM-Subsystem, das alle drei DRM-Systeme (CENC für DASH, FairPlay für HLS und PlayReady für Smooth Streaming) nutztProvide a reference design of a DRM subsystem that uses all 3 DRMs (CENC for DASH, FairPlay for HLS and PlayReady for smooth streaming).
  • Bereitstellung einer Referenzimplementierung auf einer Azure- und Azure Media Services-PlattformProvide a reference implementation on Azure and Azure Media Services platform.
  • Erörterung verschiedener Entwurfs- und ImplementierungsthemenDiscuss some design and implementation topics.

Die folgende Tabelle enthält eine Zusammenfassung der nativen DRM-Unterstützung auf verschiedenen Plattformen und der EME-Unterstützung in verschiedenen Browsern.The following table summarizes native DRM support on different platforms and EME support in different browsers.

ClientplattformClient platform Natives DRM-SystemNative DRM EMEEME
Smart-TVs, STBsSmart TVs, STBs PlayReady, Widevine und/oder anderePlayReady, Widevine, and/or other Eingebetteter Browser/EME für PlayReady und/oder WidevineEmbedded browser/EME for PlayReady and/or Widevine
Windows 10Windows 10 PlayReadyPlayReady Microsoft Edge/IE11 für PlayReadyMicrosoft Edge/IE11 for PlayReady
Android-Geräte (Telefon, Tablet, TV)Android devices (phone, tablet, TV) WidevineWidevine Chrome für WidevineChrome for Widevine
iOSiOS FairPlayFairPlay Safari für FairPlay (ab iOS 11.2)Safari for FairPlay (since iOS 11.2)
macOSmacOS FairPlayFairPlay Safari für FairPlay (ab Safari 9 und höher unter Mac OS X 10.11 und höher El Capitan)Safari for FairPlay (since Safari 9+ on Mac OS X 10.11+ El Capitan)
tvOStvOS FairPlayFairPlay

Da der Bereitstellungsstatus der einzelnen DRM-Systeme sehr unterschiedlich sein kann, implementiert ein Dienst in der Regel zwei oder drei DRM-Systeme, um sicherzustellen, dass alle Arten von Endpunkten optimal abgedeckt werden.Considering the current state of deployment for each DRM, a service typically wants to implement two or three DRMs to make sure you address all the types of endpoints in the best way.

Ein Kompromiss zwischen der Komplexität der Dienstlogik und der Komplexität auf der Clientseite sorgt dafür, dass auf den verschiedenen Clients ein gewisses Maß an Benutzerfreundlichkeit erzielt wird.There is a tradeoff between the complexity of the service logic and the complexity on the client side to reach a certain level of user experience on the various clients.

Beachten Sie die folgenden Aspekte, wenn Sie Ihre Auswahl treffen:To make your selection, keep in mind:

  • PlayReady ist auf jedem Windows-Gerät und auf einigen Android-Geräten nativ implementiert und auf nahezu jeder Plattform über Software-SDKs verfügbar.PlayReady is natively implemented in every Windows device, on some Android devices, and available through software SDKs on virtually any platform.
  • Widevine ist auf jedem Android-Gerät, in Chrome und auf einigen anderen Geräten nativ implementiert.Widevine is natively implemented in every Android device, in Chrome, and in some other devices. Widevine wird über DASH auch in Firefox- und Opera-Browsern unterstützt.Widevine is also supported in Firefox and Opera browsers over DASH.
  • FairPlay ist unter iOS, macOS und tvOS verfügbar.FairPlay is available on iOS, macOS and tvOS.

Ein ReferenzentwurfA reference design

Dieser Abschnitt zeigt einen Referenzentwurf, für den die für seine Implementierung verwendeten Technologien keine Rolle spielen.This section presents a reference design that is agnostic to the technologies used to implement it.

Ein DRM-Subsystem kann die folgenden Komponenten enthalten:A DRM subsystem can contain the following components:

  • SchlüsselverwaltungKey management
  • DRM-VerschlüsselungspaketerstellungDRM encryption packaging
  • DRM-LizenzbereitstellungDRM license delivery
  • Berechtigungsüberprüfung/ZugriffssteuerungEntitlement check/access control
  • Benutzerauthentifizierung/AutorisierungUser authentication/authorization
  • Player-AppPlayer app
  • Ursprung/Content Delivery Network (CDN)Origin/content delivery network (CDN)

Das folgende Diagramm veranschaulicht die allgemeine Interaktion zwischen den Komponenten in einem DRM-Subsystem:The following diagram illustrates the high-level interaction among the components in a DRM subsystem:

DRM-Subsystem mit CENC

Der Entwurf weist drei grundlegende Ebenen auf:The design has three basic layers:

  • Die Ebene „Backoffice“ (schwarz) wird nicht extern verfügbar gemacht.A back-office layer (black) is not exposed externally.
  • Die Ebene „DMZ“ (dunkelblau) enthält alle Endpunkte, die öffentlich zugänglich sind.A DMZ layer (dark blue) contains all the endpoints that face the public.
  • Die Ebene „Öffentliches Internet“ (hellblau) enthält das CDN und die Player mit Datenverkehr über das öffentliche Internet.A public internet layer (light blue) contains the CDN and players with traffic across the public internet.

Unabhängig von der Verschlüsselung (statisch oder dynamisch) sollte zudem ein Content Management-Tool zum Steuern des DRM-Schutzes vorhanden sein.There also should be a content management tool to control DRM protection, regardless of whether it's static or dynamic encryption. Folgendes ist als Eingabe für die DRM-Verschlüsselung möglich:The inputs for DRM encryption include:

  • MBR-VideoinhalteMBR video content
  • InhaltsschlüsselContent key
  • Lizenzerwerbs-URLsLicense acquisition URLs

Während der Wiedergabe gilt folgender allgemeiner Ablauf:Here's the high-level flow during playback time:

  • Der Benutzer wird authentifiziert.The user is authenticated.
  • Für den Benutzer wird ein Autorisierungstoken erstellt.An authorization token is created for the user.
  • Durch DRM geschützte Inhalte (Manifest) werden in den Player heruntergeladen.DRM protected content (manifest) is downloaded to the player.
  • Der Player sendet zusammen mit der Schlüssel-ID und dem Autorisierungstoken eine Lizenzerwerbsanforderung an den Lizenzserver.The player submits a license acquisition request to license servers together with a key ID and an authorization token.

Im folgenden Abschnitt wird der Entwurf der Schlüsselverwaltung erläutert.The following section discusses the design of key management.

ContentKey-Medienobjekt-VerhältnisContentKey-to-asset SzenarioScenario
1:11-to-1 Der einfachste Fall,The simplest case. der zwar die beste Kontrolle bietet,It provides the finest control. aber im Allgemeinen auch zu den höchsten Kosten für die Lizenzbereitstellung führt.But this arrangement generally results in the highest license delivery cost. Für jedes geschützte Medienobjekt ist mindestens eine Lizenzanforderung erforderlich.At minimum, one license request is required for each protected asset.
1:n1-to-many Derselbe Inhaltsschlüssel kann für mehrere Assets verwendet werden.You could use the same content key for multiple assets. Sie können beispielsweise für alle Medienobjekte in einer logischen Gruppe wie einem Genre oder Teilgenre (oder Filmgenre) einen einzigen Inhaltsschlüssel verwenden.For example, for all the assets in a logical group, such as a genre or the subset of a genre (or movie gene), you can use a single content key.
n:1Many-to-1 Für jedes Asset sind mehrere Inhaltsschlüssel erforderlich.Multiple content keys are needed for each asset.

Wenn Sie z.B. dynamischen CENC-Schutz mit mehreren DRM-Systemen für MPEG-DASH und dynamische AES-128-Verschlüsselung für HLS anwenden müssen, benötigen Sie zwei separate Inhaltsschlüssel.For example, if you need to apply dynamic CENC protection with multi-DRM for MPEG-DASH and dynamic AES-128 encryption for HLS, you need two separate content keys. Jeder Inhaltsschlüssel benötigt ein eigenes ContentKeyType-Element.Each content key needs its own ContentKeyType. (Als Inhaltsschlüssel für den dynamischen CENC-Schutz verwenden Sie ContentKeyType.CommonEncryption.(For the content key used for dynamic CENC protection, use ContentKeyType.CommonEncryption. Als Inhaltsschlüssel für den dynamischen AES-128-Schutz verwenden Sie ContentKeyType.EnvelopeEncryption.)For the content key used for dynamic AES-128 encryption, use ContentKeyType.EnvelopeEncryption.)

Ein weiteres Beispiel: Zum CENC-Schutz von DASH-Inhalten können Sie einen Inhaltsschlüssel zum Schützen des Videostreams und einen anderen Inhaltsschlüssel zum Schützen des Audiostreams einsetzen.As another example, in CENC protection of DASH content, in theory, you can use one content key to protect the video stream and another content key to protect the audio stream.
n:nMany-to-many Eine Kombination der beiden vorherigen Szenarien.Combination of the previous two scenarios. Für jedes Medienobjekt in ein und derselben Medienobjektgruppe wird ein einziger Satz von Inhaltsschlüsseln verwendet.One set of content keys is used for each of the multiple assets in the same asset group.

Ein weiterer wichtiger Faktor ist die Verwendung permanenter und nicht permanenter Lizenzen.Another important factor to consider is the use of persistent and nonpersistent licenses.

Dieser Faktor ist wichtig,Why are these considerations important?

Wenn Sie eine öffentliche Cloud für die Lizenzbereitstellung nutzen, wirkt sich die Verwendung von permanenten und nicht permanenten Lizenzen direkt auf die Kosten für die Lizenzbereitstellung aus.If you use a public cloud for license delivery, persistent and nonpersistent licenses have a direct impact on license delivery cost. Die beiden folgenden Entwurfsmodelle veranschaulichen dies:The following two different design cases serve to illustrate:

  • Monatliches Abonnement: Verwenden Sie eine permanente Lizenz mit einer 1:n-Zuordnung zwischen Inhaltsschlüssel und Medienobjekt.Monthly subscription: Use a persistent license and 1-to-many content key-to-asset mapping. Beispielsweise wird für alle Kinderfilme ein einziger Inhaltsschlüssel für die Verschlüsselung verwendet.For example, for all the kids' movies, we use a single content key for encryption. In diesem Fall:In this case:

    Gesamtanzahl der für alle Kinderfilme pro Gerät angeforderten Lizenzen = 1Total number of licenses requested for all kids' movies/device = 1

  • Monatliches Abonnement: Verwenden Sie eine nicht permanente Lizenz mit einer 1:1-Zuordnung zwischen Inhaltsschlüssel und Medienobjekt.Monthly subscription: Use a nonpersistent license and 1-to-1 mapping between content key and asset. In diesem Fall:In this case:

    Gesamtanzahl der für alle Kinderfilme pro Gerät angeforderten Lizenzen = [Anzahl der konsumierten Filme] × [Anzahl der Sitzungen]Total number of licenses requested for all kids' movies/device = [number of movies watched] x [number of sessions]

Die beiden Entwürfe führen zu sehr unterschiedlichen Mustern für die Lizenzanforderung.The two different designs result in very different license request patterns. Die unterschiedlichen Entwürfe ziehen unterschiedliche Kosten für die Lizenzbereitstellung nach sich, wenn der Lizenzbereitstellungsdienst über eine öffentliche Cloud wie Media Services bereitgestellt wird.The different patterns result in different license delivery cost if license delivery service is provided by a public cloud such as Media Services.

Zuordnen des Entwurfs zur Technologie für die ImplementierungMap design to technology for implementation

Als Nächstes wird der allgemeine Entwurf den Technologien auf der Azure-/Media Services-Plattform zugeordnet, indem angegeben wird, welche Technologie für jeden Baustein verwendet werden soll.Next, the generic design is mapped to technologies on the Azure/Media Services platform by specifying which technology to use for each building block.

Die folgende Tabelle zeigt die Zuordnung.The following table shows the mapping.

BausteinBuilding block TechnologieTechnology
PlayerPlayer Azure Media PlayerAzure Media Player
IdentitätsanbieterIdentity Provider (IDP) Azure Active Directory (Azure AD)Azure Active Directory (Azure AD)
Secure Token Service (STS)Secure Token Service (STS) Azure ADAzure AD
Workflow des DRM-SchutzesDRM protection workflow Dynamischer Schutz in Azure Media ServicesAzure Media Services dynamic protection
DRM-LizenzbereitstellungDRM license delivery * Media Services-Lizenzbereitstellung (PlayReady, Widevine, FairPlay)* Media Services license delivery (PlayReady, Widevine, FairPlay)
* Axinom-Lizenzserver* Axinom license server
* Benutzerdefinierter PlayReady-Lizenzserver* Custom PlayReady license server
UrsprungOrigin Azure Media Services-StreamingendpunktAzure Media Services streaming endpoint
SchlüsselverwaltungKey management Für Referenzimplementierung nicht erforderlichNot needed for reference implementation
Content ManagementContent management C#-KonsolenanwendungA C# console application

Anders gesagt: Sowohl IDP als auch STS werden von Azure AD bereitgestellt.In other words, both IDP and STS are provided by Azure AD. Für den Player wird die Azure Media Player-API.The Azure Media Player API is used for the player. Sowohl Azure Media Services als auch der Azure Media Player unterstützen CENC über DASH, FairPlay über HLS, PlayReady über Smooth Streaming und AES-128-Verschlüsselung für DASH, HLS und Smooth.Both Azure Media Services and Azure Media Player support CENC over DASH, FairPlay over HLS, PlayReady over smooth streaming, and AES-128 encryption for DASH, HLS and smooth.

Das folgende Diagramm zeigt die allgemeine Struktur und den allgemeinen Ablauf bei dieser Technologiezuordnung:The following diagram shows the overall structure and flow with the previous technology mapping:

CENC mit Media Services

Zum Einrichten des DRM-Inhaltsschutzes verwendet das Content Management-Tool die folgenden Eingaben:To set up DRM content protection, the content management tool uses the following inputs:

  • Offene InhalteOpen content
  • Inhaltsschlüssel aus der SchlüsselverwaltungContent key from key management
  • Lizenzerwerbs-URLsLicense acquisition URLs
  • Eine Liste von Informationen aus Azure AD, beispielsweise Zielgruppe, Zertifikataussteller und TokenansprücheA list of information from Azure AD, such as audience, issuer, and token claims

Die Ausgabe des Content Management-Tools sieht wie folgt aus:Here's the output of the content management tool:

  • „ContentKeyPolicy“ beschreibt die DRM-Lizenzvorlage für jede verwendete Art von DRM-System.ContentKeyPolicy describes DRM license template for each kind of DRM used;
  • „ContentKeyPolicyRestriction“ beschreibt die Zugriffssteuerung vor dem Ausstellen einer DRM-Lizenz.ContentKeyPolicyRestriction describes the access control before a DRM license is issued
  • „Streamingpolicy“ beschreibt die verschiedenen DRM-Kombinationen (Verschlüsselungsmodus, Streamingprotokoll, Containerformat) für das Streaming.Streamingpolicy describes the various combinations of DRM - encryption mode - streaming protocol - container format, for streaming
  • „StreamingLocator“ beschreibt den für die Verschlüsselung verwendeten Inhaltsschlüssel/IV und Streaming-URLs.StreamingLocator describes content key/IV used for encryption, and streaming URLs

So sieht der Ablauf zur Laufzeit aus:Here's the flow during runtime:

  • Bei der Benutzerauthentifizierung wird ein JWT generiert.Upon user authentication, a JWT is generated.
  • Einer der im JWT enthaltenen Ansprüche ist ein Gruppenanspruch, der die Gruppenobjekt-ID „EntitledUserGroup“ enthält.One of the claims contained in the JWT is a groups claim that contains the group object ID EntitledUserGroup. Dieser Anspruch wird verwendet, um die Berechtigungsüberprüfung zu bestehen.This claim is used to pass the entitlement check.
  • Der Player lädt das Clientmanifest von über CENC geschützten Inhalten herunter und identifiziert folgende Elemente:The player downloads the client manifest of CENC-protected content and identifies the following:
    • Schlüssel-IDKey ID.
    • Schutz des Inhalts durch DRMThe content is DRM protected.
    • Lizenzerwerbs-URLsLicense acquisition URLs.
  • Der Player sendet eine Lizenzerwerbsanforderung basierend auf dem unterstützten Browser/DRM-System.The player makes a license acquisition request based on the browser/DRM supported. In der Lizenzerwerbsanforderung werden auch die Schlüssel-ID und das JWT übermittelt.In the license acquisition request, the key ID and the JWT are also submitted. Der Lizenzbereitstellungsdienst überprüft das JWT und die enthaltenen Ansprüche, bevor die benötige Lizenz ausgestellt wird.The license delivery service verifies the JWT and the claims contained before it issues the needed license.

ImplementierungImplementation

ImplementierungsverfahrenImplementation procedures

Die Implementierung umfasst die folgenden Schritte:Implementation includes the following steps:

  1. Bereiten Sie Testmedienobjekte vor.Prepare test assets. Codieren/packen Sie ein Testvideo in einer fragmentierten MP4-Datei mit mehreren Bitraten in Media Services.Encode/package a test video to multi-bitrate fragmented MP4 in Media Services. Dieses Medienobjekt ist nicht durch DRM geschützt.This asset is not DRM protected. Der DRM-Schutz erfolgt später dynamisch.DRM protection is done by dynamic protection later.

  2. Erstellen Sie eine Schlüssel-ID und einen Inhaltsschlüssel (optional aus einem Schlüsselausgangswert).Create a key ID and a content key (optionally from a key seed). An dieser Stelle wird das Schlüsselverwaltungssystem nicht benötigt, da für einige wenige Testmedienobjekte nur eine einzige Schlüssel-ID und ein einziger Inhaltsschlüssel erforderlich sind.In this instance, the key management system isn't needed because only a single key ID and content key are required for a couple of test assets.

  3. Verwenden Sie die Media Services-API, um für das Testmedienobjekt Lizenzbereitstellungsdienste für mehrere DRM-Systeme zu konfigurieren.Use the Media Services API to configure multi-DRM license delivery services for the test asset. Wenn Sie anstelle der Lizenzdienste in Media Services benutzerdefinierte Lizenzserver verwenden, die von Ihrem Unternehmen oder einem Partner Ihres Unternehmens bereitgestellt wurden, können Sie diesen Schritt überspringen.If you use custom license servers by your company or your company's vendors instead of license services in Media Services, you can skip this step. In diesem Fall können Sie Lizenzerwerbs-URLs beim Konfigurieren der Lizenzbereitstellung angeben.You can specify license acquisition URLs in the step when you configure license delivery. Die Media Services-API ist erforderlich, um einige detaillierte Konfigurationsoptionen anzugeben, z.B. die Einschränkung von Autorisierungsrichtlinien sowie Lizenzbereitstellungsvorlagen für verschiedene DRM-Lizenzdienste.The Media Services API is needed to specify some detailed configurations, such as authorization policy restriction and license response templates for different DRM license services. Das Azure-Portal bietet derzeit nicht die für diese Konfiguration erforderliche Benutzeroberfläche.At this time, the Azure portal doesn't provide the needed UI for this configuration. Informationen und Beispielcode für die API finden Sie unter Verwenden von dynamischer allgemeiner Verschlüsselung mit PlayReady und/oder Widevine.For API-level information and sample code, see Use PlayReady and/or Widevine dynamic common encryption.

  4. Konfigurieren Sie mithilfe der Media Services-API die Bereitstellungsrichtlinie für das Testmedienobjekt.Use the Media Services API to configure the asset delivery policy for the test asset. Informationen und Beispielcode für die API finden Sie unter Verwenden von dynamischer allgemeiner Verschlüsselung mit PlayReady und/oder Widevine.For API-level information and sample code, see Use PlayReady and/or Widevine dynamic common encryption.

  5. Erstellen und konfigurieren Sie einen Azure AD-Mandanten in Azure.Create and configure an Azure AD tenant in Azure.

  6. Erstellen Sie einige Benutzerkonten und Gruppen in Ihrem Azure AD-Mandanten.Create a few user accounts and groups in your Azure AD tenant. Erstellen Sie mindestens eine Gruppe mit berechtigten Benutzern, und fügen Sie dieser Gruppe einen Benutzer hinzu.Create at least an "Entitled User" group, and add a user to this group. Benutzer in dieser Gruppe bestehen die Berechtigungsüberprüfung beim Lizenzerwerb.Users in this group pass the entitlement check in license acquisition. Benutzer, die sich nicht in dieser Gruppe befinden, bestehen die Authentifizierungsprüfung nicht und können keine Lizenz erwerben.Users not in this group fail to pass the authentication check and can't acquire a license. Die Mitgliedschaft in dieser Gruppe mit berechtigten Benutzern ist ein erforderlicher Gruppenanspruch im von Azure AD ausgestellten JWT.Membership in this "Entitled User" group is a required groups claim in the JWT issued by Azure AD. Sie geben diese Anspruchsanforderung in dem Schritt an, in dem Sie die Dienste zur Bereitstellung mehrerer DRM-Lizenzen konfigurieren.You specify this claim requirement in the step when you configure multi-DRM license delivery services.

  7. Erstellen Sie eine ASP.NET MVC-App, um Ihren Videoplayer zu hosten.Create an ASP.NET MVC app to host your video player. Diese ASP.NET-App wird per Benutzerauthentifizierung beim Azure AD-Mandanten geschützt.This ASP.NET app is protected with user authentication against the Azure AD tenant. Nach der Benutzerauthentifizierung bezogene Zugriffstoken enthalten ordnungsgemäße Ansprüche.Proper claims are included in the access tokens obtained after user authentication. Für diesen Schritt empfiehlt sich die OpenID Connect-API.We recommend OpenID Connect API for this step. Installieren Sie die folgenden NuGet-Pakete:Install the following NuGet packages:

    • Install-Package Microsoft.Azure.ActiveDirectory.GraphClientInstall-Package Microsoft.Azure.ActiveDirectory.GraphClient
    • Install-Package Microsoft.Owin.Security.OpenIdConnectInstall-Package Microsoft.Owin.Security.OpenIdConnect
    • Install-Package Microsoft.Owin.Security.CookiesInstall-Package Microsoft.Owin.Security.Cookies
    • Install-Package Microsoft.Owin.Host.SystemWebInstall-Package Microsoft.Owin.Host.SystemWeb
    • Install-Package Microsoft.IdentityModel.Clients.ActiveDirectoryInstall-Package Microsoft.IdentityModel.Clients.ActiveDirectory
  8. Erstellen Sie mithilfe der Azure Media Player-API einen Player.Create a player by using the Azure Media Player API. Verwenden Sie die ProtectionInfo-API von Azure Media Player, um anzugeben, welche DRM-Technologie auf unterschiedlichen DRM-Plattformen verwendet werden soll.Use the Azure Media Player ProtectionInfo API to specify which DRM technology to use on different DRM platforms.

  9. Die folgende Tabelle zeigt die Zuordnung für das Testsystem.The following table shows the test matrix.

    DRM-SystemDRM BrowserBrowser Ergebnis für berechtigten BenutzerResult for entitled user Ergebnis für nicht berechtigten BenutzerResult for unentitled user
    PlayReadyPlayReady Microsoft Edge oder Internet Explorer 11 unter Windows 10Microsoft Edge or Internet Explorer 11 on Windows 10 ErfolgSucceed FehlerFail
    WidevineWidevine Chrome, Firefox, OperaChrome, Firefox, Opera ErfolgSucceed FehlerFail
    FairPlayFairPlay Safari unter macOSSafari on macOS ErfolgSucceed FehlerFail
    AES-128AES-128 Meisten modernen BrowserMost modern browsers ErfolgSucceed FehlerFail

Informationen zum Einrichten von Azure AD für einen ASP.NET MVC-Player finden Sie unter Integrate an Azure Media Services OWIN MVC-based app with Azure Active Directory and restrict content key delivery based on JWT claims (Integrieren einer Azure Media Services-OWIN MVC-basierten App in Azure Active Directory und Einschränken der Übermittlung von Inhaltsschlüsseln auf Grundlage von JWT-Ansprüchen).For information on how to set up Azure AD for an ASP.NET MVC player app, see Integrate an Azure Media Services OWIN MVC-based app with Azure Active Directory and restrict content key delivery based on JWT claims.

Weitere Informationen finden Sie unter JWT token authentication in Azure Media Services and dynamic encryption (JWT-Authentifizierung in Azure Media Services und dynamische Verschlüsselung).For more information, see JWT token authentication in Azure Media Services and dynamic encryption.

Informationen zu Azure AD:For information on Azure AD:

Mögliche Probleme bei der ImplementierungSome issues in implementation

Falls bei der Implementierung Probleme auftreten, verwenden Sie die folgenden Informationen zur Behandlung dieser Probleme.Use the following troubleshooting information for help with implementation issues.

  • Die Aussteller-URL muss auf „/“ enden.The issuer URL must end with "/". Die Zielgruppe muss die Anwendungsclient-ID des Players sein.The audience must be the player application client ID. Fügen Sie hier ebenfalls einen Schrägstrich („/“) am Ende der Aussteller-URL ein.Also, add "/" at the end of the issuer URL.

      <add key="ida:audience" value="[Application Client ID GUID]" />
      <add key="ida:issuer" value="https://sts.windows.net/[AAD Tenant ID]/" />
    

    Im JWT-Decoder sollten aud und iss wie im JWT angezeigt werden:In the JWT Decoder, you see aud and iss, as shown in the JWT:

    JWT

  • Fügen Sie in Azure AD (auf der Registerkarte Konfigurieren der Anwendung) Berechtigungen für die Anwendung hinzu.Add permissions to the application in Azure AD on the Configure tab of the application. Berechtigungen sind für jede Anwendung erforderlich, sowohl für lokale als auch für bereitgestellte Versionen.Permissions are required for each application, both local and deployed versions.

    Berechtigungen

  • Verwenden Sie den richtigen Aussteller, wenn Sie den dynamischen CENC-Schutz einrichten.Use the correct issuer when you set up dynamic CENC protection.

      <add key="ida:issuer" value="https://sts.windows.net/[AAD Tenant ID]/"/>
    

    Folgendes funktioniert nicht:The following doesn't work:

      <add key="ida:issuer" value="https://willzhanad.onmicrosoft.com/" />
    

    Bei der GUID handelt es sich um die Azure AD-Mandanten-ID.The GUID is the Azure AD tenant ID. Sie finden die GUID im Azure-Portal im Popupmenü Endpunkte.The GUID can be found in the Endpoints pop-up menu in the Azure portal.

  • Erteilen Sie Berechtigungen in Form von Gruppenmitgliedschaftsansprüchen.Grant group membership claims privileges. Vergewissern Sie sich, dass die Azure AD-Anwendungsmanifestdatei Folgendes enthält:Make sure the following is in the Azure AD application manifest file:

    "groupMembershipClaims": "All" (Standardwert ist „null“)"groupMembershipClaims": "All" (the default value is null)

  • Legen Sie beim Erstellen der Einschränkungsanforderungen den richtigen TokenType fest.Set the proper TokenType when you create restriction requirements.

      objTokenRestrictionTemplate.TokenType = TokenType.JWT;
    

    Da Sie zusätzlich zu SWT (ACS) Unterstützung für JWT (Azure AD) hinzufügen, ist „TokenType.JWT“ der standardmäßige TokenType.Because you add support for JWT (Azure AD) in addition to SWT (ACS), the default TokenType is TokenType.JWT. Wenn Sie SWT/ACS verwenden, müssen Sie „TokenType.SWT“ festlegen.If you use SWT/ACS, you must set the token to TokenType.SWT.

Das fertige System und TestsThe completed system and test

Dieser Abschnitt beschreibt die folgenden Szenarien im fertig gestellten, vollständigen System, sodass Sie sich ein grundlegendes Bild des Verhaltens machen können, bevor Sie ein Anmeldekonto erhalten:This section walks you through the following scenarios in the completed end-to-end system so that you can have a basic picture of the behavior before you get a sign-in account:

  • Wenn Sie ein nicht integriertes Szenario benötigen:If you need a non-integrated scenario:

    • Bei in Media Services gehosteten Videomedienobjekten, die entweder nicht geschützt oder per DRM, aber ohne Tokenauthentifizierung geschützt sind (hierbei wird eine Lizenz an jeden Anforderer ausgestellt), können Sie die Tests ohne Anmeldung durchführen.For video assets hosted in Media Services that are either unprotected or DRM protected but without token authentication (issuing a license to whoever requested it), you can test it without signing in. Wechseln Sie HTTP, wenn Ihr Videostreaming über HTTP erfolgt.Switch to HTTP if your video streaming is over HTTP.
  • Wenn Sie ein umfassendes, integriertes Szenario benötigen:If you need an end-to-end integrated scenario:

    • Bei Videomedienobjekten mit dynamischem DRM-Schutz in Media Services, bei denen die Tokenauthentifizierung und JWT-Generierung in Azure AD erfolgt, müssen Sie sich anmelden.For video assets under dynamic DRM protection in Media Services, with the token authentication and JWT generated by Azure AD, you need to sign in.

Informationen zur Player-Webanwendung und den entsprechenden Anmeldevoraussetzungen finden Sie auf dieser Website.For the player web application and its sign-in, see this website.

BenutzeranmeldungUser sign-in

Um das vollständige, integrierte DRM-System zu testen, müssen Sie ein Konto erstellen oder hinzufügen.To test the end-to-end integrated DRM system, you need to have an account created or added.

Welches Konto wird benötigt?What account?

Azure erlaubte ursprünglich nur den Zugriff durch Benutzer mit Microsoft-Konten. Inzwischen ist der Zugriff aus beiden Systemen zulässig.Although Azure originally allowed access only by Microsoft account users, access is now allowed by users from both systems. Alle Azure-Eigenschaften vertrauen bei der Authentifizierung jetzt Azure AD, und Azure AD authentifiziert Organisationsbenutzer.All Azure properties now trust Azure AD for authentication, and Azure AD authenticates organizational users. Es wurde eine Verbundbeziehung erstellt, bei der Azure AD das Endbenutzeridentitätssystem für Microsoft-Konten als vertrauenswürdig für die Authentifizierung der Endbenutzer einstuft.A federation relationship was created where Azure AD trusts the Microsoft account consumer identity system to authenticate consumer users. Daher kann Azure AD Microsoft-Gastkonten ebenso authentifizieren wie native Azure AD-Konten.As a result, Azure AD can authenticate guest Microsoft accounts as well as native Azure AD accounts.

Da Azure AD der Microsoft-Kontodomäne vertraut, können Sie jedes Konto aus den folgenden Domänen zum benutzerdefinierten Azure AD-Mandanten hinzufügen und für die Anmeldung verwenden:Because Azure AD trusts the Microsoft account domain, you can add any accounts from any of the following domains to the custom Azure AD tenant and use the account to sign in:

DomänennameDomain name DomäneDomain
Benutzerdefinierte Azure AD-MandantendomäneCustom Azure AD tenant domain somename.onmicrosoft.comsomename.onmicrosoft.com
UnternehmensdomäneCorporate domain microsoft.commicrosoft.com
Microsoft-KontodomäneMicrosoft account domain outlook.com, live.com, hotmail.comoutlook.com, live.com, hotmail.com

Sie können einen der Anbieter kontaktieren und bitten, ein Konto für Sie zu erstellen oder hinzuzufügen.You can contact any of the authors to have an account created or added for you.

Die folgenden Screenshots zeigen verschiedene Anmeldeseiten, die von verschiedenen Domänenkonten verwendet werden:The following screenshots show different sign-in pages used by different domain accounts:

Benutzerdefiniertes Azure AD-Mandantendomänenkonto: Die angepasste Anmeldeseite der benutzerdefinierten Azure AD-Mandantendomäne.Custom Azure AD tenant domain account: The customized sign-in page of the custom Azure AD tenant domain.

Benutzerdefiniertes Azure AD-Mandantendomänenkonto 1

Microsoft-Domänenkonto mit Smartcard: Die von der IT-Abteilung von Microsoft angepasste Anmeldeseite mit zweistufiger Authentifizierung.Microsoft domain account with smart card: The sign-in page customized by Microsoft corporate IT with two-factor authentication.

Benutzerdefiniertes Azure AD-Mandantendomänenkonto 2

Microsoft-Konto: Die Anmeldeseite des Microsoft-Kontos für Endbenutzer.Microsoft account: The sign-in page of the Microsoft account for consumers.

Benutzerdefiniertes Azure AD-Mandantendomänenkonto 3

Verwenden von Encrypted Media Extensions für PlayReadyUse Encrypted Media Extensions for PlayReady

In einem modernen Browser mit Encrypted Media Extensions (EME) für die PlayReady-Unterstützung, z.B. Internet Explorer 11 unter Windows 8.1 oder höher sowie Microsoft Edge unter Windows 10, ist PlayReady das zugrunde liegende DRM-System für EME.On a modern browser with Encrypted Media Extensions (EME) for PlayReady support, such as Internet Explorer 11 on Windows 8.1 or later and Microsoft Edge browser on Windows 10, PlayReady is the underlying DRM for EME.

Verwenden von EME für PlayReady

Der dunkle Playerbereich ist darauf zurückzuführen, dass der PlayReady-Schutz verhindert, dass eine Bildschirmaufnahme von geschützten Videoinhalten erstellt wird.The dark player area is because PlayReady protection prevents you from making a screen capture of protected video.

Der folgende Screenshot zeigt die Player-Plug-Ins sowie die Unterstützung für Microsoft Security Essentials (MSE) und EME:The following screenshot shows the player plug-ins and Microsoft Security Essentials (MSE)/EME support:

Player-Plug-Ins für PlayReady

EME in Microsoft Edge und Internet Explorer 11 unter Windows 10 erlaubt den Aufruf von PlayReady SL3000 auf Windows 10-Geräten, die dies unterstützen.EME in Microsoft Edge and Internet Explorer 11 on Windows 10 allows PlayReady SL3000 to be invoked on Windows 10 devices that support it. PlayReady SL3000 ermöglicht erweiterte Premiuminhalte (4K, HDR) und neue Modelle für die Inhaltsbereitstellung (für erweiterte Inhalte).PlayReady SL3000 unlocks the flow of enhanced premium content (4K, HDR) and new content delivery models (for enhanced content).

Bei Windows-Geräten ist PlayReady das einzige in die Hardware integrierte DRM-System, das auf Windows-Geräten verfügbar ist (PlayReady SL3000).To focus on the Windows devices, PlayReady is the only DRM in the hardware available on Windows devices (PlayReady SL3000). Ein Streamingdienst kann PlayReady über EME oder über eine UWP-Anwendung (Universelle Windows-Plattform) nutzen und mit PlayReady SL3000 eine höhere Videoqualität als mit anderen DRM-Systemen bieten.A streaming service can use PlayReady through EME or through a Universal Windows Platform application and offer a higher video quality by using PlayReady SL3000 than another DRM. Üblicherweise werden Inhalte bis 2K über Chrome oder Firefox und Inhalte bis 4K über Microsoft Edge/Internet Explorer 11 oder eine UWP-Anwendung auf dem gleichen Gerät gestreamt.Typically, content up to 2K flows through Chrome or Firefox, and content up to 4K flows through Microsoft Edge/Internet Explorer 11 or a Universal Windows Platform application on the same device. Die Menge richtet sich nach Diensteinstellungen und Implementierung.The amount depends on service settings and implementation.

Verwenden von EME für WidevineUse EME for Widevine

In einem modernen Browser mit EME/Widevine-Unterstützung, z. B. Chrome 41 und höher unter Windows 10, Windows 8.1, Mac OSX Yosemite und Chrome unter Android 4.4.4, ist Google Widevine das DRM-System hinter EME.On a modern browser with EME/Widevine support, such as Chrome 41+ on Windows 10, Windows 8.1, Mac OSX Yosemite, and Chrome on Android 4.4.4, Google Widevine is the DRM behind EME.

Verwenden von EME für Widevine

Widevine verhindert nicht, dass Bildschirmaufnahmen von geschützten Videoinhalten erstellt werden.Widevine doesn't prevent you from making a screen capture of protected video.

Player-Plug-Ins für Widevine

Verwenden von EME für FairPlayUse EME for FairPlay

Auf ähnliche Weise können Sie durch FairPlay geschützte Inhalte in diesem Testplayer in Safari unter macOS oder iOS 11.2 und höher testen.Similarly, you can test FairPlay protected content in this test player in Safari on macOS or iOS 11.2 and later.

Achten Sie darauf, dass Sie „FairPlay“ als „protectionInfo.type“ und die richtige URL für Ihr Anwendungszertifikat als Zertifikatpfad der FairPlay-Streaminganwendung (FPS AC Path) angeben.Make sure you put "FairPlay" as protectionInfo.type and put in the right URL for your Application Certificate in FPS AC Path (FairPlay Streaming Application Certificate Path).

Nicht berechtigte BenutzerUnentitled users

Wenn ein Benutzer kein Mitglied der Gruppe der berechtigten Benutzer ist, besteht er die Berechtigungsüberprüfung nicht.If a user isn't a member of the "Entitled Users" group, the user doesn't pass the entitlement check. Der Lizenzdienst für mehrere DRM-Systeme stellt die angeforderte Lizenz nicht aus, wie unten gezeigt.The multi-DRM license service then refuses to issue the requested license as shown. In der Beschreibung wird angezeigt, dass die Lizenz nicht erfolgreich erworben werden konnte. Dies ist das gewünschte Verhalten.The detailed description is "License acquire failed," which is as designed.

Nicht berechtigte Benutzer

Ausführen einen benutzerdefinierten SicherheitstokendienstsRun a custom security token service

Wenn Sie einen benutzerdefinierten Sicherheitstokendienst ausführen, wird das JWT von diesem Dienst entweder über einen symmetrischen oder einen asymmetrischen Schlüssel ausgestellt.If you run a custom STS, the JWT is issued by the custom STS by using either a symmetric or an asymmetric key.

Der folgende Screenshot zeigt ein Szenario mit einem symmetrischen Schlüssel (in Chrome):The following screenshot shows a scenario that uses a symmetric key (using Chrome):

Benutzerdefinierter Sicherheitstokendienst mit symmetrischem Schlüssel

Der folgende Screenshot zeigt ein Szenario mit einem asymmetrischen Schlüssel über ein X.509-Zertifikat (in einem modernen Microsoft-Browser):The following screenshot shows a scenario that uses an asymmetric key via an X509 certificate (using a Microsoft modern browser):

Benutzerdefinierter Sicherheitstokendienst mit asymmetrischem Schlüssel

In beiden oben genannten Fällen ist die Benutzerauthentifizierung die gleiche.In both of the previous cases, user authentication stays the same. Sie erfolgt über Azure AD.It takes place through Azure AD. Der einzige Unterschied ist, dass JWTs vom benutzerdefinierten Sicherheitstokendienst anstatt von Azure AD ausgestellt werden.The only difference is that JWTs are issued by the custom STS instead of Azure AD. Beim Konfigurieren des dynamischen CENC-Schutzes bestimmt die Einschränkung des Lizenzbereitstellungsdiensts, welche Art JWT verwendet wird: entweder ein symmetrischer oder ein asymmetrischer Schlüssel.When you configure dynamic CENC protection, the license delivery service restriction specifies the type of JWT, either a symmetric or an asymmetric key.

Nächste SchritteNext steps