ASP.NET Web API의 폼 인증Forms Authentication in ASP.NET Web API

Mike Wassonby Mike Wasson

폼 인증은 HTML 폼을 사용 하 여 사용자의 자격 증명을 서버에 보냅니다.Forms authentication uses an HTML form to send the user's credentials to the server. 인터넷 표준이 아닙니다.It is not an Internet standard. 폼 인증은 사용자가 HTML 양식과 상호 작용할 수 있도록 웹 응용 프로그램에서 호출 되는 웹 Api에만 적합 합니다.Forms authentication is only appropriate for web APIs that are called from a web application, so that the user can interact with the HTML form.

장점Advantages 단점Disadvantages
-간편한 구현: ASP.NET에 기본 제공 됩니다.- Easy to implement: Built into ASP.NET. -ASP.NET 멤버 자격 공급자를 사용 하 여 사용자 계정을 쉽게 관리할 수 있습니다.- Uses ASP.NET membership provider, which makes it easy to manage user accounts. -표준 HTTP 인증 메커니즘이 아닙니다. 표준 권한 부여 헤더 대신 HTTP 쿠키를 사용 합니다.- Not a standard HTTP authentication mechanism; uses HTTP cookies instead of the standard Authorization header. -브라우저 클라이언트가 필요 합니다.- Requires a browser client. -자격 증명이 일반 텍스트로 전송 됩니다.- Credentials are sent as plaintext. -CSRF (교차 사이트 요청 위조)에 취약 합니다. CSRF 측정값이 필요 합니다.- Vulnerable to cross-site request forgery (CSRF); requires anti-CSRF measures. -비 브라우저 클라이언트에서 사용 하기 어렵습니다.- Difficult to use from nonbrowser clients. 로그인 하려면 브라우저가 필요 합니다.Login requires a browser. -사용자 자격 증명이 요청에서 전송 됩니다.- User credentials are sent in the request. -일부 사용자가 쿠키를 사용 하지 않도록 설정 합니다.- Some users disable cookies.

간단히 말해서 ASP.NET의 폼 인증은 다음과 같이 작동 합니다.Briefly, forms authentication in ASP.NET works like this:

  1. 클라이언트가 인증을 요구 하는 리소스를 요청 합니다.The client requests a resource that requires authentication.
  2. 사용자가 인증 되지 않은 경우 서버는 HTTP 302 (찾음)을 반환 하 고 로그인 페이지로 리디렉션합니다.If the user is not authenticated, the server returns HTTP 302 (Found) and redirects to a login page.
  3. 사용자가 자격 증명을 입력 하 고 양식을 전송 합니다.The user enters credentials and submits the form.
  4. 서버는 다시 원래 URI로 리디렉션하는 다른 HTTP 302을 반환 합니다.The server returns another HTTP 302 that redirects back to the original URI. 이 응답에는 인증 쿠키가 포함 되어 있습니다.This response includes an authentication cookie.
  5. 클라이언트에서 리소스를 다시 요청 합니다.The client requests the resource again. 요청은 인증 쿠키를 포함 하므로 서버에서 요청을 부여 합니다.The request includes the authentication cookie, so the server grants the request.

자세한 내용은 폼 인증 개요 를 참조 하세요.For more information, see An Overview of Forms Authentication.

Web API에서 폼 인증 사용Using Forms Authentication with Web API

폼 인증을 사용 하는 응용 프로그램을 만들려면 MVC 4 프로젝트 마법사에서 "인터넷 응용 프로그램" 템플릿을 선택 합니다.To create an application that uses forms authentication, select the "Internet Application" template in the MVC 4 project wizard. 이 템플릿은 계정 관리를 위한 MVC 컨트롤러를 만듭니다.This template creates MVC controllers for account management. ASP.NET-2012 업데이트에서 사용할 수 있는 "단일 페이지 응용 프로그램" 템플릿을 사용할 수도 있습니다.You can also use the "Single Page Application" template, available in the ASP.NET Fall 2012 Update.

Web API 컨트롤러에서 [권한 부여] 특성 사용에 설명 된 대로 [Authorize] 특성을 사용 하 여 액세스를 제한할 수 있습니다.In your web API controllers, you can restrict access by using the [Authorize] attribute, as described in Using the [Authorize] Attribute.

폼 인증은 세션 쿠키를 사용 하 여 요청을 인증 합니다.Forms-authentication uses a session cookie to authenticate requests. 브라우저는 모든 관련 쿠키를 대상 웹 사이트로 자동으로 보냅니다.Browsers automatically send all relevant cookies to the destination web site. 이 기능을 통해 폼 인증은 CSRF (교차 사이트 요청 위조) 공격에 취약할 수 있습니다. CSRF (교차 사이트 요청 위조) 공격 방지를 참조 하세요.This feature makes forms authentication potentially vulnerable to cross-site request forgery (CSRF) attacks See Preventing Cross-Site Request Forgery (CSRF) Attacks.

폼 인증에서는 사용자의 자격 증명을 암호화 하지 않습니다.Forms authentication does not encrypt the user's credentials. 따라서 폼 인증은 SSL과 함께 사용 하지 않는 한 안전 하지 않습니다.Therefore, forms authentication is not secure unless used with SSL. WEB API에서 SSL사용을 참조 하세요.See Working with SSL in Web API.