DRMAuthenticateEvent sınıfını kullanma

Adobe AIR 1.0 ve üstü

DRMAuthenticateEvent nesnesi bir NetStream nesnesi, oynatılmadan önce kimlik doğrulama için kullanıcı kimlik bilgisi gerektiren korumalı içeriği oynatmaya çalıştığında gönderilir.

DRMAuthenticateEvent işleyicisi gerekli kimlik bilgilerini (kullanıcı adı, şifre ve tür) toplamaktan ve değerleri doğrulama için NetStream.setDRMAuthenticationCredentials() yöntemine iletmekten sorumludur. Her AIR uygulaması kullanıcı kimlik belgelerini edinmek için bazı mekanizmalar sağlamalıdır. Örneğin uygulama, kullanıcı adı ve şifre değerlerini girmek için kullanıcıya basit bir kullanıcı arabirimi sağlayabilir. Bunun yanında, tekrarlayan kimlik doğrulama girişimlerini işlemek ve sınırlamak için bir mekanizma oluşturun.

DRMAuthenticateEvent özellikleri

DRMAuthenticateEvent sınıfı aşağıdaki özellikleri içerir:

Özellik

Açıklama

authenticationType

Verilen kimlik bilgilerinin Flash Access için mi (“drm”) yoksa bir proxy sunucusu için (“proxy”) kimlik doğrulama yapmaya yönelik olduğunu belirtir. Örneğin, kullanıcının İnternet’e erişebilmesi için öncelikle bu tür bir adım gerekiyorsa, “proxy” seçeneği, uygulamanın bir proxy sunucusuna yönelik kimlik doğrulaması yapmasına izin verir. Adsız kimlik doğrulama kullanılmadığı sürece, proxy kimlik doğrulamasından sonra kullanıcı yine de makbuzu almak ve içeriği oynatmak amacıyla Flash Acess için kimlik doğrulaması yapmalıdır. Flash Access için kimlik doğrulaması yapmak üzere setDRMAuthenticationcredentials() öğesini “drm” seçeneğiyle ikinci kez kullanabilirsiniz.

header

Sunucu tarafından sağlanan şifreli içerik dosya üstbilgisi. Şifreli içeriğin bağlamına ilişkin bilgi içerir.

netstream

Bu olayı başlatan NetStream nesnesi.

passwordPrompt

Sunucu tarafından sağlanan, şifre kimlik bilgisi istemi. Dize, istenilen şifre türü için talimat içerebilir.

urlPrompt

Sunucu tarafından sağlanan, URL dizesi istemi. Dize, kullanıcı adı ve şifrenin gönderildiği konumu sağlayabilir.

usernamePrompt

Sunucu tarafından sağlanan, kullanıcı adı kimlik bilgisi istemi. Dize, istenilen kullanıcı adı türü için talimat içerebilir. Örneğin, bir içerik sağlayıcı, kullanıcı adı olarak e-posta adresi isteyebilir.

DRMAuthenticateEvent işleyicisi oluşturma

Aşağıdaki örnek, olayı başlatan NetStream nesnesine kodlanmış kimlik denetimi bilgileri ileten bir olay işleyicisi oluşturur. (Video oynatmaya ve video akışına başarılı bir bağlantı yapıldığını doğrulamaya ilişkin kod burada yer almamaktadı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"); 
} 

Kullanıcı kimlik bilgilerini almak için bir arabirim oluşturma

Korumalı içeriğin kullanıcı kimlik bilgilerini gerektirdiği durumlarda, AIR uygulamasının kullanıcının kimlik doğrulama bilgilerini genellikle bir kullanıcı arabirimi üzerinden alması gerekir.

Aşağıda kullanıcı kimlik bilgilerini almaya yönelik basit bir Flex kullanıcı arabirimi örneği bulunmaktadır. Kullanıcı adı ve şifre kimlik bilgilerinin her biri için birer tane olmak üzere iki TextInput nesnesi içeren bir panel nesnesinden oluşur. Panel ayrıca credentials() yöntemini başlatan bir düğme de içerir.

<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() yöntemi, kullanıcı adı ve şifre değerlerini setDRMAuthenticationCredentials() yöntemine ileten kullanıcı tanımlı bir yöntemdir. Değerler iletildikten sonra, credentials() yöntemi TextInput nesnelerinin değerlerini sıfırlar.

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

Bu tür basit bir arabirimi yüklemenin bir yolu paneli yeni durumun bir parçası olarak eklemektir. Yeni durum, DRMAuthenticateEvent nesnesi atıldığında temel durumdan oluşur. Aşağıdaki örnek, korumalı bir FLV’yi işaret eden kaynak niteliğine sahip bir VideoDisplay nesnesi içerir. Bu durumda, uygulamayı da temel duruma döndürmesi için credentials() yöntemi değiştirilir. Bu yöntem kullanıcı kimlik bilgilerini ilettikten ve TextInput nesne değerlerini sıfırladıktan sonra bu işlemi gerçekleştirir.

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