DRMAuthenticateEvent 클래스 사용

Adobe AIR 1.0 이상

DRMAuthenticateEvent 객체는 재생 전 NetStream 객체가 인증을 위해 사용자 자격 증명을 요구하는 보호된 내용을 재생하려고 시도할 때 전달됩니다.

DRMAuthenticateEvent 핸들러는 필수 자격 증명(사용자 이름, 암호 및 유형)을 수집하고 유효성 검증을 위해 NetStream.setDRMAuthenticationCredentials() 메서드에 해당 값을 전달합니다. 각 AIR 응용 프로그램은 사용자 자격 증명을 확보하기 위한 몇 가지 메커니즘을 제공해야 합니다. 예를 들어 응용 프로그램은 사용자 이름 값 및 암호 값을 입력할 수 있는 간단한 사용자 인터페이스를 제공할 수 있습니다. 또한 반복적인 인증 시도를 처리 및 제한하기 위한 메커니즘도 제공해야 합니다.

DRMAuthenticateEvent 속성

DRMAuthenticateEvent 클래스에는 다음과 같은 속성이 포함됩니다.

속성

설명

authenticationType

제공된 자격 증명을 Flash Access에 대해 인증하는지("drm") 프록시 서버에 대해 인증하는지("proxy")를 나타냅니다. 예를 들어 "proxy" 옵션을 사용하면 사용자가 인터넷에 액세스하기 전에 필요한 경우 응용 프로그램에서 프록시 서버에 대해 인증할 수 있습니다. 익명 인증을 사용하는 경우가 아니라면 프록시 인증 후에도 Flash Access에 대해 인증해야 사용자가 바우처를 확보하여 내용을 재생할 수 있습니다. "drm" 옵션과 함께 setDRMAuthenticationcredentials()를 두 번 사용하여 Flash Access에 대해 인증할 수 있습니다.

header

서버에서 제공한 암호화된 내용 파일 헤더입니다. 여기에는 암호화된 내용의 컨텍스트 정보가 포함됩니다.

netstream

이 이벤트를 시작한 NetStream 객체입니다.

passwordPrompt

서버에서 제공한 암호 자격 증명에 대한 프롬프트입니다. 문자열에는 필요한 암호 유형에 대한 명령이 포함될 수 있습니다.

urlPrompt

서버에서 제공한 URL 문자열에 대한 프롬프트입니다. 문자열은 사용자 이름 및 암호가 전송되는 위치를 제공할 수 있습니다.

usernamePrompt

서버에서 제공한 사용자 이름 자격 증명에 대한 프롬프트입니다. 문자열에는 필요한 사용자 이름 유형에 대한 명령이 포함될 수 있습니다. 예를 들어 내용 공급자에 사용자 이름으로 전자 메일 주소가 필요할 수 있습니다.

DRMAuthenticateEvent 핸들러 만들기

다음 예제에서는 이벤트를 발생시킨 NetStream 객체에 하드 코딩된 인증 자격 증명 집합을 전달하는 이벤트 핸들러를 만듭니다. 비디오를 재생하고 비디오 스트림과 성공적으로 연결되었는지 확인하는 코드는 여기에 포함되어 있지 않습니다.

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

사용자 자격 증명을 검색하기 위한 인터페이스 만들기

보호된 내용을 보기 위해 사용자 인증이 필요한 경우 AIR 응용 프로그램은 일반적으로 사용자 인터페이스를 통해 사용자의 인증 자격 증명을 검색해야 합니다.

다음은 사용자 자격 증명을 검색하는 간단한 사용자 인터페이스에 대한 Flex 예제입니다. 이 인터페이스는 사용자 이름 및 암호 자격 증명에 대해 하나당 두 개의 TextInput 객체가 포함된 패널 객체로 구성됩니다. 이 패널에는 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>

credentials() 메서드는 사용자 이름 및 암호 값을 setDRMAuthenticationCredentials() 메서드에 전달하는 사용자 정의 메서드입니다. 값이 전달되면 credentials() 메서드는 TextInput 객체의 값을 재설정합니다.

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

이러한 유형의 단순한 인터페이스를 구현하는 한 가지 방법은 해당 패널을 새로운 상태의 일부로 포함하는 것입니다. 새로운 상태는 DRMAuthenticateEvent 객체가 발생할 때 기본 상태로부터 시작됩니다. 다음 예제에는 보호된 FLV 파일을 가리키는 소스 특성이 있는 VideoDisplay 객체가 포함되어 있습니다. 이 경우 credentials() 메서드가 응용 프로그램을 기본 상태로 반환하도록 수정됩니다. 이 메서드는 사용자 자격 증명을 전달하고 TextInput 객체 값을 재설정한 후 이러한 작업을 수행합니다.

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