ASP.NET 권한 부여
업데이트: 2007년 11월
권한 부여에 따라 ID에 특정 리소스에 대한 액세스 권한을 부여할지 여부가 결정됩니다. ASP.NET에서는 다음 두 가지 방법으로 지정된 리소스에 대한 액세스 권한을 부여할 수 있습니다.
파일 권한 부여 파일 권한 부여는 FileAuthorizationModule에 의해 수행됩니다. .aspx 또는 .asmx 처리기 파일의 ACL(액세스 제어 목록)을 검사하여 사용자에게 파일 액세스 권한이 있는지 여부를 확인합니다. ACL 권한은 사용자의 Windows ID(Windows 인증이 설정된 경우) 또는 ASP.NET 프로세스의 Windows ID에 대해 확인됩니다. 자세한 내용은 ASP.NET 가장을 참조하십시오.
URL 권한 부여 URL 권한 부여는 사용자와 역할을 ASP.NET 응용 프로그램의 URL에 매핑하는 UrlAuthorizationModule에 의해 수행됩니다. 이 모듈을 사용하면 특정 사용자 또는 역할에 응용 프로그램의 임의 부분(일반적으로 사전)에 대한 액세스를 선택적으로 허용하거나 거부할 수 있습니다.
URL 권한 부여 사용
URL 권한 부여를 사용하면 사용자 이름 또는 역할을 기준으로 특정 디렉터리에 대한 액세스를 명시적으로 허용하거나 거부합니다. 이렇게 하려면 해당 디렉터리의 구성 파일에 authorization 섹션을 만듭니다. URL 권한 부여를 사용하도록 설정하려면 구성 파일의 authorization 섹션 중 allow 또는 deny 요소에 사용자 또는 역할 목록을 지정합니다. 해당 디렉터리에 설정된 사용 권한은 하위 디렉터리에 있는 구성 파일이 이 사용 권한을 재정의하지 않는 한 하위 디렉터리에도 적용됩니다.
다음은 authorization 섹션의 구문을 보여 줍니다.
<authorization>
<[allow|deny] usersrolesverbs />
</authorization>
allow 또는 deny 요소는 필수 항목입니다. users 또는 roles 특성을 지정해야 합니다. 둘 다 포함될 수도 있지만 모두 필요하지는 않습니다. verbs 특성은 선택적입니다.
allow 및 deny 요소는각각 액세스 권한을 부여하고 취소합니다. 다음 표에서는 각 요소에서 지원하는 특성을 보여 줍니다.
특성 |
설명 |
---|---|
users |
이 요소의 대상 ID(사용자 계정)를 식별합니다. 익명 사용자는 물음표(?)를 사용하여 식별합니다. 별표(*)를 사용하여 인증된 모든 사용자를 지정할 수 있습니다. |
roles |
리소스에 대한 액세스가 허용 또는 거부된 현재 요청의 역할(RolePrincipal 개체)을 식별합니다. 자세한 내용은 역할을 사용하여 권한 부여 관리를 참조하십시오. |
verbs |
GET, HEAD 및 POST처럼 작업이 적용되는 HTTP 동사를 정의합니다. 기본값은 "*"로, 모든 동사를 지정합니다. |
다음 예제에서는 Kim ID와 Admins 역할의 멤버에게 액세스 권한을 부여하고 John ID(John ID가 Admins 역할에 포함되어 있지 않은 경우)와 모든 익명 사용자의 액세스를 거부합니다.
<authorization>
<allow users="Kim"/>
<allow roles="Admins"/>
<deny users="John"/>
<deny users="?"/>
</authorization>
다음 authorization 섹션에서는 John ID에 액세스 권한을 부여하고 다른 모든 사용자의 액세스를 거부하는 방법을 보여 줍니다.
<authorization>
<allow users="John"/>
<deny users="*"/>
</authorization>
다음 예제와 같이 쉼표로 구분된 목록을 사용하여 users 및 roles 특성에 대해 각각 여러 개의 엔터티를 지정할 수 있습니다.
<allow users="John, Kim, contoso\Jane"/>
도메인 계정 이름을 지정하는 경우 이름에 도메인과 사용자 이름(contoso\Jane)을 모두 포함해야 합니다.
다음 예제에서는 모든 사용자가 리소스에 대해 HTTP GET을 수행할 수 있지만 Kim ID만 POST 작업을 수행할 수 있습니다.
<authorization>
<allow verbs="GET" users="*"/>
<allow verbs="POST" users="Kim"/>
<deny verbs="POST" users="*"/>
</authorization>
규칙은 다음과 같이 적용됩니다.
응용 프로그램 수준 구성 파일에 포함된 규칙이 상속된 규칙보다 우선 순위가 높습니다. 시스템은 목록의 처음에 가장 최근 규칙(계층 구조에서 가장 가까운 규칙)이 오도록 URL에 대한 모든 규칙의 병합 목록을 만들어서 먼저 적용될 규칙을 결정합니다.
응용 프로그램에 대한 병합된 규칙 집합에서 ASP.NET은 목록의 처음에서 시작하여 첫 번째 일치가 발견될 때까지 규칙을 검사합니다. ASP.NET의 기본 구성에는 모든 사용자에게 권한을 부여하는 <allow users="*"> 요소가 들어 있습니다. 기본적으로 이 규칙은 마지막으로 적용됩니다. 일치하는 다른 권한 부여 규칙이 없으면 요청은 허용됩니다. 일치하는 규칙이 있고 이것이 deny 요소이면 요청에 대해 401 HTTP 상태 코드가 반환됩니다. allow 요소가 일치하면 모듈은 요청이 계속 처리되도록 합니다.
구성 파일에서 location 요소를 만들어 location 요소를 설정에 적용해야 하는 특정 파일이나 디렉터리를 지정할 수도 있습니다.