게시판 본문 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

안녕하세요 가상디렉토리 기본문서 질문 [1]

왕초보

2003-07-29 5,732
46

re: 안녕하세요 가상디렉토리 기본문서 질문 [2]

송원석

2003-07-29 3,141
44

바이딩 Set 과 가상서버 삭제는 어떻게 합니까?

한호

2003-07-18 822
43

re: 바이딩 Set 과 가상서버 삭제는 어떻게 합니까? [1]

송원석

2003-07-18 3,090
42

re: 답장감사합니다. 바인딩 기다리겠습니다. [1]

한호

2003-07-19 703

re: 답장감사합니다. 바인딩 기다리겠습니다.

송원석

2003-07-19 3,181
40

re: 바인딩정보 삭제부분은 어케 해야하나요?

복탱이

2003-12-06 2,647
39

re: 바인딩정보 삭제부분은 어케 해야하나요? [1]

송원석

2003-12-06 2,737
38

기본문서 바꾸려면??

teamo15

2003-07-18 770
37

re: 기본문서 바꾸려면??

송원석

2003-07-18 2,874
36

EgoCube.IISWebAdmin 설치 완료.. 하지만.

라아

2003-07-10 2,995
35

re: EgoCube.IISWebAdmin 설치 완료.. 하지만.

송원석

2003-07-10 3,026
34

re: EgoCube.IISWebAdmin 설치 완료.. 하지만.

라아

2003-07-10 3,029
33

re: EgoCube.IISWebAdmin 설치 완료.. 하지만.

송원석

2003-07-10 2,886
32

re: EgoCube.IISWebAdmin 설치 완료.. 하지만.

라아

2003-07-10 2,806
31

re: EgoCube.IISWebAdmin 설치 완료.. 하지만.

송원석

2003-07-10 2,888
30

문제하나 해결하고 다른문제로 넘어가기전에..

라아

2003-07-11 2,749
29

fso로 폴더생성시 디폴트로 IIS에 응용프로그램 설정 되어있게..

라아

2003-07-08 3,087
28

re: fso로 폴더생성시 디폴트로 IIS에 응용프로그램 설정 되어있게..

송원석

2003-07-08 2,954
27

re: fso로 폴더생성시 디폴트로 IIS에 응용프로그램 설정 되어있게..

라아

2003-07-09 2,914
26

re: 다음을 참고하시기 바랍니다. ^_^

송원석

2003-07-10 2,986
25

응용프로그램 설정

김종일

2003-07-02 3,013
24

re: 응용프로그램 설정

송원석

2003-07-02 3,271
23

re: 응용프로그램 설정

김종일

2003-07-03 3,262
22

re: 응용프로그램 설정

송원석

2003-07-03 3,264