본문 바로가기
C# /SmartClient

SmartClient를 이용한 간단한 Wav 파일 재생기 제작 - 3.CAS(Code Access Security)보안설정프로그램설치

by Hwoarang757 2013. 2. 1.

죄송합니다 상당히 형편없이 만든 수준낮은 예제입니다. 근거 없는 자신감으로 올려봅니다 -_-; 

------------------------- 순     서 -------------------------

1. WAV 파일 재생기 Window Control Library 제작

2. 예제 웹사이트에 Object 태그를 이용한 Dll 파일 Embed

3. CAS(Code Access Security) 보안 설정 프로그램 배포 및 설치  

3. CAS(Code Access Security) 보안 설정 프로그램 배포 설치

현재 LocalHost 예제를 만든 사이트에서 Wav 재생 메소드 호출시 예외가 Throw 보안 문제 부분에 대한

LocalHost 사이트에 대한 참조 어셈블리 실행 권한 부분을 FullTrust 변경하여 재생이 가능하게 만들어 본다!!

프로젝트 만들기 - 콘솔 응용프로그램

using System;

using System.Collections.Generic;

using System.Text;

using System.Windows.Forms;

using System.Security;

using System.Security.Policy;

namespace SmartClientCAS

{

    class Program

    {

        static void Main(string args)

        {

            // Machine (Local) 영역을 접근한다.

            const string userPolicyLevel = "Machine";

            PolicyLevel level = null;

            System.Collections.IEnumerator ph = System.Security.SecurityManager.PolicyHierarchy();

            //Machine 레벨을 가져온다.

            while (ph.MoveNext())

            {

                level = (PolicyLevel)ph.Current;

                if (level.Label == userPolicyLevel)

                {

                    break;

                }

            }

            //이미 추가가 되었는지 확인한다.

            foreach (CodeGroup group in level.RootCodeGroup.Children)

            {

                if (group.Name == "WEBCAS")

                {

                    return;

                }

            }

            //권한 생성

            NamedPermissionSet permissionSet = new NamedPermissionSet("FullTrust");

            PolicyStatement policyStateMent = new PolicyStatement(permissionSet);

            //URL 멤버쉽 생성

            IMembershipCondition membership = new UrlMembershipCondition(@http://localhost:51392/*);

            //코드그룹에 추가

            UnionCodeGroup cg = new UnionCodeGroup(membership, policyStateMent);

            //이름 생성

            cg.Name = "WEBCAS";

            cg.Description = "LocalHost 에서 실행하는 SmartClient 개체의 실행 권한입니다.";

            //그룹 추가

            level.RootCodeGroup.AddChild(cg);

            //적용

            System.Security.SecurityManager.SavePolicy();

            System.Windows.Forms.MessageBox.Show("보안설정이 완료되었습니다.", "알림");

        }

    }

}

-----------------------------------------------------------------------------------------

코드는 유명하신 Hoons닷넷의 훈스님께서 작성하신 Lecture - SmartClient 강좌중 보안설정 프로그램 만들기 부분의 CAS(Code Access Security)  실행 권한 부분을 쉽게 설정 해줄 있도록 만들어주는 프로그램 부분을 참조 하여 코딩하였습니다..

http://www.hoons.kr/Lecture/LectureMain.aspx?BoardIdx=228&kind=29&view=0

부분을 빌드 하면 설정이 완료 되었단 메세지가 호출되면서 CAS 설정부분에는

LocalHost에서 실행하는 SmartClient 개체의 실행권한을 FullTrust 설정하게 된다.

 

위부분중

IMembershipConditionmembership = new UrlMembershipCondition(@http://localhost:51392/*);

권한 부여 영역중 URL 영역수준의 권한 부여이다. 현재는 테스트 사이트 이므로 51392 포트를 명시하였다.

 

다시 웹페이지를 빌드해 본다.

보안문제가 발생하지 않고 정상적으로 wav 플레이어가 동작한다...

SmartClient를 실행하는 웹 사이트는 신뢰영역이외의 어셈블리를 참조할 경우 CAS 설정 프로그램을 배포(ex- ClickOnce) 해 설치해야 한다.

참조 웹 사이트 :

유경상님의 닷넷 블로그 - SmartClient 강좌 http://www.simpleisbest.net/archive/2006/01/02/360.aspx

Hoons 닷넷 SmartClient 프로그래밍 - http://www.hoons.kr/Lecture/LectureMain.aspx?idx=29

 

감사드립니다.