프로덕션 웹 사이트의 사용자 및 역할(C#)

작성자 : Scott Mitchell

참고

이 문서가 작성된 이후 ASP.NET 멤버 자격 공급자는 ASP.NET ID로 대체되었습니다. 이 문서를 작성할 때 추천하는 멤버 자격 공급자가 아닌 ASP.NET ID 플랫폼을 사용하도록 앱을 업데이트하는 것이 좋습니다. ASP.NET ID는 를 포함하여 ASP.NET 멤버 자격 시스템에 비해 여러 가지 이점이 있습니다.

  • 성능 향상
  • 향상된 확장성 및 테스트 용이성
  • OAuth, OpenID Connect 및 2단계 인증 지원
  • 클레임 기반 ID 지원
  • ASP.Net Core와의 상호 운용성 향상

WSAT(ASP.NET 웹 사이트 관리 도구)는 멤버 자격 및 역할 설정을 구성하고 사용자 및 역할을 만들고 편집하고 삭제하기 위한 웹 기반 사용자 인터페이스를 제공합니다. 아쉽게도 WSAT는 localhost에서 방문한 경우에만 작동하므로 브라우저를 통해 프로덕션 웹 사이트의 관리 도구에 연결할 수 없습니다. 좋은 소식은 프로덕션에서 사용자 및 역할을 관리할 수 있는 해결 방법이 있다는 것입니다. 이 자습서에서는 이러한 해결 방법 및 기타 사항을 살펴봅니다.

소개

ASP.NET 2.0에는 웹 애플리케이션에 추가할 수 있는 빌딩 블록 서비스 모음인 여러 애플리케이션 서비스가 도입되었습니다. Application Services를 사용하는 웹 사이트 구성 자습서에서 Book Reviews 웹 사이트에 멤버 자격 및 역할 서비스를 다시 추가했습니다. 멤버 자격 서비스를 사용하면 사용자 계정을 쉽게 만들고 관리할 수 있습니다. 역할 서비스는 사용자를 그룹으로 분류하기 위한 API를 제공합니다. 책 검토 사이트에는 Scott, Jisun 및 Alice의 세 가지 사용자 계정과 관리 역할의 Scott 및 Jisun과 함께 관리 단일 역할이 있습니다.

Asp. NET의 애플리케이션 서비스는 특정 구현에 연결되지 않습니다. 대신 애플리케이션 서비스에 특정 공급자를 사용하도록 지시하고 해당 공급자는 특정 기술을 사용하여 서비스를 구현합니다. 멤버 자격 및 역할 서비스에 및 SqlRoleProvider 공급자를 사용하도록 SqlMembershipProvider Book Reviews 웹 애플리케이션을 구성했습니다. 이 두 공급자는 사용자 계정 및 역할 정보를 SQL Server 데이터베이스에 저장하며 웹 호스팅 회사에서 호스트되는 인터넷 기반 웹 애플리케이션에 가장 일반적으로 사용되는 공급자입니다.

멤버 자격 및 역할 서비스를 사용하는 개발자의 일반적인 과제는 프로덕션 환경에서 사용자 및 역할을 관리하는 것입니다. 프로덕션 웹 사이트에서 사용자 계정을 삭제하거나, 새 역할을 추가하거나, 기존 사용자를 기존 역할에 추가하려면 어떻게 해야 할까요? 이 자습서에서는 프로덕션 웹 사이트에서 사용자 및 역할을 관리하기 위한 다양한 기술을 살펴봅니다.

ASP.NET 웹 사이트 관리 도구 사용

ASP.NET 사용자 계정 및 역할을 쉽게 만들고 관리하고 사용자 및 역할 기반 권한 부여 규칙을 지정할 수 있는 WSAT( 웹 사이트 관리 도구 )가 포함되어 있습니다. WSAT를 사용하려면 솔루션 탐색기 ASP.NET 구성 아이콘을 클릭하거나 웹 사이트 또는 프로젝트 메뉴로 이동하여 ASP.NET 구성 옵션을 선택합니다. 두 방법 중 하나가 웹 브라우저를 시작하고 다음과 같은 주소에서 WSAT를 가리킵니다. http://localhost:portNumber/asp.netwebadminfiles/default.aspx?applicationPhysicalPath=pathToApplication

WSAT는 다음 세 섹션으로 나뉩니다.

  • 보안 - 사용자, 역할 및 권한 부여 규칙을 관리합니다.
  • ApplicationConfiguration - 여기에서 appSettings 및 SMTP 설정을 관리 <합니다> . 애플리케이션을 오프라인으로 전환하고 여기에서 디버깅 및 추적 설정을 관리하고 기본 사용자 지정 오류 페이지를 지정할 수도 있습니다.
  • ProviderConfiguration - 애플리케이션 서비스에서 사용하는 공급자를 구성합니다.

보안 섹션( 그림 1에 표시됨)에는 새 사용자를 만들고, 사용자를 관리하고, 역할을 만들고 관리하고, 액세스 규칙을 만들고 관리하기 위한 링크가 포함되어 있습니다. 여기에서 시스템에 새 역할을 추가하거나, 기존 사용자를 삭제하거나, 특정 사용자 계정에서 역할을 추가하거나 제거할 수 있습니다.

사용자 및 역할을 관리하기 위한 옵션을 보여 주는 스크린샷

그림 1: WSAT 보안 섹션에는 사용자 및 역할을 관리하기 위한 옵션이 포함되어 있습니다.
(전체 크기 이미지를 보려면 클릭)

아쉽게도 WSAT는 로컬에서만 액세스할 수 있습니다. 원격 프로덕션 웹 사이트에서는 WSAT를 방문할 수 없습니다. 방문 www.yoursite.com/asp.netwebadminfiles/default.aspx 하면 404 찾을 수 없음 응답이 표시됩니다. WSAT를 구동하는 코드는 .NET Framework 및 Roles 클래스를 사용하여 Membership 사용자 및 역할을 만들고, 편집하고, 삭제합니다. 이러한 클래스는 웹 애플리케이션의 구성 정보를 참조하여 사용할 공급자를 결정합니다. Application Services를 사용하는 웹 사이트 구성 자습서에서 및 SqlRoleProvider 공급자를 사용하도록 SqlMembershipProvider 책 검토 웹 사이트를 설정합니다. 여기에는 및 <roleManager> 섹션을 에 추가하는 <membership> 것이 Web.config수반되었습니다.

<?xml version="1.0"?>
<configuration>
  ...

  <connectionStrings configSource="ConfigSections\databaseConnectionStrings.config" />

  <system.web>
  ...

  <membership defaultProvider="ReviewMembership">
  <providers>
  <clear />

  <add type="System.Web.Security.SqlMembershipProvider" 
  name="ReviewMembership" 
  connectionStringName="ReviewsConnectionString" 
  applicationName="BookReviews" />
  </providers>
  </membership>

  <roleManager enabled="true" defaultProvider="ReviewRole">
  <providers>
  <clear />

  <add type="System.Web.Security.SqlRoleProvider" 
  name="ReviewRole" 
  connectionStringName="ReviewsConnectionString" 
  applicationName="BookReviews" />
  </providers>
  </roleManager>
  </system.web>

  ...
</configuration>

<roleManager> 섹션은 <membership> 특성의 SqlMembershipProviderSqlRoleProvider 공급자를 type 각각 참조합니다. 이러한 공급자는 사용자 및 역할 정보를 지정된 SQL Server 데이터베이스에 저장합니다. 이러한 공급자가 사용하는 데이터베이스는 파일에 정의된 ~/ConfigSections/databaseConnectionStrings.config 특성 ReviewsConnectionString에 의해 connectionStringName 지정됩니다. 개발 환경의 databaseConnectionStrings.config 파일에는 개발 데이터베이스에 대한 연결 문자열이 포함되어 있지만 프로덕션의 databaseConnectionStrings.config 파일에는 프로덕션 데이터베이스에 대한 연결 문자열이 포함되어 있습니다.

간단히 말해서 WSAT는 개발 환경을 통해 로컬로 액세스해야 하며 파일에 지정된 databaseConnectionStrings.config 데이터베이스의 사용자 및 역할 정보와 함께 작동합니다. 따라서 개발 환경의 파일에서 databaseConnectionStrings.config 연결 문자열 정보를 변경하는 경우 WSAT를 로컬로 사용하여 프로덕션 환경에서 사용자 및 역할을 관리할 수 있습니다.

이 기능을 설명하려면 개발 환경의 databaseConnectionStrings.config Visual Studio에서 파일을 열고 개발 데이터베이스 연결 문자열을 프로덕션 데이터베이스 연결 문자열로 바꿉 있습니다. 그런 다음 WSAT를 시작하고 보안 탭으로 이동한 다음 암호가 "password!"인 Sam이라는 새 사용자를 추가합니다. (작은따옴표). 그림 2 는 이 계정을 만들 때의 WSAT 화면을 보여 줍니다.

프로덕션 환경에서 만든 새 사용자를 보여 주는 스크린샷

그림 2: 프로덕션 환경에서 Sam이라는 새 사용자 만들기
(전체 크기 이미지를 보려면 클릭)

에서 연결 문자열 databaseConnectionStrings.config 을 프로덕션 데이터베이스 서버를 가리키도록 변경했으므로 Sam이 프로덕션 환경에서 사용자로 추가되었습니다. 이를 확인하려면 파일의 연결 문자열을 databaseConnectionStrings.config 다시 개발 데이터베이스로 변경한 다음 개발 환경의 Login.aspx 페이지를 방문합니다. Sam으로 로그인해 보세요( 그림 3 참조).

개발 환경에서 Sam으로 로그인할 수 없음을 보여 주는 스크린샷

그림 3: 개발 환경에서 Sam으로 로그인할 수 없음
(전체 크기 이미지를 보려면 클릭)

사용자 계정 정보가 로컬 데이터베이스에 없으므로 개발 환경에서 Sam으로 로그인할 수 없습니다. 대신 가 프로덕션 데이터베이스에 추가되었습니다. 이를 확인하려면 개발 데이터베이스와 프로덕션 데이터베이스 모두에서 테이블의 aspnet_Users 내용을 확인합니다. 개발 환경에는 Scott, Jisun 및 Alice 사용자에 대한 레코드가 세 개만 있어야 합니다. 그러나 프로덕션 데이터베이스의 aspnet_Users 테이블에는 Scott, Jisun, Alice 및 Sam의 네 가지 레코드가 있습니다. 따라서 Sam은 프로덕션 환경에서 웹 사이트를 통해 로그인할 수 있지만 개발 환경을 통해 로그인할 수는 없습니다.

Sam이 프로덕션 웹 사이트에 로그인할 수 있음을 보여 주는 스크린샷

그림 4: Sam은 프로덕션 웹 사이트에 로그인할 수 있습니다.
(전체 크기 이미지를 보려면 클릭)

참고

WSAT 작업을 마쳤을 때 파일의 연결 문자열 databaseConnectionStrings.config 을 개발 데이터베이스의 연결 문자열로 다시 변경하는 것을 잊지 마세요. 그렇지 않으면 개발 환경을 통해 사이트를 테스트할 때 프로덕션 데이터로 작업하게 됩니다. 또한 방금 설명한 기술을 통해 WSAT를 사용하여 사용자 및 역할을 원격으로 관리할 수 있지만 다른 WSAT 구성 옵션(액세스 규칙, SMTP 설정, 디버깅 및 추적 설정 등)으로 변경하여 파일을 수정 Web.config 합니다. 따라서 설정에 대한 변경 내용은 프로덕션 환경이 아닌 개발 환경에 적용됩니다.

사용자 지정 사용자 및 역할 관리 웹 페이지 만들기

WSAT는 사용자 및 역할을 관리하기 위한 기본 시스템을 제공하지만 로컬에서만 시작할 수 있으며 프로덕션에서 사용자 및 역할을 관리하기 위해 연결 문자열 정보를 변경해야 합니다. 사용자 계정을 지원하는 대부분의 웹 사이트에는 관리자가 사이트 내 페이지의 사용자 및 역할을 관리할 수 있는 여러 사용자 및 역할 관리 웹 페이지도 포함됩니다. 이러한 웹 기반 관리 페이지를 사용하면 사용자 및 역할을 훨씬 쉽게 관리할 수 있으며, 액세스 권한이 없는 관리자나 관리자가 많거나 Visual Studio를 사용하여 WSAT를 시작하는 기술적 배경이 있을 수 있는 사이트에 필수적입니다.

ASP.NET 많은 관리 웹 페이지를 끌어서 놓기처럼 쉽게 구현할 수 있도록 하는 여러 가지 기본 제공 로그인 관련 웹 컨트롤이 포함되어 있습니다. 예를 들어 CreateUserWizard 컨트롤을 페이지로 끌어서 몇 가지 속성을 설정하여 관리자가 새 사용자 계정을 만들 수 있는 페이지를 만들 수 있습니다. 실제로 그림 2 에 표시된 WSAT에서 사용자를 만드는 페이지는 페이지에 추가할 수 있는 것과 동일한 CreateUserWizard 컨트롤을 사용합니다. 또한 멤버 자격 및 역할 서비스의 기능은 .NET Framework 및 Roles 클래스를 Membership 통해 프로그래밍 방식으로 사용할 수 있습니다. 이러한 클래스를 사용하면 사용자 및 역할을 만들고, 편집하고, 삭제하고, 역할에 사용자를 추가하거나 제거하고, 어떤 역할에 있는 사용자를 확인하고, 다른 사용자 및 역할 관련 작업을 수행하는 코드를 작성할 수 있습니다.

Application Services를 사용하는 웹 사이트 구성 자습서에서 라는 CreateAccount.aspx폴더에 Admin 페이지를 추가했습니다. 이 페이지에서는 관리자가 사이트에 새 사용자 계정을 추가하고 새로 만든 사용자가 관리 역할에 있는지 여부를 지정할 수 있습니다(그림 5 참조).

관리자가 새 사용자 계정을 만들 수 있음을 보여 주는 스크린샷

그림 5: 관리자가 새 사용자 계정을 만들 수 있습니다.
(전체 크기 이미지를 보려면 클릭)

및 클래스 및 로그인 관련 ASP.NET 웹 컨트롤 사용에 Membership 대한 단계별 지침과 함께 사용자 및 Roles 역할 관리 페이지를 빌드하는 방법에 대한 자세한 내용은 내 웹 사이트 보안 자습서를 참조하세요. 새 계정 만들기, 역할 만들기 및 관리, 역할에 사용자 할당 및 기타 일반적인 관리 작업을 위한 웹 페이지를 빌드하는 방법에 대한 지침을 찾을 수 있습니다.

프로덕션 웹 사이트에서 WSAT와 유사한 기능을 구현하려면 항상 WSAT의 기능을 구현하는 고유한 일련의 웹 페이지를 빌드할 수 있습니다. 시작하려면 폴더%WINDIR%\Microsoft.NET\Framework\v2.0.50727\ASP.NETWebAdminFiles에 있는 WSAT 소스 코드를 검사. 또 다른 옵션은 Dan Clem의 WSAT 대안을 사용하는 것입니다. 이 대안은 자신의 웹 사이트 관리 도구 롤링 문서에서 공유합니다. Dan은 사용자 지정 WSAT와 유사한 도구를 빌드하는 프로세스를 안내하고, 다운로드를 위한 애플리케이션의 소스 코드(C#)를 포함하고, 호스트된 웹 사이트에 사용자 지정 WSAT를 추가하기 위한 단계별 지침을 제공합니다.

요약

WSAT(ASP.NET 웹 사이트 관리 도구)는 멤버 자격 및 역할 애플리케이션 서비스와 함께 사용하여 웹 사이트의 사용자 및 역할 정보를 관리할 수 있습니다. 안타깝게도 WSAT는 로컬에서만 액세스할 수 있으며 프로덕션 웹 사이트에서 방문할 수 없습니다. 그러나 프로덕션 데이터베이스를 가리키도록 개발 환경에서 연결 문자열을 변경하면 WSAT를 사용하여 프로덕션 웹 사이트의 사용자 및 역할을 관리할 수 있습니다.

WSAT 접근 방식을 사용하면 사용자 및 역할을 빠르고 쉽게 관리할 수 있지만 Visual Studio에서 WSAT를 시작하고 연결 문자열 정보를 일시적으로 변경해야 합니다. WSAT는 프로덕션에서 사용자 및 역할을 관리하는 빠른 방법을 제공하지만 번거롭고 여러 관리자가 있는 웹 사이트 또는 Visual Studio 및 WSAT에 익숙하지 않거나 익숙하지 않은 관리자에게 잘 작동하지 않습니다. 이러한 이유로 사용자 계정을 지원하는 대부분의 웹 사이트에는 관리 웹 페이지 집합이 포함됩니다. 이러한 웹 페이지 집합을 사용하면 WSAT가 필요하지 않으며 모든 컴퓨터의 다양한 관리자가 사용합니다.

행복한 프로그래밍!

추가 정보

이 자습서에서 설명하는 topics 대한 자세한 내용은 다음 리소스를 참조하세요.