De klasse DRMAuthenticateEvent gebruiken

Adobe AIR 1.0 of hoger

Het DRMAuthenticateEvent-object wordt verzonden wanneer een NetStream-object beveiligde inhoud wil afspelen waarvoor gebruikersverificatie is vereist voordat de inhoud kan worden afgespeeld.

De DRMAuthenticateEvent-handler verzamelt de vereiste gegevens (gebruikersnaam, wachtwoord en type) en geeft deze waarden voor verificatie door aan de methode NetStream.setDRMAuthenticationCredentials() . Elke AIR-toepassing moet over een mechanisme beschikken om de gebruikersgegevens te verkrijgen. De toepassing kan bijvoorbeeld een eenvoudige gebruikersinterface voor het invoeren van de gebruikersnaam en het wachtwoord weergeven. De toepassing kan ook een mechanisme bieden voor het omgaan met en beperken van herhaalde verificatiepogingen.

DRMAuthenticateEvent-eigenschappen

De klasse DRMAuthenticateEvent bevat de volgende eigenschappen:

Eigenschap

Beschrijving

authenticationType

Geeft aan of de geleverde gegevens bedoeld zijn voor verificatie met behulp van Adobe Access ("drm") of met behulp van een proxyserver ("proxy"). De optie "proxy" geeft aan dat de toepassing indien nodig moet worden geverifieerd met behulp van een proxyserver, voordat de gebruiker toegang krijgt tot internet. Tenzij anonieme verificatie wordt gebruikt, moet de gebruiker na de proxyverificatie nog steeds door Adobe Access worden geverifieerd om de voucher te verkrijgen en de inhoud af te spelen. U kunt setDRMAuthenticationCredentials() nogmaals gebruiken (nu met de optie "drm") om verificatie uit te voeren met behulp van Adobe Access.

header

De bestandsheader van de gecodeerde inhoud, geleverd door de server. Bevat informatie over de context van de gecodeerde inhoud.

Deze headertekenreeks kan worden doorgegeven aan de Flash-toepassing, zodat deze een dialoogvenster voor het opgeven van een wachtwoord en gebruikersnaam kan samenstellen. De headertekenreeks kan worden gebruikt voor de instructies in het dialoogvenster. De header zou bijvoorbeeld ''Voer uw gebruikersnaam en wachtwoord in'' kunnen zijn.

netstream

Het NetStream-object dat deze gebeurtenis heeft geactiveerd.

passwordPrompt

Een prompt voor wachtwoordgegevens, geleverd door de server. De tekenreeks kan een instructie bevatten voor het vereiste type wachtwoord.

urlPrompt

Een prompt voor een URL-tekenreeks, geleverd door de server. De tekenreeks kan de locatie aangeven waarnaar de gebruikersnaam en het wachtwoord worden verzonden.

usernamePrompt

Een prompt voor gebruikersnaamgegevens, geleverd door de server. De tekenreeks kan een instructie bevatten voor het vereiste type gebruikersnaam. Een inhoudsprovider kan bijvoorbeeld een e-mailadres als gebruikersnaam vereisen.

De eerder vermelde tekenreeksen worden alleen verschaft door de FMRMS-server. De Adobe Access-server gebruikt deze tekenreeksen niet.

DRMAuthenticateEvent-handlers maken

In het volgende voorbeeld ziet u hoe u een gebeurtenishandler maakt die een reeks hard-gecodeerde autorisatiegegevens doorgeeft aan het NetStream-object dat de gebeurtenis heeft gestart. (De code om de video af te spelen en het controleren of een verbinding met de videostroom tot stand is gebracht, is hier niet opgenomen.)

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

Interfaces maken om gebruikersgegevens op te vragen

Als gebruikersverificatie vereist is voor beveiligde inhoud, moet de AIR-toepassing de verificatiegegevens van de gebruiker doorgaans via een gebruikersinterface opvragen.

Hierna volgt een Flex-voorbeeld van een eenvoudige gebruikersinterface om de gebruikersgegevens op te vragen. Deze interface bestaat uit een deelvensterobject met twee TextInput-objecten: één voor de gebruikersnaam en één voor het wachtwoord. Het deelvenster bevat ook een knop waarmee de methode credentials() wordt gestart.

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

De methode credentials() is een door de gebruiker gedefinieerde methode waarmee de gebruikersnaam en het wachtwoord worden doorgegeven aan de methode setDRMAuthenticationCredentials() . Nadat de waarden zijn doorgestuurd, voert de methode credentials() een reset uit van de waarden van de TextInput-objecten.

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

U kunt een dergelijke eenvoudige interface implementeren door het deelvenster als onderdeel van een nieuwe status op te nemen. De nieuwe status komt voort uit de basisstatus wanneer het object DRMAuthenticateEvent wordt gegenereerd. In het volgende voorbeeld ziet u een VideoDisplay-object met een bronkenmerk dat naar een beveiligd FLV-bestand wijst. In dit geval wordt de methode credentials() gewijzigd, zodat ook de toepassing naar de basisstatus wordt geretourneerd. Dit wordt gedaan door deze methode nadat de verificatiegegevens van de gebruiker zijn doorgegeven en de TextInput-objectwaarden opnieuw zijn ingesteld.

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