BigAdmin System Administration Portal
웹 인증용 Sun 및 Microsoft 상호 운용, 제1부
Print-friendly VersionPrint-friendly Version

번역 책임의 한계:
본 기사는 어느 정도의 인간의 간섭과 사후 편집을 포함하여 컴퓨터 소프트웨어 프로그램으로 번역되었습니다. 번역은 독자의 편리함을 위해 “있는 그대로” 제공되며, Sun은 번역된 문장 또는 페이지 전체로서의 정확성 또는 완전성에 대한 아무런 대표성이 없으며 어떠한 책임도 지지 않습니다. 사이트와 툴의 사용에 관한 추가 고지 사항에 대해서는 본 사이트의 이용 약관을 참조하십시오.

 
 

: 2부: Sun Java System Access Manager 및 SharePoint Portal Server 2003, 3부: Sun Java System Access Manager 및 Microsoft Outlook Web Access for Exchange Server 2003을 참조하십시오.

전체 2부로 구성된 기사 중 첫 번째인 이 기사에서는 Microsoft Internet Information Server(IIS)용 Sun Java System Access Manager(이하 Access Manager) 및 Sun Java System Access Manager Policy Agent(이하 Policy Manager)를 사용하여 ASP(Active Server Pages)와 ASP.NET 응용 프로그램을 SSO(Single Sign-On) 환경으로 통합하는 방법에 대해 설명합니다. 특히 이 기사에서는 다음을 다룹니다.

  • Access Manager와 Microsoft 기술 간의 상호 운용성을 논의합니다.

  • Access Manager, Policy Agent, IIS 및 .NET 응용 프로그램 간의 상호 작용을 검토하고 Access Manager를 .NET 환경 및 .NET ASP 이전 응용 프로그램으로 통합하는 방법에 대해 설명합니다.

  • IIS 스레드가 Windows의 ACL(액세스 제어 목록)에 따라 사용자를 "가장"하여 자원에 대한 권한을 얻을 수 있도록 IIS를 보다 심도 있게 통합하는 구성 방법을 설명합니다.

이 기사에서는 Access Manager 및 IIS에 어느 정도 익숙함을 가정합니다.

주: Policy Agent 2.1은 IIS 5.0(Windows 2000)에 사용할 수 있고 Policy Agent 2.1 및 2.2는 IIS 6.0(Windows 2003)에 사용할 수 있습니다. 이 기사에서의 절차는 IIS 6.0용 Policy Agent 2.2-01을 기반으로 합니다.

목차
 
IIS의 인증
IIS에 의한 권한 부여
IIS 6.0용 Policy Agent 2.2 배포
결론
향후 기사 미리보기
감사의 말씀
참조
 
IIS의 인증

먼저 IIS에서 기본적으로 인증 및 권한 부여가 어떻게 작동하는지 살펴봅시다. 이 섹션에서는 가장 광범위하게 다양한 브라우저 및 토폴로지에 적용되고 Access Manager를 통해 인증을 스왑아웃할 수 있는 기본 인증의 기능에 대해 논의합니다.

익명 액세스

IIS는 익명 액세스를 어떻게 처리할까요? 다음과 같은 간단한 단계를 통해 살펴봅시다.

  1. 다음 스크립트를 웹 사이트의 루트 문서 디렉토리(기본적으로 welcome.asp로서 c:\inetpub\wwwroot)에 저장한 다음 동일한 디렉토리에 welcome.aspwelcome.aspx로 복사합니다.

    <% @Language="VBScript" %>
    <%
    Dim name
    name = Request.ServerVariables("HTTP_COMMON_NAME")
    %>
    <html>
      <head>
        <title>Welcome, <%= name %></title>
      </head>
      <body>
        <h3>Welcome, <%= name %>!</h3>
        <table border="1">
          <tr>
    	<td>REMOTE_USER</td>
    	<td><%= Request.ServerVariables("REMOTE_USER") %></td>
          </tr>
          <tr>
    	<td>LOGON_USER</td>
    	<td><%= Request.ServerVariables("LOGON_USER") %></td>
          </tr>
          <tr>
    	<td>AUTH_USER</td>
    	<td><%= Request.ServerVariables("AUTH_USER") %></td>
          </tr>
          <tr>
    	<td>HTTP_COMMON_NAME</td>
    	<td><%= Request.ServerVariables("HTTP_COMMON_NAME") %></td>
          </tr>
        </table>
      </body>
    </html>
    
     
    이 스크립트는 인증된 사용자에 속하는 서버 변수를 표시합니다. 사용자의 고유한 ID는 사용자가 자신의 데이터만을 보고 편집할 수 있는 개인화된 웹 사이트를 생성하는 프로세스인 개인화에 대한 키입니다.

  2. IIS 관리자를 열고 인터넷 정보 서비스 아래의 웹 서비스 확장을 눌러 기본 ASP 및 ASP.NET 모두를 IIS에서 활성화해야 합니다.

    오른쪽 창에서 ASP 페이지 및 ASP.NET 웹 확장의 상태를 보고 변경할 수 있습니다.

    인증이 없으면 welcome.aspwelcome.aspx 모두 다음과 같이 환영 인사 다음에 사용자 이름 자리를 비워 두는 동일한 반응을 보입니다.

    http://win2k3-iis/welcome.asp
    Welcome, !
    
    REMOTE_USER
    LOGON_USER
    AUTH_USER
    HTTP_COMMON_NAME
    
     
    인증된 사용자가 없으면 IIS가 나열된 대로 요청 변수를 설정하지 않습니다. 이 문제에 대한 Microsoft 지원 페이지에 이유가 설명되어 있습니다.

    HTTP 클라이언트는 이러한 변수를 설정할("속일") 수 없습니다. 예를 들어, wget을 사용하여 속임수 요청을 발생시키더라도

    wget --no-proxy --header='LOGON_USER: pat' http://win2k3-iis/welcome.aspx
    
     
    서버는 여전히 동일한 응답을 보냅니다. 즉, ASP 스크립트는 LOGON_USER 값을 클라이언트가 보냈다고 보지 않습니다.
기본 인증

이제 IIS 내장 메커니즘 중 하나로 사용자를 인증합시다. 다음을 수행합니다.

  1. IIS 관리자에서 사이트 이름을 마우스 오른쪽 버튼으로 누르고 컨텍스트 메뉴에서 속성을 선택합니다.

    기본 웹 사이트 속성 창이 표시됩니다.

  2. 디렉터리 보안 탭을 누른 다음 인증 및 액세스 제어 아래의 편집 버튼을 누릅니다.

    인증 방법 창이 표시됩니다.

  3. 익명 액세스 가능을 선택 해제하고 기본 인증을 선택합니다. 이후에, 해당하는 경우 시스템에 대한 기본 도메인 및 영역 값을 지정합니다.

테스트로, Windows 사용자 bilbo로 로그인합니다.

기본 ASP 스크립트는 사용자 이름에 3가지 변수를 설정하는 반응을 보입니다.

http://win2k3-iis/welcome.asp
Welcome, !

REMOTE_USER	bilbo
LOGON_USER	bilbo
AUTH_USER	bilbo
HTTP_COMMON_NAME
 

대조적으로 ASP.NET은 지정한 사용자 이름에 LOGON_USER를 설정하고 도메인 로그인에 REMOTE_USERAUTH_USER를 설정하는 반응을 보입니다.

http://win2k3-iis/welcome.aspx
Welcome, !

REMOTE_USER	MYDOMAIN\bilbo
LOGON_USER	bilbo
AUTH_USER	MYDOMAIN\bilbo
HTTP_COMMON_NAME
 

이러한 변수의 정의에 대해서는 문제의 ASP.NET 문서를 참조하십시오.

두 가지 경우 모두 HTTP_COMMON_NAME 변수는 설정되어 있지 않습니다. 이 기사의 뒷부분에서 Policy Agent가 이러한 설정을 처리하는 방법을 살펴볼 수 있습니다.

IIS에 의한 권한 부여

이 섹션에서는 ASP.NET의 두 가지 권한 부여 메커니즘인 파일 권한 부여 및 URL 권한 부여에 의하여 자원 액세스에 대해 사용자에게 권한을 부여하는 방법에 대해 설명합니다.

파일 권한 부여

인증되지 않은 액세스로부터 파일을 보호하려면 Windows의 내장 ACL 메커니즘을 사용합니다. 다음 예에서 한 명의 사용자만이 파일을 읽을 수 있도록 파일에 ACL을 설정합니다. 해당 사용자가 로그인한 후 IIS는 파일 내용을 검색하기 위해 스크립트를 실행합니다.

다음을 수행합니다.

  1. 기본 ASP와 ASP.NET의 프로그래밍 모델상의 차이를 수용하는 두 스크립트를 작성합니다. 첫 번째는 기본 ASP 버전(bilbo.asp)입니다.

    % @Language="VBScript" %>
    <html>
      <head>
        <title>bilbo's secret file</title>
      </head>
      <body>
        <h3>bilbo's secret file</h3>
        <p>
    <%
        Err.Clear
        On Error Resume Next
    
        Dim fso
        Set fso = CreateObject("Scripting.FileSystemObject")
    
        Dim fileName
        fileName = Server.MapPath("bilbo.txt")
    
        Dim file
        Set file = fso.OpenTextFile(fileName)
        If Err.Number = 0 Then
          Response.Write(file.ReadAll)
        Else
          Response.Write("Sorry, " + Request.ServerVariables("LOGON_USER") + ", I
    can't show you the file.")
        End If
    
        On Error GoTo 0
    %>
        </p>
      </body>
    </html>
    
     
    Second, the ASP.NET version (bilbo.aspx):

    <%@ Import Namespace="System.IO" %>
    <%@ Language="VBScript" %>
    <html>
      <head>
        <title>bilbo's secret file</title>
      </head>
      <body>
        <h3>bilbo's secret file</h3>
        <p>
    <%
        Try
    
          Dim fileName as String = Server.MapPath("bilbo.txt")
    
          Dim reader as StreamReader
          reader = File.OpenText(fileName)
    
          Response.Write( reader.ReadToEnd() )
    
          reader.Close()
        Catch uae as UnauthorizedAccessException
    
          ' Environment.UserName tells us the identity associated with the
          ' IIS process as far as the rest of Windows is concerned
          Response.Write ("Sorry, " +
    System.Security.Principal.WindowsIdentity.GetCurrent().Name + ", I can't show you the file.")
        End Try
    %>
        </p>
      </body>
    </html>
    
     
  2. 다음과 같이 앞의 두 스크립트가 읽을 수 있도록 테스트 파일(bilbo.txt)을 작성합니다.

    One identity to rule them all and, in the darkness, bind them.
    
     
  3. 예를 들어 문서 루트(기본적으로 c:\inetpub\wwwroot)와 같이 편리한 위치에 세 파일 모두를 둡니다.

  4. bilbo.txt 파일을 bilbo만이 읽을 수 있도록 설정합니다.

    1. bilbo 또는 관리자 권한을 가진 사용자로 로그인합니다.

    2. bilbo.txt를 마우스 오른쪽 버튼으로 누르고 컨텍스트 메뉴에서 속성을 선택합니다.

      bilbo.txt 속성 창이 표시됩니다.

    3. 보안 탭을 누른 다음 고급을 누릅니다.

      bilbo.txt에 대한 고급 보안 설정 창이 표시됩니다.

    4. 상속 가능한 권한 허용을 선택 해제합니다.

      확인 프롬프트가 표시됩니다.

    5. 제거를 클릭합니다.

    6. 고급 보안 설정 창에서 확인을 누릅니다.

  5. 보안 설정에 bilbo를 추가합니다. 추가를 누르고 bilbo를 객체 이름으로 입력한 다음 확인을 누릅니다.

    bilbo.txt 속성 창이 다시 표시됩니다.

  6. Bilbo Baggins의 권한에서 읽기를 선택하고 모든 다른 권한을 선택 해제합니다. 확인을 누릅니다.

마지막으로, IIS를 다시 익명 액세스로 설정합니다. 다음을 수행합니다.

  1. IIS 관리자에서 사이트 이름을 마우스 오른쪽 버튼으로 누르고 컨텍스트 메뉴에서 속성을 선택합니다.

    기본 웹 사이트 속성 창이 표시됩니다.

  2. 디렉터리 보안 탭을 누른 다음 인증 및 액세스 제어 아래의 편집 버튼을 누릅니다.

    인증 방법 창이 표시됩니다.

  3. 익명 액세스 가능을 선택하고 기본 인증을 선택 해제합니다.

    이제 bilbo.txt에 대한 권한이 설정되었으므로 bilbo.aspbilbo.aspx 스크립트 모두 해당 파일에 액세스할 수 없다고 보고합니다. 출력은 다음과 같습니다.

    http://win2k3-iis/bilbo.asp
    bilbo's secret file
    
    Sorry, I can't show you the file.
    
     
    http://win2k3-iis/bilbo.aspx
    bilbo's secret file
    
    Sorry, WIN2K3-IIS\IUSR_WIN2K3-IIS, I can't show you the file.
    
     
    ASP.NET 출력은 IIS가 시스템 ID WIN2K3-IIS\IUSR_WIN2K3-IIS의 컨텍스트에서 실행되고 있음을 보여줍니다. 이는 인증되지 않은 사용자를 대신하여 특별히 IIS가 사용하는 상대적으로 권한이 없는 계정입니다.
기본 인증

다음으로 기본 인증에 대한 IIS를 구성합니다.

  1. IIS 관리자에서 사이트 이름을 마우스 오른쪽 버튼으로 누르고 컨텍스트 메뉴에서 속성을 선택합니다.

  2. 디렉터리 보안 탭을 누른 다음 인증 및 액세스 제어 아래의 편집 버튼을 누릅니다.

    인증 방법 창이 표시됩니다.

  3. 익명 액세스 가능을 선택 해제하고 기본 인증을 선택합니다.

테스트로, bilbo의 두 가지 개인 페이지 http://win2k3-iis/bilbo.asphttp://http://win2k3-iis/bilbo.aspx에 각각 액세스합니다. 올바른 결과는 다음과 같습니다.

기본 ASP에서는 다음 출력에 표시된 것과 같이 bilbo의 비밀 파일을 읽을 수 있습니다.

http://win2k3-iis/bilbo.asp
bilbo's secret file

One identity to rule them all and, in the darkness, bind them.
 

ASP.NET에서는 다음 출력에 표시된 것과 같이 해당 파일을 읽을 수 없습니다.

http://win2k3-iis/bilbo.aspx
bilbo's secret file

Sorry, NT AUTHORITY\NETWORK SERVICE, I can't show you the file.
 

왜일까요? 기본 ASP 모델에서는 IIS가 기본적으로 인증된 사용자로 가장하므로 IIS와 bilbo.asp 모두 bilbo.txt에 액세스할 수 있습니다. ASP.NET에서는 그렇지 않습니다. 사용자 인증 후에도 IIS가 상대적으로 권한이 없는 시스템 계정(IIS 6.0의 경우 NT AUTHORITY\NETWORK SERVICE)의 컨텍스트에서 실행되므로 액세스가 거부됩니다.

해결책으로 web.config 파일을 통해 사용자로 가장하도록 ASP.NET을 구성합니다. 다음과 같이 원하는 디렉토리(예: IIS 루트 문서 폴더(wwwroot))에 해당 파일을 작성합니다.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.web>
    <identity impersonate="true" />
  </system.web>
</configuration>
 

이제 bilbo.aspx는 다음과 같이 파일 내용을 보여줍니다.

http://win2k3-iis/bilbo.aspx
bilbo's secret file

One identity to rule them all and, in the darkness, bind them.
 
URL 권한 부여

ASP.NET에는 다음과 같이 web.config 파일을 통해 ASP.NET 관리 자원에 대한 액세스를 제어하는 메커니즘이 포함되어 있습니다.

<authorization>
  <[allow|deny] users roles verbs />
</authorization>
 

권한 부여를 구성하려면 다음 예에서와 같이 사이트의 루트 web.config 파일에 <authorization> 요소를 두어 이 디렉토리의 자원에만 액세스할 수 있게 합니다.

<authorization>
  <allow users="bilbo"/>
  <deny users="*"/>
</authorization>
 

<authorization>은 각각 일련의 원칙 및 HTTP 동작을 지정하는 allowdeny 요소를 여러 개 포함할 수 있습니다. 자세한 내용은 문서의 ASP.NET 권한 부여 섹션을 참조하십시오.

또는 특정 디렉토리에 대한 설정을 정의하는 web.config 파일을 작성합니다. 이 예에서는 모든 관련 파일이 한 위치에 있도록 앞의 단계를 수행합니다.

  1. 다음과 같이 wwwroot 아래에서 default.aspx 파일을 사용하여 bilbo 디렉토리를 만듭니다.

    <html>
    <head>
    Only bilbo can see this!
    </head>
    <body>
    <p>
    Reminder: Throw ring in Mount Doom!
    </p>
    </body>
    </html>
    
     
    주: 기본적으로 IIS는 .aspx와 같이 ASP.NET에 의해 관리되는 파일 형식에만 권한 부여를 적용합니다. 예를 들어 앞의 파일 이름을 default.htm으로 지정했다면 IIS는 권한 부여를 수행하지 않습니다.

  2. wwwroot\web.config를 편집하고 다음 코드 세그먼트에 굵게 표시된 줄을 추가하여 bilbo만이 새 스크립트를 읽을 수 있도록 합니다.

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <system.web>
        <identity impersonate="true" />
      </system.web>
      <location path="bilbo">
        <system.web>
          <authorization>
    	<allow users="mydomain\bilbo" />
    	<deny users="*" />
          </authorization>
        </system.web>
      </location>
    </configuration>
    
     

이제 bilbohttp://win2k3-iis/bilbo에 액세스합니다. 출력은 권한 부여가 성공적임을 나타냅니다.

Reminder: Throw ring in Mount Doom!
 

bilbo로 인증되지 않은 경우 브라우저에 따라 IIS는 반복적으로 인증서를 다시 입력하라고 메시지를 표시합니다. 세 번의 시도 실패 후 IIS는 다음과 같은 메시지를 표시합니다.

Server Error in '/' Application.
Access is denied.
Description: An error occurred while accessing the resources
required to serve this request. The server may not be configured
for access to the requested URL.

Error message 401.2.: Unauthorized: Logon failed due to server
configuration. Verify that you have permission to view this
directory or page based on the credentials you supplied and the
authentication methods enabled on the Web server. Contact the Web
server's administrator for additional assistance.
 

이 기사의 나머지 부분에서는 Access Manager에서 동일한 정책을 구성하는 방법에 대해 설명합니다. 또한 Access Manager 정책으로의 마이그레이션이 비실용적인 경우 Access Manager를 사용하여 ASP.NET의 URL 권한 부여를 통합하는 방법에 대해서도 설명합니다.

IIS 6.0용 Policy Agent 2.2 배포

Policy Agent는 가장 간단한 구성에서 인증되지 않은 액세스로부터 자원(이 컨텍스트에서는 IIS의 일련의 URL)을 보호합니다. 사용자가 보호된 자원에 액세스하려고 시도하면 Policy Agent가 로그인 페이지를 표시하여 해당 사용자의 이후 인증을 가정하고 Access Manager의 정책과 논의하여 요청된 자원에 대한 권한을 부여할지 결정합니다.

ISAPI(Internet Server API) 응용 프로그램으로서 Policy Agent는 웹 사이트에 매핑되는 와일드카드 응용 프로그램으로 배포됩니다. Policy Agent는 배포되면 해당 사이트의 자원에 대한 액세스 요청을 인터셉트하고 인증 및 정책 평가 작업을 수행합니다. 모든 정책 조건이 충족되면 Policy Agent는 자원에 대한 권한을 부여합니다.

응용 프로그램 풀당 하나의 사이트에 대해 Policy Agent를 구성합니다. 따라서 하나의 시스템에 여러 사이트를 구성하려면 해당 사이트들을 다중 응용 프로그램 풀로 구성합니다.

더욱이 Policy Agent는 URL 정책을 적용하고 사용자 이름, 공통 이름 등과 같은 사용자 프로필 속성을 HTTP 헤더 변수로 복사할 수 있으므로 IIS 응용 프로그램은 인증된 사용자의 ID를 찾을 수 있습니다.

이점

Access Manager 및 Policy Agent는 다음과 같이 웹 서버 수준에서 인증 및 권한 부여를 관리할 수 있는 여러 이점을 제공합니다.

  • 인증은 Access Manager에 집중화되어 있습니다. 사용자 이름 및 비밀번호에서 인증서에 이르기까지 다양한 인증 메커니즘을 사용하고 스마트 카드 및 하드웨어 토큰과 작동하도록 Access Manager를 구성할 수 있습니다. 사용자 정의 메커니즘을 사용하여 Access Manager를 확장할 수도 있습니다.

  • 권한 부여는 전체 엔터프라이즈에 적용되는 일련의 정책에 집중화되어 있습니다. 정책은 "bilbo에게 액세스 허용" 및 "영업 역할을 가진 사용자에게 액세스 거부"와 같은 일반적인 것에 비해 훨씬 더 정교합니다. 예를 들어, 다음과 같은 조건을 포함할 수 있습니다.

    • "이 페이지에는 스마트 카드 인증이 필요합니다."와 같은 특정 인증 메커니즘

    • 다음과 같은 시간 및 날짜
      "월요일 - 금요일 오전 9시 - 오후 5시 일반 사용자에게 액세스 허용"
      "연중무휴 관리자에게 액세스 허용"

    • "VPN을 통해 로그인하는 사용자에게 액세스 거부"

  • Policy Agent는 다양한 웹 컨테이너 및 응용 프로그램에서 사용할 수 있습니다. Sun Java System Web Server 및 Sun Java System Application Server에서 SAP Enterprise Portal 및 Lotus Domino에 이르는 이러한 컨테이너 및 응용 프로그램이 해당합니다(Policy Agent 다운로드 사이트 참조). Access Manager의 C 및 Java SDK를 사용하여 응용 프로그램에서 인증 및 권한 부여를 추출할 수도 있습니다.

  • SSO는 모든 보호된 자원에 걸쳐 사용할 수 있습니다. SAML 2.0 및 Liberty 표준을 통해 엔터프라이즈에 걸쳐 SSO를 확장하는 Access Manager의 통합 기능 때문입니다.
IIS용 Policy Agent의 설치 및 구성
  1. IIS 6.0용 Policy Agent 2.2-01을 다운로드합니다.

  2. Access Manager 콘솔에 로그인하여 모든 인증된 사용자가 IIS 서버의 모든 URL에 액세스할 수 있도록 허용하는 정책 즉, http://win2k3-iis/*를 작성합니다.

  3. AMAgent.properties configuration 파일을 편집합니다. Policy Agent가 HTTP 헤더로 HTTP 요청에 사용자 속성을 삽입하도록 com.sun.am.policy.agents.config.profile.attribute.fetch.modeHTTP_HEADER로 설정합니다.

    com.sun.am.policy.agents.config.profile.attribute.map 특성은 어떤 속성을 삽입할지와 이름을 매핑하는 방법을 Policy Agent에 알립니다.

  4. 응용 프로그램 풀 및 웹 사이트를 다시 시작합니다.

  5. Access Manager에서 ID(uid)가 사용자의 Windows 사용자 이름에 해당하는 사용자를 만듭니다.

    이 연습에서는 두 시스템에 있는 ID 간의 간단한 대응을 사용합니다. com.sun.am.policy.am.userid.param 특성은 어떤 Access Manager 세션 특성을 Windows 사용자 이름에 매핑할지 Policy Agent에 알립니다.
IIS 인증 없음

IIS가 익명 액세스를 할 수 있도록 구성하려면 IIS를 다시 익명 액세스로 설정합니다. 다음 단계를 수행합니다.

  1. IIS 관리자에서 사이트 이름을 마우스 오른쪽 버튼으로 누르고 컨텍스트 메뉴에서 속성을 선택합니다.

    기본 웹 사이트 속성 창이 표시됩니다.

  2. 디렉터리 보안 탭을 누른 다음 인증 및 액세스 제어 아래의 편집 버튼을 누릅니다.

    인증 방법 창이 표시됩니다.

  3. 익명 액세스 가능을 선택하고 기본 인증을 선택 해제합니다.
기본 ASP 동작

위의 설정을 사용하더라도 Policy Agent는 여전히 환영 스크립트에 액세스하려는 시도를 인터셉트하고 사용자의 브라우저를 Access Manager의 로그인 페이지로 리디렉션합니다. Access Manager 사용자 bilbo로 로그인한 후 welcome.asp에 다음과 같은 출력이 표시됩니다.

http://win2k3-iis/welcome.asp
Welcome, Bilbo Baggins!

REMOTE_USER bilbo
LOGON_USER bilbo
AUTH_USER bilbo
HTTP_COMMON_NAME Bilbo Baggins
 

첫 번째 세 개의 변수 값은 기본 인증의 스크립트에 의한 출력과 동일합니다. HTTP_COMMON_NAME의 경우 Access Manager는 이 프로토콜의 결과로 사용자의 LDAP 프로필에서 cn 속성의 검색 결과를 생성합니다.

AMAgent.properties 파일의 com.sun.am.policy.agents.config.profile.attribute.map 특성은 cn에서 common-name으로의 매핑을 정의하고 Access Manager는 이를 다시 HTTP_COMMON_NAME으로 매핑합니다.

Access Manager 및 Policy Agent가 동일한 방법으로 사용자의 LDAP 프로필의 다른 속성을 검색하도록 할 수 있습니다.

ASP.NET 동작

대조적으로 ASP.NET에서 welcome.aspx를 실행하면 다음과 같은 출력이 표시됩니다.

http://win2k3-iis/welcome.aspx
Welcome, Bilbo Baggins!

REMOTE_USER		WIN2K3-IIS\IUSR_WIN2K3-IIS
LOGON_USER		bilbo
AUTH_USER		WIN2K3-IIS\IUSR_WIN2K3-IIS
HTTP_COMMON_NAME	Bilbo Baggins
 

여기에서 IIS는 REMOTE_USERAUTH_USER 변수를 WIN2K3-IIS\IUSR_WIN2K3-IIS, IIS용 기본 익명 시스템 사용자로 설정합니다. Policy Agent가 bilbo로 사용자를 인증하고 시스템 수준에서 LOGON_USER를 설정했더라도 IIS는 여전히 해당 요청을 익명으로 간주합니다.

액세스 거부

이제 기본 ASP를 사용하여 bilbo의 비밀 파일에 액세스하면 다음과 같은 거부 메시지가 표시됩니다.

http://win2k3-iis/bilbo.asp
bilbo's secret file

Sorry, I can't show you the file.
 

ASP.NET에서도 마찬가집니다.

http://win2k3-iis/bilbo.aspx
bilbo's secret file

Sorry, WIN2K3-IIS\IUSR_WIN2K3-IIS, I can't show you the file.
 

두 경우 모두에서 IIS는 해당 파일에 액세스할 수 없습니다. Policy Agent가 사용자를 인증했더라도 IIS 파일 권한 부여 메커니즘은 여전히 해당 액세스를 익명으로 간주합니다. 다음 섹션에서 해결책을 참조하십시오.

HTTP 기본 인증용 Policy Agent 구성

IIS 6.0용 Policy Agent 2.2를 사용하면 기본 인증에 대한 ISAPI 필터를 구성할 수 있습니다. ISAPI 필터를 IIS에 설치하고 Microsoft Internet Information Services 6.0용 Sun Java System Access Manager Policy Agent 2.2 안내서의 부록 A에 설명된 대로 Access Manager 사후 인증 플러그인을 구성하기만 하면 됩니다. 마지막으로, IIS를 다시 기본 인증으로 재구성합니다.

이후에, 환영 스크립트에 액세스하려면 다음 출력과 같이 기본 인증에 대한 출력 없이 bilbo로 Access Manager를 인증하기만 하면 됩니다.

http://win2k3-iis/welcome.asp
Welcome, Bilbo Baggins!

REMOTE_USER	  bilbo
LOGON_USER	  bilbo
AUTH_USER	  bilbo
HTTP_COMMON_NAME  Bilbo Baggins
 
http://win2k3-iis/welcome.aspx
Welcome, Bilbo Baggins!

REMOTE_USER	  MYDOMAIN\bilbo
LOGON_USER	  bilbo
AUTH_USER	  MYDOMAIN\bilbo
HTTP_COMMON_NAME  Bilbo Baggins
 

AUTH_USERREMOTE_USER는 로컬 IIS 사용자 WIN2K3-IIS\IUSR_WIN2K3-IIS가 아니라 MYDOMAIN\bilbo로 설정되어 있음에 주의하십시오.

테스트

bilbo.aspbilbo.aspx의 액세스에 의한 bilbo의 비밀 파일 출력은 동일합니다.

http://win2k3-iis/bilbo.asp
bilbo's secret file

One identity to rule them all and, in the darkness, bind them.
 
http://win2k3-iis/bilbo.aspx
bilbo's secret file

One identity to rule them all and, in the darkness, bind them.
 

다시 말해 bilbo로 파일에 성공적으로 액세스했습니다!

다른 사용자(예: frodo)로 로그인하면 기대한 대로 환영 메시지의 이 두 가지 인스턴스가 표시됩니다.

http://win2k3-iis/welcome.asp
Welcome, Frodo Baggins!

REMOTE_USER		frodo
LOGON_USER		frodo
AUTH_USER		frodo
HTTP_COMMON_NAME	Frodo Baggins
 
http://win2k3-iis/welcome.aspx
Welcome, Bilbo Baggins!

REMOTE_USER MYDOMAIN\frodo
LOGON_USER frodo
AUTH_USER MYDOMAIN\frodo
HTTP_COMMON_NAME Frodo Baggins
 

파일 액세스의 경우는 어떨까요? 물론 액세스할 수 없습니다.

http://win2k3-iis/bilbo.asp
bilbo's secret file

Sorry, frodo, I can't show you the file.
 
http://win2k3-iis/bilbo.aspx
bilbo's secret file

Sorry, MYDOMAIN\frodo, I can't show you the file.
 

따라서 기본 인증 및 가장에 대해 IIS가 구성된 상태에서 Policy Agent는 디스크의 파일 액세스 수준까지 IIS를 Access Manager 인프라에 통합합니다.

URL 권한 부여

앞의 구성에 뒤이어 URL 권한 부여의 동작을 보려면 먼저 bilbobilbo의 디렉토리에 있는 스크립트에 액세스합니다. 성공을 입증하는 출력은 다음과 같습니다.

http://win2k3-iis/bilbo
Reminder: throw ring in Mount Doom!
 

다음으로, frodo로 로그인합니다. 앞에서 설명한 대로 동일한 반응 즉, 인증서를 다시 입력하라는 메시지가 표시됩니다. 세 번의 시도 실패 후 IIS는 다음과 같은 오류 메시지를 표시합니다.

Server Error in '/' Application.
Access is denied.
Description: An error occurred while accessing the resources
required to serve this request. The server may not be configured
for access to the requested URL.

Error message 401.2.: Unauthorized: Logon failed due to server
configuration. Verify that you have permission to view this
directory or page based on the credentials you supplied and the
authentication methods enabled on the Web server. Contact the Web
server's administrator for additional assistance.
 
결론

IIS 인증 메커니즘을 사용하는 .NET 웹 응용 프로그램의 경우 Policy Agent가 이 응용 프로그램에 대한 SSO 및 액세스 제어를 관리하도록 IIS를 다시 구성할 수 있습니다. 자체 인증을 수행하는 응용 프로그램(예: 플랫 파일 또는 데이터베이스)의 경우 인증 코드를 삭제하고 대신 LOGON_USER 서버 변수를 사용하기만 하면 됩니다.

향후 기사 미리보기

향후 기사에서는 Access Manager를 SharePoint Portal Server 2003 및 Microsoft Exchange 2003의 Outlook Web Access와 통합하는 방법에 대해 설명합니다 .

감사의 말씀

이 기사가 게시되기 전에 자세히 검토하고 여러 개선 사항을 제안해준 Microsoft ASP.NET 팀의 Stefan Schakow의 공헌에 깊은 감사를 드립니다. 오류가 있는 경우 이는 물론 저자들의 책임입니다.

참조
BigAdmin
  
 
BigAdmin Upgrade Hub