게시판 본문 Active Directory Service Interface - Read Only
re: 답장감사합니다. 바인딩 기다리겠습니다. |
---|
작성자: 송원석
작성일시: 2003-07-19 20:39,
조회수: 3,181
|
안녕하세요? 송원석 입니다. ^_^
일단 서버 바인딩 관련 샘플 코드를 ASP 로 작성해 보았습니다. 참고하시면 다소나마 도움이 되실 것이라고 생각합니다. 아래의 링크를 클릭하시면 다운로드를 받으실 수 있습니다. IISServerBindings_ASP.zip (2k) 샘플 프로그램의 소스 코드를 보시면 대부분 주석으로 자세히 설명이 되어있습니다만, 간단하게 추가로 설명드리고자 합니다. 우선 이 샘플 코드가 처리하는 전체적인 작업은 매우 간단합니다. 기본 웹 사이트에 현재 설정되어져 있는 모든 서버 바인딩 정보의 목록을 보여주고 문자열을 조작하여 테스트용으로 만들어진 새로운 바인딩 정보를 하나 추가합니다. 샘플 코드를 설치하시고 계속 새로고침을 해보시면 무슨 말인지 쉽게 이해가 가실 거라고 생각합니다. ^_^ 실제 코드를 살펴보면, 먼저 변수를 선언한 직후에 다음과 같은 코드가 있는 것을 찾아보실 수 있습니다. 이는 사용자로 하여금 강제로 NT 인증을 하게끔 만드는 코드입니다. 이 코드를 추가한 이유는 일반적인 웹 엑세스 권한으로는 IIS 의 메타베이스를 편집할 수 없기 때문에 권한 에러가 나기 때문입니다. 테스트 삼아서 이 부분을 지우고 한 번 실행시켜보시면 권한 에러가 발생할 것입니다. If Request.ServerVariables("LOGON_USER") = "" Then Response.Status = "401 Authorization Required" Response.End End If이 코드를 입력한 채로 자신의 PC 에서 테스트를 해보시면 겉보기에는 아무런 일도 일어나지 않는 것처럼 보입니다. 그러나 사실 내부적으로는 NT 사용자 인증이 이루어지게 됩니다. 다른 사람의 PC 에서 자신의 PC 에 설치된 샘플 프로그램을 브라우저로 실행시켜 보시면 인증창이 뜨는 것을 확인하실 수 있습니다. 권한 관련 문제를 실제 운영 환경하에서 완벽하게 해결하는 방법에 대해서는 제 글들 중에서 COM+ 서비스 역할 기반 보안에 관한 글을 읽어보시기 바랍니다. 그리고 그 다음의 코드는 서버 바인딩 정보를 얻고자 하는 가상 웹 서버의 ADSI 개체를 얻는 부분입니다. 이 때 IIS://LocalHost/W3SVC/1 라는 ADsPath 가 사용되는데, 이 ADsPath 의 의미를 모르신다면 제가 이 자리에서 설명드리기는 조금 곤란합니다. ^_^;; 분량도 상당할 뿐더러 이미 제가 여러차례 글을 통해서 말씀드린 내용이므로 ADsPath 에 관해서는 제가 예전에 Taeyo 님 사이트에 올렸던 ADSI 강좌를 읽어보시기를 권해드립니다. Set objWebServer = GetObject("IIS://LocalHost/W3SVC/1") aryServerBindings = objWebServer.ServerBindings여기에 사용된 ADsPath 를 간단하게나마 설명드리고 넘어가자면 작업을 하고자 하는 가상 웹 서버의 경로를 나타내는 것입니다. 즉 위에 사용된 ADsPath 는 작업하고자 하는 대상이 현재 Local Computer 에 설치된 WWW 서비스중에서 1 번 가상 웹 서버라는 의미가 됩니다. (기본 웹 사이트) 가상 웹 서버에 1 번, 2 번 하고 번호가 붙는 이유는 Windows Server 제품군상의 IIS 에서는 하나의 IIS 에 여러개의 가상 웹 서버가 동시에 존재할 수 있기 때문입니다. 이에 관한 자세한 내용은 역시 제 ADSI 강좌를 참고하시기 바랍니다. 그 다음줄의 aryServerBindings = objWebServer.ServerBindings 라인이 바로 서버 바인딩 정보를 얻어오는 부분입니다. ServerBindings 속성은 서버 바인딩 정보들의 배열을 리턴해주는데, 바로 이 서버 바인딩 정보 하나하나가 각각 가상 웹 서버에 설정된 서버 바인딩 정보와 매칭이 됩니다. 따라서 aryServerBindings 배열을 루프로 돌면 현재 설정된 서버 바인딩 정보를 모두 얻을 수 있습니다. 그런데 리턴되는 바인딩 정보는 "IP Address:Port Number:Host Header" 형태의 문자열로 리턴이 되므로 자세한 정보를 얻으려면 ":" 문자로 Split 을 시켜줍니다. aryBindingElements = Split(aryServerBindings(i), ":") sIPAddress = aryBindingElements(0) sPortNumber = aryBindingElements(1) sHostHeader = aryBindingElements(2)그리고 이 정보를 루프 내에서 출력하면 바인딩 정보를 얻어오는 부분은 끝이 납니다. 이제 새로운 바인딩 정보를 설정하는 부분을 살펴보도록 하겠습니다. sIPAddress = "107.0.0.1" sPortNumber = Hour(Time()) & Minute(Time()) sHostHeader = "HOST_HEADER_" & Second(Time())새로운 바인딩 정보를 추가하기 위해서는 우선 새 바인딩 정보를 구성해야 합니다. 제 코드에서는 현재 시간, 분, 초 등을 이용해서 테스트용으로 가상의 IP Address 와 Port Number, 그리고 Host Header 를 만들었습니다. 그런데 바인딩 정보는 우선 바인딩 정보의 배열에 들어가야만 하므로 처음에 구했던 aryServerBindings 배열의 크기를 하나 늘이고 새로 만든 바인딩 정보를 배열의 맨 마지막 인덱스에 추가합니다. Redim Preserve aryServerBindings(iCnt) aryServerBindings(UBound(aryServerBindings)) = sIPAddress & ":" & sPortNumber & ":" & sHostHeader이때도 역시 "IP Address:Port Number:Host Header" 형식을 유지해야 합니다. 그리고 실제 운영환경에서는 절대로 중복되는 서버 바인딩 정보는 존재할 수 없다는 점을 명심하시기 바랍니다. 이제 마지막으로 aryServerBindings 배열을 다시 원래의 objWebServer.ServerBindings 속성에 설정하고, 지금까지의 작업을 저장하기 위해서 objWebServer.SetInfo 메소드를 호출하면 작업이 모두 끝납니다. objWebServer.ServerBindings = aryServerBindings objWebServer.SetInfo이렇게 설명을 읽어보시면 다소 복잡하게 느껴지실지도 모르겠지만 실제로 코드를 보면 그다지 어려운 부분은 없으니 참고하시고, 또 궁금한 점이 있으시면 글을 남겨주시기 바랍니다. 감사합니다. |
IP 주소: 165.21.154.8
|
전체 421 건의 게시물,
17 페이지로 구성된
Active Directory Service Interface 게시판의
16 페이지입니다.
게시물 | ||||
---|---|---|---|---|
47 | 2003-07-29 | 5,732 | ||
46 | 2003-07-29 | 3,141 | ||
44 |
한호 |
2003-07-18 | 822 | |
43 | 2003-07-18 | 3,090 | ||
42 |
한호 |
2003-07-19 | 703 | |
2003-07-19 | 3,181 | |||
40 | 2003-12-06 | 2,647 | ||
39 | 2003-12-06 | 2,737 | ||
38 |
teamo15 |
2003-07-18 | 770 | |
37 | 2003-07-18 | 2,874 | ||
36 | 2003-07-10 | 2,995 | ||
35 | 2003-07-10 | 3,026 | ||
34 | 2003-07-10 | 3,029 | ||
33 | 2003-07-10 | 2,886 | ||
32 | 2003-07-10 | 2,806 | ||
31 | 2003-07-10 | 2,888 | ||
30 | 2003-07-11 | 2,749 | ||
29 | 2003-07-08 | 3,087 | ||
28 | 2003-07-08 | 2,954 | ||
27 | 2003-07-09 | 2,914 | ||
26 | 2003-07-10 | 2,986 | ||
25 | 2003-07-02 | 3,013 | ||
24 | 2003-07-02 | 3,271 | ||
23 | 2003-07-03 | 3,262 | ||
22 | 2003-07-03 | 3,264 |