Använda klassen DRMAuthenticateEvent

Adobe AIR 1.0 och senare

DRMAuthenticateEvent-objektet skickas när ett NetStream-objekt försöker att spela upp skyddat innehåll som kräver inloggningsuppgifter för autentisering före uppspelning.

DRMAuthenticateEvent-hanteraren samlar in nödvändiga inloggningsuppgifter (som användarnamn, lösenord och typ) och skickar värdena till NetStream.setDRMAuthenticationCredentials() -metoden för verifiering. Varje AIR-program måste ha en funktion som erhåller inloggningsuppgifter. Programmet kan till exempel ha ett enkelt användargränssnitt där användaren kan ange sitt användarnamn och lösenord. Ha också med en funktion för hantering och begränsning av upprepade autentiseringsförsök.

DRMAuthenticateEvent-egenskaper

Klassen DRMAuthenticateEvent innehåller följande egenskaper:

Egenskap

Beskrivning

authenticationType

Anger om inloggningsuppgifterna gäller för autentisering mot Adobe Access (drm) eller en proxyserver (proxy). Proxyalternativet innebär till exempel att programmet autentiserar mot en proxyserver om det krävs innan användaren kan börja använda Internet. Om inte anonym autentisering används måste användaren fortfarande autentisera mot Adobe Access efter proxyautentiseringen för att få vouchern och spela upp innehållet. Du kan använda setDRMAuthenticationcredentials() en andra gång med "drm"-alternativet för att autentisera mot Adobe Access.

huvud

Filhuvudet med krypterat innehåll som tillhandahålls av servern. Det innehåller information om det krypterade innehållet.

Denna rubriksträng kan skickas vidare till ett Flash-program för att få programmet att skapa en dialogruta för användarnamn och lösenord. Rubriksträngen kan användas som instruktion i dialogrutan. Rubriken kan till exempel vara "Ange ditt användarnamn och lösenord".

netstream

NetStream-objektet som initierade den här händelsen.

passwordPrompt

En uppmaning om ett lösenord, tillhandahålls av servern. Strängen kan innehålla instruktioner för det lösenord som krävs.

urlUppmaning

Ett kommando för en URL tillhandahålls av servern. Strängen kan ange platsen dit användarnamnet och lösenordet ska skickas.

usernamePrompt

En uppmaning för ett användarnamn; tillhandahålls av servern. Strängen kan innehålla instruktioner för det användarnamn som krävs. Innehållsleverantören kan till exempel kräva en e-postadress som användarnamn.

De tidigare nämnda strängarna tillhandahålls endast av FMRMS-servern. I Adobe Access Server används inte dessa strängar.

Skapa en DRMAuthenticateEvent-hanterare

I följande exempel skapas en händelsehanterare som skickar en uppsättning hårdkodade inloggningsuppgifter till NetStream-objektet som utlöste händelsen. (Koden för att spela upp videofilmen och säkerställa anslutningen till videoströmmen tas inte med här.)

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"); 
} 

Skapa ett gränssnitt för att hämta inloggningsuppgifter

Om det skyddade innehållet kräver användarautentisering måste AIR-programmet vanligtvis hämta användarens inloggningsuppgifter via ett användargränssnitt.

Nedan finns ett Flex-exempel på ett enkelt gränssnitt som hämtar inloggningsuppgifter. Det består av ett panelobjekt som innehåller två TextInput-objekt, ett för användarnamnet och ett för lösenordet. Panelen innehåller också en knapp som startar metoden credentials() .

<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>

Metoden credentials() är en användardefinierad metod som skickar värdena för användarnamnet och lösenordet till metoden setDRMAuthenticationCredentials() . När värdena har skickats återställer metoden credentials() värdena på TextInput-objekten.

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

Ett sätt att implementera den här typen av enkelt gränssnitt är att inkludera panelen i ett nytt läge. Det nya läget bygger på grundläget när DRMAuthenticateEvent-objektet skapas. Följande exempel innehåller ett VideoDisplay-objekt med ett källattribut som pekar på en skyddad FLV-fil. I det här fallet ändras metoden credentials() så att den även returnerar programmet till grundläget. Metoden gör det efter att användarens inloggningsuppgifter har skickats och värdena för TextInput-objektet har återställts.

<?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>