Verwenden der DRMAuthenticateEvent-Klasse

Adobe AIR 1.0 und höher

Das DRMAuthenticateEvent-Objekt wird ausgelöst, wenn ein NetStream-Objekt versucht, geschützten Inhalt wiederzugeben, für den vor der Wiedergabe eine Benutzeranmeldung zur Authentifizierung erforderlich ist.

Die DRMAuthenticateEvent-Prozedur ist zuständig für das Sammeln der erforderlichen Benutzerdaten (Benutzername, Kennwort und Typ) und die Übergabe der Werte an die NetStream.setDRMAuthenticationCredentials() -Methode zur Validierung. Jede AIR-Anwendung muss einen Mechanismus zur Verfügung stellen, mit dem die Benutzerinformationen erhalten werden. Beispielsweise kann eine Anwendung eine einfache Oberfläche enthalten, über die der Benutzer seinen Benutzernamen und sein Kennwort eingeben kann. Stellen Sie auch einen Mechanismus zum Verarbeiten und Beschränken wiederholter Authentifizierungsversuche bereit.

DRMAuthenticateEvent-Eigenschaften

Die Klasse DRMAuthenticateEvent umfasst die folgenden Eigenschaften:

Eigenschaft

Beschreibung

authenticationType

Gibt an, ob die angegebenen Benutzerinformationen für die Authentifizierung durch Adobe Access („drm“) oder einen Proxyserver („proxy“) bestimmt sind. Die proxy-Option ermöglicht der Anwendung zum Beispiel die Authentifizierung über einen Proxyserver, sofern erforderlich, bevor der Benutzer Zugriff auf das Internet hat. Sofern keine anonyme Authentifizierung verwendet wird, muss sich der Benutzer nach der Proxyauthentifizierung immer noch für Adobe Access authentifizieren, um den Gutschein zu erhalten und den Inhalt abzuspielen. Sie können setDRMAuthenticationcredentials() ein zweites Mal verwenden, mit der drm-Option, um die Authentifizierung für Adobe Access auszuführen.

header

Der verschlüsselte Inhaltsdateiheader, der vom Server bereitgestellt wird. Er enthält Informationen über den Kontext der verschlüsselten Inhalte.

Dieser Headerstring kann an die Flash-Anwendung übergeben werden, damit die Anwendung ein Dialogfeld für Benutzernamen und Kennwort konstruieren kann. Der Headerstring kann für Dialogfeldanleitungen verwendet werden. Der Header könnte zum Beispiel lauten: „Bitte geben Sie Ihren Benutzernamen und Ihr Kennwort ein“.

netstream

Das NetStream-Objekt, das dieses Ereignis eingeleitet hat.

passwordPrompt

Eine vom Server bereitgestellte Eingabeaufforderung für das Kennwort. Der String kann Anweisungen enthalten, die den erforderlichen Typ des Kennworts betreffen.

urlPrompt

Eine vom Server bereitgestellte Eingabeaufforderung für eine URL. Der String kann angeben, wohin Benutzername und Kennwort gesendet werden.

usernamePrompt

Eine vom Server bereitgestellte Eingabeaufforderung für den Benutzernamen. Der String kann Anweisungen enthalten, die den erforderlichen Typ des Benutzernamens betreffen. Ein Content-Provider könnte zum Beispiel eine E-Mail-Adresse als Benutzernamen verlangen.

Die zuvor erwähnten Strings werden nur vom FMRMS-Server bereitgestellt. Adobe Access Server verwendet diese Strings nicht.

Erstellen von DRMAuthenticateEvent-Prozeduren

Im folgenden Beispiel wird eine Ereignisprozedur erstellt, mit der ein Satz hartkodierter Authentifizierungsinformationen an das NetStream-Objekt gesendet werden, welches das Ereignis auslöste. (Der Code für das Abspielen des Videos und zur Überprüfung der Verbindung zum Videostream werden hier nicht angegeben.)

var connection:NetConnection = new NetConnection(); 
connection.connect(null); 
 
var videoStream:NetStream = new NetStream(connection); 
 
videoStream.addEventListener(DRMAuthenticateEvent.DRM_AUTHENTICATE, 
                            drmAuthenticateEventHandler) 
 
private function drmAuthenticateEventHandler(event:DRMAuthenticateEvent):void  
{ 
    videoStream.setDRMAuthenticationCredentials("administrator", "password", "drm"); 
} 

Erstellen von Oberflächen für die Eingabe von Benutzerinformationen

Wenn für geschützte Inhalte eine Authentifizierung der Benutzerinformationen erforderlich ist, muss die AIR-Anwendung diese Informationen in der Regel über eine Benutzeroberfläche vom Benutzer einholen.

Im Folgenden wird ein Flex-Beispiel für eine einfache Benutzeroberfläche für das Einholen von Benutzerinformationen dargestellt. Es besteht aus einem Bedienfeldobjekt, das zwei TextInput-Objekte umfasst, eines für den Benutzernamen und eines für das Kennwort. Außerdem enthält das Bedienfeld eine Schaltfläche, mit der die Methode credentials() gestartet wird.

<mx:Panel x="236.5" y="113" width="325" height="204" layout="absolute" title="Login"> 
    <mx:TextInput x="110" y="46" id="uName"/> 
    <mx:TextInput x="110" y="76" id="pWord" displayAsPassword="true"/> 
    <mx:Text x="35" y="48" text="Username:"/> 
    <mx:Text x="35" y="78" text="Password:"/> 
    <mx:Button x="120" y="115" label="Login" click="credentials()"/> 
</mx:Panel>

credentials() ist eine benutzerdefinierte Methode, die die Werte für den Benutzernamen und das Kennwort an die setDRMAuthenticationCredentials() -Methode übergibt. Sobald die Werte übergeben wurden, setzt die credentials() -Methode die Werte der TextInput-Objekte zurück.

<mx:Script> 
    <![CDATA[ 
        public function credentials():void  
        { 
            videoStream.setDRMAuthenticationCredentials(uName, pWord, "drm"); 
            uName.text = ""; 
            pWord.text = ""; 
        } 
    ]]> 
</mx:Script>

Ein Verfahren zur Implementierung einer solchen einfachen Benutzeroberfläche ist die Aufnahme des Bedienfelds als Teil eines neuen Zustands. Der neue Zustand löst den Grundzustand ab, wenn das DRMAuthenticateEvent-Objekt ausgelöst wird. Das folgende Beispiel enthält ein VideoDisplay-Objekt mit einem Quellattribut, das auf eine geschützte FLV-Datei verweist. In diesem Fall wird die credentials() -Methode so modifiziert, dass sie auch die Anwendung in den Grundzustand zurückversetzt, und zwar nach dem Übergeben der Benutzerinformationen und Zurücksetzen der Werte für das TextInput-Objekt.

<?xml version="1.0" encoding="utf-8"?> 
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" 
    layout="absolute" 
    width="800" 
    height="500" 
    title="DRM FLV Player" 
    creationComplete="initApp()" > 
 
    <mx:states> 
        <mx:State name="LOGIN"> 
            <mx:AddChild position="lastChild"> 
                    <mx:Panel x="236.5" y="113" width="325" height="204" layout="absolute"  
                            title="Login"> 
                    <mx:TextInput x="110" y="46" id="uName"/> 
                    <mx:TextInput x="110" y="76" id="pWord" displayAsPassword="true"/> 
                    <mx:Text x="35" y="48" text="Username:"/> 
                    <mx:Text x="35" y="78" text="Password:"/> 
                    <mx:Button x="120" y="115" label="Login" click="credentials()"/> 
                    <mx:Button x="193" y="115" label="Reset" click="uName.text='';  
                            pWord.text='';"/> 
                </mx:Panel> 
            </mx:AddChild> 
        </mx:State> 
    </mx:states> 
 
    <mx:Script> 
        <![CDATA[ 
                import flash.events.DRMAuthenticateEvent; 
            private function initApp():void  
            { 
                videoStream.addEventListener(DRMAuthenticateEvent.DRM_AUTHENTICATE, 
                                        drmAuthenticateEventHandler); 
            } 
 
            public function credentials():void  
            { 
                videoStream.setDRMAuthenticationCredentials(uName, pWord, "drm"); 
                uName.text = ""; 
                pWord.text = ""; 
                currentState=''; 
            } 
 
            private function drmAuthenticateEventHandler(event:DRMAuthenticateEvent):void  
            { 
                currentState='LOGIN'; 
            } 
        ]]> 
    </mx:Script> 
     
    <mx:VideoDisplay id="video" x="50" y="25" width="700" height="350" 
        autoPlay="true" 
        bufferTime="10.0" 
        source="http://www.example.com/flv/Video.flv" /> 
</mx:WindowedApplication>