정보: ASP.NET 보안 개요

기술 자료 번역 기술 자료 번역
기술 자료: 306590 - 이 문서가 적용되는 제품 보기.
이 문서는 이전에 다음 ID로 출판되었음: KR306590
이 문서에서는 다음 Microsoft.net에 참조 Framework 클래스 라이브러리 네임 스페이스:
  • System.Web.Security
  • System.Web.Principal
모두 확대 | 모두 축소

이 페이지에서

요약

이 문서에서는 ASP.NET에 소개 보안입니다.

ASP.NET 개요에 대 한 추가, 다음을 참조합니다 Microsoft 기술 자료 문서를 참조 하십시오.
305140 정보: ASP.NET 로드맵

추가 정보

ASP.NET에 대 한 보안을 구현 하도록 더 자세히 제어할 수 있습니다. 응용 프로그램입니다. ASP.NET 보안 Microsoft 인터넷 정보 서비스 함께 작동 (IIS) 보안 및 인증 및 권한 부여 서비스를 포함 합니다. ASP.NET 보안 모델을 구현 합니다. 역할 기반 ASP.NET도 포함 됩니다. 두 Microsoft Windows에 구현 하 여 보안 기능 및 비 Windows 사용자 계정입니다.

이 문서는 다음으로 구성 됩니다. 섹션:

요청과 보안 절차

다음 단계는 클라이언트 이벤트 시퀀스를 요약 요청:
  1. 클라이언트는 IIS에 있는.aspx 페이지를 요청 합니다. 서버입니다.
  2. 클라이언트의 자격 증명이 IIS로 전달 됩니다.
  3. IIS는 클라이언트를 인증 하 고 인증 된 ASP.NET 작업자 프로세스는 클라이언트의 요청과 함께 토큰입니다.
  4. IIS에서 인증 된 토큰을 기반으로 하는 ASP.NET 구성 설정은 웹 응용 프로그램에 대 한 결정 여부 요청을 처리 하는 스레드에서 사용자를 가장 합니다. 서로 다른 ASP.NET, ASP.NET 및 Active Server Pages (ASP) 간의 차이가 없습니다. 더 이상 기본적으로 인증 된 사용자를 가장합니다. 가장을 사용 하려면 true로 지정하는 Web.config 파일에 identity 섹션의 가장 특성을 설정 해야 합니다.
보안 흐름에 대 한 자세한 내용은 참조 하는 다음 항목에.NET Framework 소프트웨어 개발 키트 (SDK) 설명서:
ASP.NET 데이터 흐름
http://msdn.microsoft.com/en-us/library/xa68twcb (vs.71).aspx
에 대 한 자세한 내용은 ASP.NET에서 가장, 문서를 보려면 아래 문서 번호를 클릭 Microsoft 기술 자료:
306158 정보: ASP.NET 응용 프로그램에서 가장을 구현

관련된 구성 설정

IIS에서 IIS 보안 관련 구성 설정을 유지 관리 메타 베이스입니다. 그러나 보안 (및 기타) ASP.NET 유지 관리 구성 확장 가능한 태그 언어 (XML) 구성 파일에서 설정 합니다. 하지만이 응용 프로그램에서 보안의 단순해 관점에서 응용 프로그램을 채택 하는 보안 모델을 해야 할의 IIS 메타 베이스 및 ASP.NET 응용 프로그램의 올바른 구성 해당 구성 파일 (Web.config).

다음 구성 섹션 ASP.NET 보안에 관련 된:

인증

인증 프로세스 식별 얻을입니다. 사용자 이름 및 암호와 같은 자격 증명 및 자격 증명 유효성 검사 일부 기관에 대해.

ASP.NET 4 개의 인증 제공 공급자:

폼 인증

폼 인증 참조 하는 시스템에는 인증 되지 않은 하이퍼텍스트 마크업 언어 (HTML) 폼은 요청이 리디렉션됩니다. 사용자 자격 증명을 입력 합니다. 사용자 자격 증명을 제공 하 고 제출 후 폼을 응용 프로그램을 시스템 문제 및 요청을 인증 된 쿠키 형태로 인증 티켓입니다. 이 쿠키에 포함 된 자격 증명이 나 키 id를 얻으려면. 후속 요청은 브라우저 쿠키를 자동으로 포함 됩니다.

에 대 한 자세한 내용은 폼 인증.NET Framework sdk에서는 다음 항목을 참조 하십시오. 설명서:
폼 인증 공급자
http://msdn.microsoft.com/en-us/library/907hb5w9 (vs.71).aspx
에 대 한 자세한 내용은 폼 인증, ASP.NET에서 문서를 클릭 합니다. Microsoft 기술 자료의 다음 문서를 참조 자료:
301240 방법: 폼에 기반한 구현 C#.net을 사용 하 여 ASP.NET 응용 프로그램에서 인증

Windows 인증

Windows 인증에서 IIS는 인증을 수행 하 고 인증 된 토큰 ASP.NET 작업자 프로세스에 전달 됩니다. Windows를 사용 합니다. 인증 코딩 작업이 매우 적다는 것입니다. Windows를 사용 할 수 있습니다. IIS 인증에 Windows 사용자 계정을 가장 하는 인증 전달 하기 전에 요청을 ASP.NET.

자세한 내용은 다음 항목에는.net Windows 인증에 대 한 참조 Framework SDK 설명서를 참조 하십시오.
WindowsAuthenticationModule 공급자
http://msdn.microsoft.com/en-us/library/907hb5w9 (vs.71).aspx

Passport 인증

Passport 인증 중앙 집중화 된 인증 서비스입니다, 단일 로그온과 핵심 프로필 서비스를 제공 하는 Microsoft에서 제공 하는 멤버 사이트에 대 한. Passport 인증을 해야 하는 경우 일반적으로 사용 됩니다. 단일 로그온 기능이 여러 도메인입니다.

자세한 내용은 Passport 인증에 대 한 내용은 다음 항목에 .NET Framework SDK 설명서:
Passport 인증 공급자
http://msdn.microsoft.com/en-us/library/f8e50t0f (vs.71).aspx

기본 인증

모든 보안 하지 않을 경우 기본 인증 사용 웹 응용 프로그램에서. 익명 액세스에 대 한이 보안 필요 공급자입니다. 인증 공급자 중에서 기본 인증 제공 응용 프로그램에 대 한 최대 성능입니다. 이 인증 공급자도 있습니다. 사용자 고유의 사용자 지정 보안 모듈을 사용할 때 사용 합니다.

권한 부여

인증 된 경우 확인 하는 프로세스는 인증 된 요청 된 리소스에 액세스할 수 있습니다.

ASP.NET 제공 된 다음과 같은 권한 부여 공급자:

FileAuthorization

FileAuthorizationModule 클래스 파일 권한 부여를 수행 하 고 사용할 때 활성화 됩니다. Windows 인증입니다. FileAuthorizationModule Windows 액세스 제어에 대 한 검사를 수행 하는 (Acl) 사용자가 액세스 권한이 있는지 여부를 보여 줍니다.

UrlAuthorization

UrlAuthorizationModule 클래스 (URL) 권한 부여 수행 URI 네임 스페이스에 따라 권한을 제어 합니다. URI 네임 스페이스를 사용할 수 있습니다. 전혀 다른 실제 폴더 및 파일 경로에서 해당 NTFS 사용 권한 다음 중 하나를 사용 합니다.

UrlAuthorizationModule 은 긍정적이 고 부정적인 권한 부여 어설션을 모두 구현합니다. 모듈을 사용 하 여 선택적으로 허용 하거나 거부 하려면 액세스 역할 (예: 관리자, 사용자에 대 한 URI 네임 스페이스의 임의 구역 테스터 및 관리자) 및 동사 (예: GET 및 POST).

에 대 한 권한 부여, ASP.NET에 대 한 자세한 내용은 다음 항목을 참조 하십시오 .NET Framework SDK 설명서에서:
ASP.NET 권한 부여
http://msdn.microsoft.com/en-us/library/wce3kxhd (vs.71).aspx

역할 기반 보안

ASP.NET에서 역할 기반 보안은 역할 기반 유사 COM + 및 Microsoft 트랜잭션 서버 (MTS)를 사용 하는 보안 하지만 중요 한 차이점이 있습니다. 역할 기반 보안에서 ASP.NET 수 없습니다. Windows 계정과 그룹을 제한 합니다. 예를 들어, 경우 Windows 인증 가장을 사용 하도록 설정 하 고 id는 사용자의 Windows id가 (User.Identity.Name = "도메인 \ 사용자 이름"). Id를 확인할 수 있습니다. 특정 역할의 구성원 및 그에 따라 액세스를 제한 합니다. 에 대 한 예제:

Visual Basic.net 코드
If User.IsInRole("BUILTIN\Administrators") Then
   Response.Write("You are an Admin")
Else If User.IsInRole("BUILTIN\Users") then
   Response.Write("You are a User")
Else
   Response.Write("Invalid user")
End if
				
Visual C#.net 코드
if ( User.IsInRole("BUILTIN\\Administrators"))
   Response.Write("You are an Admin");
else if (User.IsInRole("BUILTIN\\Users"))
   Response.Write("You are a User");
else
   Response.Write("Invalid user");
				
폼 인증을 사용 하는 경우 역할 할당 되어 있지는 인증 된 사용자. 프로그래밍 방식으로 수행 해야 합니다. 역할에 할당 하는 사용자 인증 (은 폼 인증 모듈의 OnAuthenticate 이벤트를 사용 합니다. 이 예제에서는 인증 모듈) 하 여 새로운 GenericPrincipal 개체를 만들고 Httpcontext의 User 속성에 할당 합니다. 다음 코드를 보여 줍니다. 이:

Visual Basic.net 코드
Public Sub Application_AuthenticateRequest(s As Object, e As EventArgs)
   If (Not(HttpContext.Current.User Is Nothing)) Then
      If HttpContext.Current.User.Identity.AuthenticationType = "Forms" Then
         Dim id as System.Web.Security.FormsIdentity = HttpContext.Current.User.Identity
         Dim myRoles(3) As String
         myRoles(0)= "managers"
         myRoles(1)= "testers"
         myRoles(2)= "developers"
         HttpContext.Current.User = new System.Security.Principal.GenericPrincipal(id,myRoles) 
      End If
   End If
End Sub
				
Visual C#.net 코드
public void Application_AuthenticateRequest(Object s, EventArgs e)      
{
   if (HttpContext.Current.User != null)
   {
      if (HttpContext.Current.User.Identity.AuthenticationType == "Forms" ) 
      {
         System.Web.Security.FormsIdentity id = HttpContext.Current.User.Identity;
         String[] myRoles = new String[3];
         myRoles[0]= "managers";
         myRoles[1]= "testers";
         myRoles[2]= "developers";
         HttpContext.Current.User = new System.Security.Principal.GenericPrincipal(id,myRoles);
      }
   }
} 
				
사용자가 특정 역할에 있는지 확인 하 여 액세스를 제한 합니다. 따라서 다음 코드를 사용 (또는 유사한).aspx 페이지에서:

Visual Basic.net 코드
If User.IsInRole("managers") Then
   Response.Write("You are a Manager")
Else If  User.IsInRole("testers") Then
   Response.Write("You are a Tester")
Else If User.IsInRole("developers") Then
   Response.Write("You are a Developer")
End if
				
Visual C#.net 코드
if (User.IsInRole("managers"))
   Response.Write("You are a Manager");
else if (User.IsInRole("testers"))
   Response.Write("You are a Tester");
else if (User.IsInRole("developers"))
   Response.Write("You are a Developer");
				
자세한 내용은 클릭 Microsoft 기술 자료의 다음 문서를 참조 자료:
306238 방법: 역할 기반 구현 Visual Basic.net을 사용 하 여 ASP.NET 응용 프로그램에서 폼 기반 인증으로 보안
역할 기반 보안에 대 한 자세한 내용은 참조 하십시오. .NET Framework SDK 설명서의 다음 항목으로:
역할 기반 보안
http://msdn.microsoft.com/en-us/library/52kd59t0 (vs.71).aspx

참조

ASP.NET 보안 지침에 대 한 자세한 내용은 다음 MSDN 백서:
ASP.NET에서 인증:.net 보안 지침
http://msdn.microsoft.com/en-us/library/ms978378.aspx
ASP.NET에 대 한 자세한 내용은 참조 하는 다음 MSDN 뉴스 그룹:
microsoft.public.dotnet.framework.aspnet
자세한 내용은 클릭 Microsoft 기술 자료의 다음 문서 번호를 아래:
311094 BUG: "ConfigurationException" 오류 메시지를 가장 하는 경우 읽기 구성 계정
306359 PRB: Request.ServerVariables("LOGON_USER") 빈 문자열을 반환에 ASP.NET
313091 방법:.net Visual Basic 사용 하 여 Forms 인증에서 사용할 키를 만드는
313116 PRB: 폼 인증 요청이 loginUrl 페이지에 이동 되지 않습니다.
자세한 내용은 다음 설명서를 참조 하십시오.
Reilly, Douglas J. Microsoft ASP.NET 응용 프로그램 디자인. Microsoft Press, 2001입니다.

Dino Esposito입니다.ASP.NET 및 ADO.NET 웹 솔루션 빌드. Microsoft Press, 2001입니다.

속성

기술 자료: 306590 - 마지막 검토: 2012년 6월 28일 목요일 - 수정: 1.0
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft ASP.NET 1.0
  • Microsoft ASP.NET 1.1
키워드:?
kbproductlink kbarttyperoadmap kbconfig kbinfo kbsecurity kbweb kbmt KB306590 KbMtko
기계 번역된 문서
중요: 본 문서는 전문 번역가가 번역한 것이 아니라 Microsoft 기계 번역 소프트웨어로 번역한 것입니다. Microsoft는 번역가가 번역한 문서 및 기계 번역된 문서를 모두 제공하므로 Microsoft 기술 자료에 있는 모든 문서를 한글로 접할 수 있습니다. 그러나 기계 번역 문서가 항상 완벽한 것은 아닙니다. 따라서 기계 번역 문서에는 마치 외국인이 한국어로 말할 때 실수를 하는 것처럼 어휘, 구문 또는 문법에 오류가 있을 수 있습니다. Microsoft는 내용상의 오역 또는 Microsoft 고객이 이러한 오역을 사용함으로써 발생하는 부 정확성, 오류 또는 손해에 대해 책임을 지지 않습니다. Microsoft는 이러한 문제를 해결하기 위해 기계 번역 소프트웨어를 자주 업데이트하고 있습니다.
이 문서의 영문 버전 보기:306590

피드백 보내기

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com