1 / 88

인증 (Authentication) 과 권한 부여 (Authorization) 로그인 컨트롤 사용하기 멤버 자격 API 와 역할 관리자

13 보안 (Security). 인증 (Authentication) 과 권한 부여 (Authorization) 로그인 컨트롤 사용하기 멤버 자격 API 와 역할 관리자. 인증과 권한 부여. 인증과 권한 부여의 개념

Download Presentation

인증 (Authentication) 과 권한 부여 (Authorization) 로그인 컨트롤 사용하기 멤버 자격 API 와 역할 관리자

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 13보안(Security) 인증(Authentication)과 권한 부여(Authorization) 로그인 컨트롤 사용하기 멤버 자격 API와 역할 관리자

  2. 인증과 권한 부여 • 인증과 권한 부여의 개념 • 인증과 권한 부여의 개념을 설명하기 위해 회원제 웹 사이트를 예로 들어보겠습니다. 회원제 웹 사이트에서 회원은 회원에게만 공개되는 콘텐츠(정보 또는 기능)에 접근하기 위해 반드시 아이디와 암호를 입력하는 로그인 과정을 거치는데 이러한 과정이 바로 인증(authentication)입니다. 즉, 인증은 특정 사용자가 유효한 사용자인지를 판단하는 과정을 의미합니다. • 또한 인증 받았거나(인증된 사용자) 인증 받지 않은 사용자(익명 사용자)는 웹 사이트의 정책에 따라 콘텐츠에 접근 할 수 있는 자격이 일부 제한될 수 있습니다. 예를 들어 자유 게시판의 글을 읽는 것은 인증된 사용자 또는 익명 사용자 모두 가능합니다. 하지만 글을 쓰는 것은 인증된 사용자만 가능하게 해두는 것이 보통입니다. 또한 공지 게시판 같은 경우는 인증된 사용자 및 익명 사용자 모두 글을 읽을 수는 있지만 인증된 사용자라고 하더라도 글을 쓸 수는 없습니다. 공지 게시판에 글을 쓸 수 있는 사용자는 관리자 계정을 가진 사용자로 제한하는 것이 보통입니다. 이렇게 웹 사이트에 존재하는 모든 사용자들은 웹 사이트 정책에 따라 그 부류 별로 콘텐츠에 대한 접근이 제한 되는데 이것을 권한 부여(authorization)라고 합니다. 즉, 권한 부여는 특정 사용자가 웹 사이트에서 제공하는 콘텐츠(정보 또는 기능)에 접근 가능한지를 판단하는 과정을 의미합니다. • 회원제로 운영되는 모든 웹 사이트는 이렇게 인증과 권한 부여를 기초로 해서 보안 메커니즘을 구성합니다.

  3. 인증과 권한 부여 • ASP.NET의 인증 종류 • ASP.NET에서 사용하는 인증 방식은 크게 다음과 같은 네 가지로 나뉩니다. [ASP.NET 인증 방식]

  4. 인증과 권한 부여 <여기서 잠깐> 쿠키(cookie)란? 쿠키는 사전적 의미로 ‘비스킷’, ‘납작한 과자’ 등의 뜻을 가지지만 컴퓨터 용어로 사용될 때는 인터넷 접속 시 사용자 정보를 클라이언트 PC에 저장하는 파일의 의미로 사용됩니다. 그러므로 쿠키를 사용하면 각 사용자의 정보를 저장할 수 있을 뿐만 아니라 인증과 관련된 정보도 함께 저장할 수 있습니다. 쿠키는 각 Windows 계정 별로 다음과 같은 위치에 .txt 파일로 저장됩니다. C:\Documents and Settings\User\Cookies\

  5. 인증과 권한 부여 • ASP.NET 1.x에서는 주로 사용자 지정 인증 방식을 사용해서 인증 처리를 했던 것이 사실 입니다. 이것은 물론, 인증 처리 코드를 직접 작성해야 하는 어려움도 있지만 웹 사이트의 인증과 관련된 부분을 세밀하게 제어할 수 있는 장점이 있었기 때문입니다. 하지만 이 책에서는 ASP.NET 2.0에서 제공해주는 새로운 인증 관련 클래스 및 로그인 컨트롤을 사용하기 위해 폼 기반 인증을 사용할 것입니다.

  6. 인증과 권한 부여 • 다음은 ASP.NET 2.0에 새로 추가된 로그인 컨트롤의 모습입니다.

  7. 인증과 권한 부여 • 폼 기반 인증 • 폼 기반 인증은 위에서도 간단히 설명 했듯이 쿠키와 ASP.NET에서 제공해주는 인증 관련 API를 사용해서 인증 처리를 하는 것을 말합니다.다음은 폼 기반 인증의 처리과정을 도식화한 그림입니다.

  8. 인증과 권한 부여 • 접근이 제한된 페이지를 사용자가 요청하게 되면 우선, 인증 쿠키 존재 여부를 확인해서 인증 과정을 거칩니다. 만약 인증 쿠키가 존재한다면 이번에는 페이지 접근 권한 여부를 묻게 되고 페이지 접근 권한이 있다면 최종적으로 요청한 페이지에 접근하게 됩니다. 하지만 인증 과정에서 인증 쿠키가 존재하지 않는다면 우리가 흔히 웹 사이트에서 볼 수 있는 로그인 페이지로 이동하여 아이디 및 암호를 입력하고 인증 과정을 거치게 됩니다. 유효한 아이디와 암호라면 클라이언트 PC에 인증 쿠키가 자동으로 생성되고 인증 처리가 완료됩니다. 인증 처리가 완료 되면 다시 사용자의 권한 여부가 체크되고 요청한 페이지에 대한 접근 여부를 판단 하게 됩니다. • 폼 기반 인증을 사용하기 위해서는 먼저 다음과 같이 구성 파일을 수정해 주어야 합니다.

  9. 인증과 권한 부여 <configuration> <system.web> <authentication mode="Forms" /> </system.web> </configuration> • Web.config 파일을 생성하면 기본적으로 <authentication> 요소의 mode 특성이 Windows로 지정 됩니다. 즉, ASP.NET의 기본 인증은 윈도우 기반 인증이라는 뜻이며 이것을 Forms로 수정하면 폼 기반 인증으로 변경할 수 있습니다. mode 특성에는 Windows, Forms 외에 Passport 및 None 값을 지정할 수 있으며 이것은 위의 표에서 소개한 인증 방식과 일치합니다. 참고로 None은 사용자 지정 인증 방식을 의미합니다.

  10. 인증과 권한 부여 • [예제 13-1] 폼 기반 인증 예제

  11. 인증과 권한 부여 <여기서 잠깐> API(Application Interface)란? API는 응용 프로그램 인터페이스라고도 하며 특정 응용 프로그램의 기능을 손쉽게 이용할 수 있도록 해주는 인터페이스를 의미합니다. API는 메서드 또는 속성 등의 형태로 제공되는 것이 보통입니다.

  12. 인증과 권한 부여 • 구성 파일의 <authentication> 요소 하위에 있는 <forms> 요소는 폼 기반 인증의 세세한 제어를 위해 여러 가지 특성들을 제공합니다. 다음은 <forms> 요소의 주요 특성입니다. New in 2.0 New in 2.0 New in 2.0

  13. 인증과 권한 부여

  14. 인증과 권한 부여 • 권한 부여 • 폼 기반 인증에서 권한 부여는 Web.config 파일의 <authorization> 요소에서 지정합니다. <authorization> 요소는 접근 거부 및 허가를 지정하는 다음과 같은 하위 요소를 가집니다. [<forms> 요소의 주요 특성] - <deny> - <allow>

  15. 인증과 권한 부여 • 또한 <deny>, <allow> 요소는 users, roles라는 특성을 제공하는데 이 특성들은 각각 사용자(users)와 역할(roles) 별 접근 권한을 지정하는데 사용됩니다. 특히, 사용자(users)를 지정할 때에는 다음과 같은 특수 문자를 사용할 수 있습니다. [<deny>, <allow> 요소의 users 특성에 사용되는 특수 문자]

  16. 인증과 권한 부여 <여기서 잠깐> 역할(role)이란? 역할은 보안면에서 동일한 권한을 가진 그룹을 의미하며 여기에 여러 사용자들을 포함시킬 수 있습니다. 이렇게 역할을 만드는 이유는 각 사용자 별로 권한을 주는 것 보다 특정 역할을 만들고 이 역할에 권한을 주어 이 역할에 포함된 모든 사용자들에게 일괄적으로 권한을 부여 하는 것이 좀더 효율적이기 때문입니다.

  17. 인증과 권한 부여 • 다음은 모든 익명 사용자(?)를 웹 사이트에 접근하지 못하게(<deny>) 하는 구문입니다. • 다음은 아이디(이름)가 ‘aaaa’, ‘bbbb’인 사용자만 접근을 허용(<allow>)하고 나머지 모든 사용자들(*)의 접근을 거부(<deny>)하는 구문입니다. <authorization> <deny users="?"/> </authorization> <authorization> <allow users=”aaaa,bbbb”/> <deny users="*"/> </authorization>

  18. 인증과 권한 부여 • 다음은 ‘Admins’라는 역할을 가진 사용자들만 접근을 허용(<allow>)하고 나머지 모든 사용자들(*)의 접근을 거부(<deny>)하는 구문입니다. • 이와 같이 <deny>, <allow> 요소와 users, roles 특성을 사용하면 웹 응용 프로그램 단위로 영향을 미치는 권한을 여러분이 원하는 대로 설정할 수 있습니다. <authorization> <allow roles=”Admins”/> <deny users="*"/> </authorization>

  19. 인증과 권한 부여 • 그렇다면, 특정 페이지에만 권한 부여가 적용되도록 하려면 어떻게 해야 할까요? 그것은 다음과 같이 Web.config 파일에서 <location> 요소를 사용하면 됩니다. <configuration> <system.web> <authorization> <deny users="?"/> </authorization> </system.web> <location path=”SuperAdminPage.aspx”> <system.web> <authorization> <allow roles=”SuperAdmins”/> <deny users=”*”/> </authorization> </system.web> </location> </configuration>

  20. 인증과 권한 부여 • 위처럼 <location> 요소의 path 특성을 사용하면 특정 페이지만 권한 부여를 할 수 있습니다. 참고로 <location> 요소 위쪽에 있는 부분(<deny users=”?”/>)은 웹 사이트 전체에 적용되는 권한 부분입니다. 위의 구문은 모든 웹 페이지에서 익명 사용자의 접근을 거부 하며, 특히 SuperAdminPage.aspx 페이지에서는 SuperAdmins 역할을 가진 사용자만 접근 가능하도록 지정합니다.

  21. 인증과 권한 부여 • 또한 <location> 요소의 path 특성에 특정 폴더를 지정하여 다음과 같이 폴더 하위에 있는 모든 페이지에 일괄적으로 권한 부여를 할 수 있습니다. • 위의 구문은 secured 폴더 하위에 있는 모든 페이지에 SubAdmins 역할을 가진 사용자만 접근 가능하도록 지정합니다. <location path=”secured”> <system.web> <authorization> <allow roles=”SubAdmins”/> <deny users=”*”/> </authorization> </system.web> </location>

  22. 로그인 컨트롤 사용하기 New in 2.0 • 멤버 자격(Membership) • 멤버 자격은 ASP.NET 2.0에서 제공해주는 로그인 컨트롤, 멤버 자격 API, 멤버 자격 공급자(membership provider)가 서로 유기적으로 동작하여 보안 프로세스(사용자 생성, 로그인, 로그아웃 등등)와 관련된 작업을 자동으로 처리해주는 기능을 말합니다.

  23. 로그인 컨트롤 사용하기 • 다음은 ASP.NET 2.0의 멤버 자격의 구조를 나타낸 그림입니다.

  24. 로그인 컨트롤 사용하기 • 위의 그림을 보면 멤버 자격 공급자가 멤버 자격 API와 데이터 소스 사이에 위치해 있는 것을 볼 수 있습니다. 이 위치에서 멤버 자격 공급자는 보안 프로세스와 관련된 작업을 자동으로 처리합니다. 개발자는 멤버 자격 API를 사용하여 프로그래밍 방식으로 멤버 자격을 사용할 수 있고 내부적으로 멤버 자격 API를 사용하는 로그인 컨트롤을 통해 어떠한 코드 작성 없이 멤버 자격을 사용할 수 있습니다. 각 데이터 소스에는 그에 맞는 멤버 자격 공급자가 연결되며 ASP.NET 2.0은 기본적으로 SQL Server와 연결되는 SqlMembershipProvider를 사용합니다.

  25. 로그인 컨트롤 사용하기 • 이렇게 공급자를 사용하는 멤버 자격의 구조는 우리가 12장에서 공부했던 사이트 탐색이 사이트 맵 공급자를 사용하는 구조와 완전히 동일합니다. 다음은 사이트 탐색의 구조를 나타낸 그림입니다.

  26. 로그인 컨트롤 사용하기 • 지금까지 설명한 사이트 탐색과 멤버 자격 외에 앞으로 공부할 역할 관리자, 프로필, 개인 설정 등등의 기능들도 모두 위의 그림들과 동일한 구조와 패턴을 가지는데, 이처럼 각 데이터 소스에 맞는 공급자와 해당 API를 통해 관련 기능을 제어하는 패턴을 공급자 모델 디자인 패턴(provider model design pattern)이라고 합니다. 다음은 공급자 모델 디자인 패턴을 나타낸 그림입니다.

  27. 로그인 컨트롤 사용하기

  28. 로그인 컨트롤 사용하기 • 위에서 설명한 사이트 탐색, 멤버 자격은 서로 기능만 다를 뿐 모두 공급자 모델 디자인 패턴을 그대로 따른다는 것을 알 수 있습니다. 앞으로 공부할 역할 관리자, 프로필, 개인 설정 등의 기능들도 공급자 모델 디자인 패턴을 그대로 따르므로 위 그림의 구조를 잘 기억해 두기 바랍니다. • 그럼, 다시 본론으로 돌아가서 멤버 자격에 대해 계속적으로 알아봅시다. 기본적으로 정의되어 있는 멤버 자격 공급자는 Machine.config 파일(필자의 경우 C:\WINNT\Microsoft.NET\Framework\v2.0.xxxxx\CONFIG\Machine.config 경로에 위치)에서 확인할 수 있으며 다음과 같이 정의되어 있습니다.

  29. 로그인 컨트롤 사용하기 <configuration> <connectionStrings> <add name="LocalSqlServer" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient" /> </connectionStrings> <system.web> <membership> <providers> <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="LocalSqlServer" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="true" applicationName="/" requiresUniqueEmail="false" passwordFormat="Hashed" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="7" minRequiredNonalphanumericCharacters="1" passwordAttemptWindow="10" passwordStrengthRegularExpression="" /> </providers> </membership> </system.web> </configuration>

  30. 로그인 컨트롤 사용하기 • 위에서 보는 것처럼 멤버 자격 공급자(<membership>)를 정의하는 <add> 요소는 보안 프로세스와 관련된 여러 가지 특성들을 포함하고 있습니다. 다음은 멤버 자격 공급자를 정의하는 <add> 요소의 주요 특성입니다.

  31. 로그인 컨트롤 사용하기

  32. 로그인 컨트롤 사용하기 [<forms> 요소의 주요 특성]

  33. 로그인 컨트롤 사용하기 • 또한 멤버 자격에서 여러분이 한가지 더 알고 있어야 할 부분이 있습니다. 그것은 Machine.config 파일에 기본적으로 정의되어 있는 멤버 자격 공급자를 보면, 이 공급자가 SQL Server 2005 Express(SQL Server Express)를 사용한다는 것입니다. 이것은 Machine.config 파일에서 멤버 자격 공급자가 사용하는 연결 문자열(LocalSqlServer)의 특성 중 connectionString 특성의 값을 보면 알 수 있습니다(data source=.\SQLEXPRESS). <connectionStrings> <add name="LocalSqlServer" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient" /> </connectionStrings>

  34. 로그인 컨트롤 사용하기 • 즉, 로그인 컨트롤 또는 멤버 자격 API를 사용하여 보안 프로세스를 구현할 경우 사용자와 관련된 정보의 저장 및 참조는 기본적으로 Machine.config 파일의 멤버 자격 공급자(AspNetSqlMembershipProvider)에서 사용하는 연결 문자열(LocalSqlServer)에서 지정한 DBMS 인 SQL Server 2005 Express에서 이루어진다는 뜻입니다.

  35. 로그인 컨트롤 사용하기 <여기서 잠깐> SQL Server 2005 Express SQL Server 2005 Express는 마이크로소프트가 이전에 배포한 무료 DBMS인 MSDE(Microsoft Desktop Engine)의 후신으로서 SQL Server 2005의 한 버전(edition)입니다. 물론, SQL Server 2005 Express(이하 SQL Server Express) 또한 무료로 사용할 수 있는 DBMS이며 다른 상용 버전에 비해 기능적 제한이 있지만 MSDE보다 더 강력한 기능을 자랑합니다. 또한, 마이크로소프트에서는 SQL Server Express를 위해 SQL Server 2000에서 사용된 쿼리 분석기와 비슷한 클라이언트 유틸리티 인 SQL Server Management Studio Express를 제공하고 있는데 이것도 무료이므로 관심 있는 독자들은 아래의 주소에서 프로그램을 다운 받은 후 설치해 보기 바랍니다. 참고로 아래 주소는 예제소스의 Chapter13 폴더에 포함되어 있으므로 복사해서 사용하기 바랍니다. http://www.microsoft.com/downloads/details.aspx?displaylang=ko&FamilyID=c243a5ae-4bd1-4e3d-94b8-5a0f62bf7796

  36. 로그인 컨트롤 사용하기 • 그럼 본격적으로 로그인 컨트롤에 대해 공부해보겠습니다. 다음은 우리가 공부할 로그인 컨트롤을 정리한 표입니다. [로그인 컨트롤]

  37. 로그인 컨트롤 사용하기 New in 2.0 • CreateUserWizard 컨트롤 • CreateUserWizard 컨트롤은 사용자 정보를 입력 받아 새로운 사용자를 만들어 주는 컨트롤입니다. 다음은 CreateUserWizard 컨트롤을 웹 폼 위로 끌어다 놓았을 때의 기본적인 모습입니다.

  38. 로그인 컨트롤 사용하기 <asp:CreateUserWizard ID="CreateUserWizard1" runat="server" > <WizardSteps> <asp:CreateUserWizardStep ID="CreateUserWizardStep1" runat="server"> </asp:CreateUserWizardStep> <asp:CompleteWizardStep ID="CompleteWizardStep1" runat="server"> </asp:CompleteWizardStep> </WizardSteps> </asp:CreateUserWizard>

  39. 로그인 컨트롤 사용하기 • <asp:CreateUserWizard> 컨트롤 선언 구문을 보면 예전에 7장에서 배웠던 Wizard 컨트롤과 그 형식이 매우 유사하다는 것을 알 수 있습니다. 이것은 CreateUserWizard 컨트롤이 Wizard 컨트롤을 상속(inherit) 받아 그 기능을 확장 했기 때문이며 사용법도 Wizard 컨트롤과 매우 비슷합니다. • 또한 앞에서도 설명 했듯이 로그인 컨트롤은 멤버 자격 공급자와 유기적으로 동작 한다고 했습니다. 그러므로 표에서 소개한 멤버 자격 공급자를 정의하는 <add> 요소의 특성을 수정하면 수정된 설정 내용이 CreateUserWizard 컨트롤에 그대로 반영됩니다. 예를 들어, <add> 요소에서 requiresQuestionAndAnswer 특성 값을 False로 지정하면, CreateUserWizard 컨트롤에서 보안 질문과 보안 대답 부분은 나타나지 않습니다. 참고로 보안 질문과 보안 대답은 암호 찾기 시 사용되는 항목입니다.

  40. 로그인 컨트롤 사용하기 • <사용자 만들기> 버튼을 클릭하면 새로운 사용자가 생성됩니다. 물론 이때, 사용자 생성과 관련된 프로세스는 멤버 자격 공급자에서 자동 처리되므로 우리가 작성해야 할 코드는 단 한 줄도 없습니다. • 멤버 자격은 로그인 컨트롤, 멤버 자격 공급자 그리고 멤버 자격 공급자와 연결된 데이터 소스와 유기적으로 동작하여 보안 프로세스를 구현해 준다고 했는데, 그러면 CreateUserWizard 컨트롤을 통해 사용자가 입력한 정보는 실제로 어디에 저장되는 것일까요? • 사용자 정보를 입력하고 <사용자 만들기> 버튼을 클릭하여 새로운 사용자를 만들면 App_Data 폴더 하위에 ASPNETDB.MDF 파일이 생성되는데, 사용자 정보는 바로 이 곳에 저장됩니다.

  41. 로그인 컨트롤 사용하기 • ASPNETDB.MDF 파일은 SQL Server Express 파일 기반 데이터베이스입니다. 그리고 서버 탐색기를 통해 ASPNETDB.MDF 파일의 내부를 들여다 보면(ASPNETDB.MDF 파일 더블클릭), 멤버 자격과 관계된 aspnet_Membership 테이블을 볼 수 있으며, CreateUserWizard 컨트롤에서 입력 받은 정보들이 저장되는 칼럼도 미리 정의되어 있는 것을 볼 수 있습니다(UserId, Password, Email 등등). 그 외 ASP.NET 2.0에서 제공하는 기타 다른 서비스를 위한 테이블들(aspnet_PersonalizationAllUsers, aspnet_PersonalizationPerUser, aspnet_Profile 등등)도 볼 수 있는데 이것들은 관련 내용을 다루면서 다시 설명하겠습니다.

  42. 로그인 컨트롤 사용하기

  43. 로그인 컨트롤 사용하기 • 이와 같이 App_Data 폴더에 ASPNETDB.MDF라는 이름의 파일이 생성되는 이유는 Machine.config 파일에서 멤버 자격 공급자가 사용하는 연결 문자열의 특성 중 connectionString 특성의 값이 다음과 같이 정의되어 있기 때문입니다(AttachDBFilename=|DataDirectory|aspnetdb.mdf). <connectionStrings> <add name="LocalSqlServer" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient" /> </connectionStrings>

  44. 로그인 컨트롤 사용하기 • 이렇게 SQL Server Express 파일 기반 데이터베이스를 사용하면 사용자의 추가적인 설치 작업 없이도 즉시 데이터베이스를 만들 수 있다는 이점이 있습니다. • 그럼, 여기까지의 내용을 간단히 정리해보겠습니다.멤버 자격에서 로그인 컨트롤과 데이터 소스 사이에 위치해 있으면서 핵심적인 역할을 하는 멤버 자격 공급자는 기본적으로 Machine.config 파일에 다음과 같이 정의되어 있으며 SQL Server Express 파일 기반 데이터베이스에 연결하는 LocalSqlServer라는 연결 문자열을 사용합니다.

  45. 로그인 컨트롤 사용하기 <configuration> <connectionStrings> <add name="LocalSqlServer" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient" /> </connectionStrings> <system.web> <membership> <providers> <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="LocalSqlServer" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="true" applicationName="/" requiresUniqueEmail="false" passwordFormat="Hashed" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="7" minRequiredNonalphanumericCharacters="1" passwordAttemptWindow="10" passwordStrengthRegularExpression="" /> </providers> </membership> </system.web> </configuration>

  46. 로그인 컨트롤 사용하기 • 이제 여러분은 멤버 자격가 어떤 방식으로 구동되는지, 그 큰 틀을 이해할 수 있을 것입니다. 앞으로 공부할 다른 로그인 컨트롤들(Login, LoginName, ChangePassword 등등)도 CreateUserWizard 컨트롤과 마찬가지로 Web.config 파일에서 멤버 자격 공급자를 재정의하지 않는 이상 Machine.config 파일에 정의되어 있는 기본 멤버 자격 공급자(AspNetSqlMembershipProvider)를 사용하여 데이터 소스(ASPNETDB.MDF)에 연결하고 해당 보안과 관련된 작업들을 자동으로 처리합니다. • CreateUserWizard 컨트롤을 사용한 예제는 다른 로그인 컨트롤들을 살펴 본 후 다른 로그인 컨트롤들과 함께 다루어 볼 것입니다. 그리고 새로운 멤버 자격 공급자를 Web.config 파일에 추가하여 사용하는 방법은 예제 13-2에서 설명합니다.

  47. 로그인 컨트롤 사용하기 New in 2.0 • Login 컨트롤 • Login 컨트롤은 로그인 기능을 제공해주는 컨트롤입니다. 다음은 Login 컨트롤을 웹 폼 위로 끌어다 놓았을 때의 기본적인 모습입니다. <asp:Login ID="Login1" runat="server"> </asp:Login>

  48. 로그인 컨트롤 사용하기 • 사용자가 <로그인> 버튼을 클릭하는 순간 Login 컨트롤은 입력 받은 사용자 이름(계정)과 암호를 지정된 멤버 자격 공급자로 넘겨주고 멤버 자격 공급자는 해당 데이터 소스에 접근하여 일치하는 사용자 정보를 검색합니다. 만약 사용자 이름과 암호가 일치하는 사용자 정보가 존재한다면 인증 쿠키를 생성하여 인증 처리를 하고, 존재하지 않는다면 해당 결과를 다시 Login 컨트롤로 돌려줍니다. 그리고 결과를 돌려 받은 Login 컨트롤은 지정된 오류 메시지를 출력합니다. • 이러한 유기적인 처리 과정은 멤버 자격의 구조 그림 또는 공급자 모델 디자인 패턴을 떠올려보면 쉽게 이해할 수 있습니다.

  49. 로그인 컨트롤 사용하기 New in 2.0 • LoginView 컨트롤 • LoginView 컨트롤은 인증된 사용자와 익명 사용자에게 보여줄 화면을 구분해서 표시해주는 컨트롤입니다. 예를 들어, 흔히 회원제 웹 사이트에서는 다음과 같이 좌측 상단에 로그인 할 수 있도록 로그인 상자를 제공하는 것이 보통입니다.

  50. 로그인 컨트롤 사용하기 • 로그인 상자를 통해 인증 절차를 거치면 로그인 상자는 다음과 같이 변경됩니다.

More Related