애플리케이션 서비스를 사용하는 웹 사이트 구성(C#)

작성자 : Scott Mitchell

참고

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

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

ASP.NET 버전 2.0에는 .NET Framework 일부이며 웹 애플리케이션에 풍부한 기능을 추가하는 데 사용할 수 있는 문서 블록 서비스 모음 역할을 하는 일련의 애플리케이션 서비스가 도입되었습니다. 이 자습서에서는 애플리케이션 서비스를 사용하도록 프로덕션 환경에서 웹 사이트를 구성하는 방법을 살펴보고 프로덕션 환경에서 사용자 계정 및 역할을 관리하는 일반적인 문제를 해결합니다.

소개

ASP.NET 버전 2.0에는 .NET Framework 일부이며 웹 애플리케이션에 풍부한 기능을 추가하는 데 사용할 수 있는 빌딩 블록 서비스 모음 역할을 하는 일련의 애플리케이션 서비스가 도입되었습니다. 애플리케이션 서비스는 다음과 같습니다.

  • 멤버 자격 - 사용자 계정을 만들고 관리하기 위한 API입니다.
  • 역할 - 사용자를 그룹으로 분류하기 위한 API입니다.
  • 프로필 - 사용자 지정 사용자별 콘텐츠를 저장하기 위한 API입니다.
  • 사이트 맵 - 계층 구조 형식으로 사이트의 논리적 구조를 정의하기 위한 API로, 메뉴 및 이동 경로와 같은 탐색 컨트롤을 통해 표시할 수 있습니다.
  • 개인 설정 - WebParts에서 가장 자주 사용되는 사용자 지정 기본 설정을 유지 관리하기 위한 API입니다.
  • 상태 모니터링 - 실행 중인 웹 애플리케이션에 대한 성능, 보안, 오류 및 기타 시스템 상태 메트릭을 모니터링하기 위한 API입니다.

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

애플리케이션 서비스 및 SQL Server 공급자를 사용하면 애플리케이션을 배포할 때 몇 가지 문제가 추가됩니다. 우선 애플리케이션 서비스 데이터베이스 개체는 개발 데이터베이스와 프로덕션 데이터베이스 모두에서 올바르게 만들어지고 적절하게 초기화되어야 합니다. 또한 수행해야 하는 중요한 구성 설정도 있습니다.

참고

애플리케이션 서비스 API는 런타임에 API 구현 세부 정보를 제공할 수 있는 디자인 패턴인 공급자 모델을 사용하여 설계되었습니다. .NET Framework SQL Server 데이터베이스 구현을 사용하는 멤버 자격 및 역할 API의 공급자인 및 와 SqlRoleProvider같이 SqlMembershipProvider 사용할 수 있는 여러 애플리케이션 서비스 공급자와 함께 제공됩니다. 사용자 지정 공급자를 만들고 플러그 인할 수도 있습니다. 실제로 Book Reviews 웹 애플리케이션에는 데이터베이스의 및 Books 테이블에 있는 데이터에서 사이트 맵을 생성하는 사이트 맵 API(ReviewSiteMapProvider)에 Genres 대한 사용자 지정 공급자가 이미 포함되어 있습니다.

이 자습서는 멤버 자격 및 역할 API를 사용하도록 Book Reviews 웹 애플리케이션을 확장한 방법을 살펴보는 것으로 시작합니다. 그런 다음 SQL Server 데이터베이스 구현과 함께 애플리케이션 서비스를 사용하는 웹 애플리케이션을 배포하는 단계를 안내하고 프로덕션 환경에서 사용자 계정 및 역할을 관리하는 일반적인 문제를 해결하여 마무리합니다.

Book Reviews 애플리케이션에 업데이트

지난 몇 번의 자습서에서 책 검토 웹 애플리케이션은 정적 웹 사이트에서 장르 및 리뷰를 관리하기 위한 관리 페이지 세트가 포함된 동적 데이터 기반 웹 애플리케이션으로 업데이트되었습니다. 그러나 이 관리 섹션은 현재 보호되지 않습니다. 관리 페이지 URL을 알고 있거나 추측하는 모든 사용자는 사이트에서 검토를 생성, 편집 또는 삭제할 수 있습니다. 웹 사이트의 특정 부분을 보호하는 일반적인 방법은 사용자 계정을 구현한 다음 URL 권한 부여 규칙을 사용하여 특정 사용자 또는 역할에 대한 액세스를 제한하는 것입니다. 이 자습서에서 다운로드할 수 있는 책 검토 웹 애플리케이션은 사용자 계정 및 역할을 지원합니다. 관리 라는 단일 역할이 정의되어 있으며 이 역할의 사용자만 관리 페이지에 액세스할 수 있습니다.

참고

Book Reviews 웹 애플리케이션에서 Scott, Jisun 및 Alice라는 세 개의 사용자 계정을 만들었습니다. 세 사용자 모두 암호와 동일한 암호를 갖습니다. 스콧과 지순은 관리 역할에, 앨리스는 아니다. 익명 사용자가 사이트의 비관리 페이지에 계속 액세스할 수 있습니다. 즉, 사이트를 관리하려는 경우가 아니면 사이트를 방문하기 위해 로그인할 필요가 없습니다. 이 경우 관리 역할의 사용자로 로그인해야 합니다.

Book Reviews 애플리케이션의 master 페이지는 인증된 익명 사용자에 대한 다른 사용자 인터페이스를 포함하도록 업데이트되었습니다. 익명 사용자가 사이트를 방문하면 오른쪽 위 모서리에 로그인 링크가 표시됩니다. 인증된 사용자에게 "다시 오신 것을 환영합니다, 사용자 이름!" 메시지와 로그아웃 링크가 표시됩니다. 방문자를 인증하기 위한 사용자 인터페이스 및 논리를 제공하는 로그인 웹 컨트롤이 포함된 로그인 페이지(~/Login.aspx)도 있습니다. 관리자만 새 계정을 만들 수 있습니다. 폴더에 사용자 계정을 만들고 관리하기 위한 페이지가 ~/Admin 있습니다.

멤버 자격 및 역할 API 구성

Book Reviews 웹 애플리케이션은 멤버 자격 및 역할 API를 사용하여 사용자 계정을 지원하고 해당 사용자를 역할(즉, 관리 역할)으로 그룹화합니다. SqlMembershipProviderSqlRoleProvider 공급자 클래스는 SQL Server 데이터베이스에 계정 및 역할 정보를 저장하려고 하기 때문에 사용됩니다.

참고

이 자습서는 멤버 자격 및 역할 API를 지원하도록 웹 애플리케이션을 구성하는 방법에 대한 자세한 검사를 위한 것이 아닙니다. 이러한 API 및 해당 API를 사용하도록 웹 사이트를 구성하기 위해 수행해야 하는 단계를 자세히 알아보려면 내 웹 사이트 보안 자습서를 참조하세요.

SQL Server 데이터베이스에서 애플리케이션 서비스를 사용하려면 먼저 이러한 공급자가 사용하는 데이터베이스 개체를 사용자 계정 및 역할 정보를 저장하려는 데이터베이스에 추가해야 합니다. 이러한 필수 데이터베이스 개체에는 다양한 테이블, 뷰 및 저장 프로시저가 포함됩니다. 달리 SqlMembershipProvider 지정하지 않는 한 및 SqlRoleProvider 공급자 클래스는 애플리케이션 폴더 App_Data 에 있는 라는 ASPNETDB SQL Server Express Edition 데이터베이스를 사용합니다. 이러한 데이터베이스가 없으면 런타임에 이러한 공급자가 필요한 데이터베이스 개체를 사용하여 자동으로 생성됩니다.

웹 사이트의 애플리케이션별 데이터가 저장되는 동일한 데이터베이스에 애플리케이션 서비스 데이터베이스 개체를 만드는 것이 가능하고 일반적으로 이상적입니다. .NET Framework 지정된 데이터베이스에 데이터베이스 개체를 설치하는 라는 aspnet_regsql.exe 도구와 함께 제공됩니다. 이 도구를 사용하여 폴더(개발 데이터베이스)의 Reviews.mdf 데이터베이스에 이러한 개체를 App_Data 추가했습니다. 프로덕션 데이터베이스에 이러한 개체를 추가할 때 이 자습서의 뒷부분에서 이 도구를 사용하는 방법을 살펴보겠습니다.

이외의 데이터베이스에 애플리케이션 서비스 데이터베이스 개체를 추가하는 경우 적절한 데이터베이스 ASPNETDB 를 사용하도록 및 SqlRoleProvider 공급자 클래스 구성을 사용자 지정 SqlMembershipProvider 해야 합니다. 멤버 자격 공급자를 사용자 지정하려면 의 Web.config섹션 내에 <system.web>멤버 자격> 요소를 추가<합니다. roleManager> 요소를 사용하여< 역할 공급자를 구성합니다. 다음 코드 조각은 Book Reviews 애플리케이션에서 Web.config 가져온 것이며 멤버 자격 및 역할 API에 대한 구성 설정을 보여 줍니다. 둘 다 및 공급자를 각각 사용하는 SqlMembershipProvider 새 공급자 ReviewMembershipReviewRoleSqlRoleProvider 를 등록합니다.

<configuration>
    <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>

Web.config 파일 요소 <authentication> 도 양식 기반 인증을 지원하도록 구성되었습니다.

<configuration>
    <system.web>
        ...

        <authentication mode="Forms" />

        ...
    </system.web>
</configuration>

관리 페이지에 대한 액세스 제한

ASP.NET 사용하면 URL 권한 부여 기능을 통해 사용자 또는 역할별로 특정 파일 또는 폴더에 대한 액세스를 쉽게 부여하거나 거부할 수 있습니다. (IIS와 ASP.NET 개발 서버 간의 핵심 차이점 자습서에서 URL 권한 부여에 대해 간략하게 설명하고 IIS와 ASP.NET 개발 서버가 정적 콘텐츠와 동적 콘텐츠에 대해 URL 권한 부여 규칙을 다르게 적용하는 방법을 보여 줍니다.) 관리 역할의 ~/Admin 사용자를 제외하고 폴더에 대한 액세스를 금지하려고 하므로 이 폴더에 URL 권한 부여 규칙을 추가해야 합니다. 특히 URL 권한 부여 규칙은 관리 역할의 사용자를 허용하고 다른 모든 사용자를 거부해야 합니다. 이 작업은 다음 내용이 포함된 Web.config 폴더에 ~/Admin 파일을 추가하여 수행됩니다.

<?xml version="1.0"?>
<configuration>
    <system.web>
        <authorization>
            <allow roles="Admin" />
            <deny users="*" />
        </authorization>
    </system.web>
</configuration>

ASP.NET URL 권한 부여 기능과 이를 사용하여 사용자 및 역할에 대한 권한 부여 규칙을 철자하는 방법에 대한 자세한 내용은 내 웹 사이트 보안 자습서에서 사용자 기반 권한 부여역할 기반 권한 부여 자습서를 참조하세요.

Application Services를 사용하는 웹 애플리케이션 배포

애플리케이션 서비스를 사용하는 웹 사이트와 애플리케이션 서비스 정보를 데이터베이스에 저장하는 공급자를 배포하는 경우 애플리케이션 서비스에 필요한 데이터베이스 개체를 프로덕션 데이터베이스에 만들어야 합니다. 처음에는 프로덕션 데이터베이스에 이러한 개체가 포함되어 있지 않으므로 애플리케이션이 처음 배포되거나 애플리케이션 서비스가 추가된 후 처음으로 배포될 때 프로덕션 데이터베이스에서 이러한 필수 데이터베이스 개체를 가져오는 추가 단계를 수행해야 합니다.

개발 환경에서 만든 사용자 계정을 프로덕션 환경에 복제하려는 경우 애플리케이션 서비스를 사용하는 웹 사이트를 배포할 때 또 다른 문제가 발생할 수 있습니다. 멤버 자격 및 역할 구성에 따라 개발 환경에서 만든 사용자 계정을 프로덕션 데이터베이스에 성공적으로 복사하더라도 이러한 사용자는 프로덕션 환경에서 웹 애플리케이션에 로그인할 수 없습니다. 이 문제의 원인을 살펴보고 이 문제가 발생하지 않도록 방지하는 방법을 논의합니다.

ASP.NET Visual Studio에서 시작할 수 있고 웹 기반 인터페이스를 통해 사용자 계정, 역할 및 권한 부여 규칙을 관리할 수 있는 멋진 WSAT(웹 사이트 관리 도구) 와 함께 제공됩니다. 아쉽게도 WSAT는 로컬 웹 사이트에만 작동하므로 프로덕션 환경에서 웹 애플리케이션에 대한 사용자 계정, 역할 및 권한 부여 규칙을 원격으로 관리하는 데 사용할 수 없습니다. 프로덕션 웹 사이트에서 WSAT와 유사한 동작을 구현하는 다양한 방법을 살펴보겠습니다.

aspnet_regsql.exe 사용하여 데이터베이스 개체 추가

데이터베이스 배포 자습서에서는 개발 데이터베이스에서 프로덕션 데이터베이스로 테이블과 데이터를 복사하는 방법을 보여 주었고, 이러한 기술을 사용하여 애플리케이션 서비스 데이터베이스 개체를 프로덕션 데이터베이스에 복사할 수 있습니다. 또 다른 옵션은 aspnet_regsql.exe 데이터베이스에서 애플리케이션 서비스 데이터베이스 개체를 추가하거나 제거하는 도구입니다.

참고

도구는 aspnet_regsql.exe 지정된 데이터베이스에 데이터베이스 개체를 만듭니다. 개발 데이터베이스에서 프로덕션 데이터베이스로 해당 데이터베이스 개체의 데이터를 마이그레이션하지 않습니다. 개발 데이터베이스의 사용자 계정 및 역할 정보를 프로덕션 데이터베이스에 복사하려는 경우 데이터베이스 배포 자습서에서 다루는 기술을 사용합니다.

도구를 사용하여 aspnet_regsql.exe 프로덕션 데이터베이스에 데이터베이스 개체를 추가하는 방법을 살펴보겠습니다. 먼저 Windows Explorer 열고 컴퓨터의 .NET Framework 버전 2.0 디렉터리인 %WINDIR%\ Microsoft.NET\Framework\v2.0.50727로 이동합니다. 이 도구를 찾을 수 aspnet_regsql.exe 있습니다. 이 도구는 명령줄에서 사용할 수 있지만 그래픽 사용자 인터페이스도 포함됩니다. 파일을 두 번 클릭하여 aspnet_regsql.exe 그래픽 구성 요소를 시작합니다.

도구는 용도를 설명하는 시작 화면을 표시하여 시작합니다. 다음을 클릭하여 그림 1에 표시된 "설정 옵션 선택" 화면으로 진행합니다. 여기에서 애플리케이션 서비스 데이터베이스 개체를 추가하거나 데이터베이스에서 제거할 수 있습니다. 이러한 개체를 프로덕션 데이터베이스에 추가하려면 "애플리케이션 서비스에 대한 SQL Server 구성" 옵션을 선택하고 다음을 클릭합니다.

Application Services에 대한 SQL Server 구성하도록 선택

그림 1: Application Services에 대한 SQL Server 구성하도록 선택(전체 크기 이미지를 보려면 클릭)

"서버 및 데이터베이스 선택" 화면에서 데이터베이스에 연결할 정보를 묻는 메시지를 표시합니다. 웹 호스팅 회사에서 제공한 데이터베이스 서버, 보안 자격 증명 및 데이터베이스 이름을 입력하고 다음을 클릭합니다.

참고

데이터베이스 서버 및 자격 증명을 입력한 후 데이터베이스 드롭다운 목록을 확장할 때 오류가 발생할 수 있습니다. 이 도구는 aspnet_regsql.exe 시스템 테이블을 쿼리 sysdatabases 하여 서버의 데이터베이스 목록을 검색하지만 일부 웹 호스팅 회사는 이 정보를 공개적으로 사용할 수 없도록 데이터베이스 서버를 잠급니다. 이 오류가 발생하면 드롭다운 목록에 데이터베이스 이름을 직접 입력할 수 있습니다.

도구에 데이터베이스 연결 정보 제공

그림 2: 도구에 데이터베이스 연결 정보 제공(전체 크기 이미지를 보려면 클릭)

후속 화면에는 수행하려는 작업, 즉 애플리케이션 서비스 데이터베이스 개체가 지정된 데이터베이스에 추가될 작업이 요약되어 있습니다. 다음을 클릭하여 이 작업을 완료합니다. 잠시 후 데이터베이스 개체가 추가되었음을 나타내는 최종 화면이 표시됩니다(그림 3 참조).

성공! Application Services 데이터베이스 개체가 프로덕션 데이터베이스에 추가됨

그림 3: 성공! Application Services 데이터베이스 개체가 프로덕션 데이터베이스에 추가되었습니다(전체 크기 이미지를 보려면 클릭).

애플리케이션 서비스 데이터베이스 개체가 프로덕션 데이터베이스에 성공적으로 추가되었는지 확인하려면 SQL Server Management Studio 열고 프로덕션 데이터베이스에 연결합니다. 그림 4에서 볼 수 있듯이 이제 데이터베이스, aspnet_Applications, , aspnet_Membershipaspnet_Users등에 애플리케이션 서비스 데이터베이스 테이블이 표시됩니다.

데이터베이스 개체가 프로덕션 데이터베이스에 추가되었는지 확인합니다.

그림 4: 데이터베이스 개체가 프로덕션 데이터베이스에 추가되었는지 확인합니다(전체 크기 이미지를 보려면 클릭).

처음으로 또는 애플리케이션 서비스 사용을 시작한 후 처음으로 웹 애플리케이션을 배포할 때만 도구를 사용해야 aspnet_regsql.exe 합니다. 이러한 데이터베이스 개체가 프로덕션 데이터베이스에 있으면 다시 추가하거나 수정할 필요가 없습니다.

개발에서 프로덕션으로 사용자 계정 복사

SqlRoleProvider 공급자 클래스를 SqlMembershipProvider 사용하여 애플리케이션 서비스 정보를 SQL Server 데이터베이스에 저장하는 경우 사용자 계정 및 역할 정보는 , , aspnet_Membershipaspnet_Rolesaspnet_UsersInRoles를 비롯한 aspnet_Users다양한 데이터베이스 테이블에 저장됩니다. 개발 중에 개발 환경에서 사용자 계정을 만드는 경우 해당 데이터베이스 테이블에서 해당 레코드를 복사하여 프로덕션 환경에서 해당 사용자 계정을 복제할 수 있습니다. 데이터베이스 게시 마법사를 사용하여 애플리케이션 서비스 데이터베이스 개체를 배포한 경우 레코드를 복사하도록 선택했을 수도 있습니다. 이로 인해 개발에서 생성된 사용자 계정도 프로덕션 환경에 배치됩니다. 그러나 구성 설정에 따라 개발에서 계정을 만들고 프로덕션으로 복사한 사용자가 프로덕션 웹 사이트에서 로그인할 수 없다는 것을 알게 될 수 있습니다. 무엇을 제공하나요?

SqlRoleProvider 공급자 클래스는 SqlMembershipProvider 단일 데이터베이스가 여러 애플리케이션에 대한 사용자 저장소로 사용될 수 있도록 설계되었으며, 이론적으로 각 애플리케이션은 동일한 이름의 사용자 이름과 역할이 겹치는 사용자를 가질 수 있습니다. 이러한 유연성을 허용하기 위해 데이터베이스는 테이블의 애플리케이션 aspnet_Applications 목록을 유지 관리하며 각 사용자는 이러한 애플리케이션 중 하나와 연결됩니다. 특히 aspnet_Users 테이블에는 각 사용자를 테이블의 ApplicationId 레코드에 연결하는 열이 aspnet_Applications 있습니다.

aspnet_Applications 외에도 ApplicationId 테이블에는 애플리케이션에 ApplicationName 대한 보다 인간 친화적인 이름을 제공하는 열도 포함되어 있습니다. 웹 사이트가 로그인 페이지에서 사용자 자격 증명의 유효성을 검사하는 등 사용자 계정으로 작업하려고 할 때 작업할 애플리케이션을 클래스에 알려 SqlMembershipProvider 야 합니다. 일반적으로 애플리케이션 이름을 제공하여 이 작업을 수행하며, 이 값은 특히 특성을 통해 applicationName 의 공급자 구성 Web.config 에서 가져옵니다.

하지만 특성이 applicationNameWeb.config지정되지 않으면 어떻게 될까요? 이러한 경우 멤버 자격 시스템은 애플리케이션 루트 경로를 값으로 applicationName 사용합니다. 특성이 applicationName 에서 Web.config명시적으로 설정되지 않은 경우 개발 환경 및 프로덕션 환경에서 다른 애플리케이션 루트를 사용하므로 애플리케이션 서비스의 다른 애플리케이션 이름과 연결될 가능성이 있습니다. 이러한 불일치가 발생하면 개발 환경에서 만든 사용자는 프로덕션 환경의 값과 ApplicationId 일치하지 않는 값을 갖게 ApplicationId 됩니다. 결과적으로 해당 사용자는 로그인할 수 없습니다.

참고

이 상황에서 사용자 계정이 일치하지 않는 값으로 프로덕션에 복사된 ApplicationId 경우 쿼리를 작성하여 이러한 잘못된 ApplicationId 값을 프로덕션에 사용된 로 업데이트할 ApplicationId 수 있습니다. 업데이트되면 개발 환경에서 계정을 만든 사용자는 이제 프로덕션 환경에서 웹 애플리케이션에 로그인할 수 있습니다.

좋은 소식은 두 환경이 동일하게 ApplicationId 사용되도록 하기 위해 수행할 수 있는 간단한 단계가 있다는 것입니다. 모든 애플리케이션 서비스 공급자에 대해 특성을 Web.config 명시적으로 설정합니다applicationName. 및 요소의 applicationName 특성을 명시적으로 "BookReviews" <membership><roleManager>Web.config 설정합니다.

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

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

특성 및 그 뒤에 근거를 applicationName 설정하는 방법에 대한 자세한 내용은 Scott Guthrie 의 블로그 게시물, ASP.NET 멤버 자격 및 기타 공급자를 구성할 때 항상 applicationName 속성 설정을 참조하세요.

프로덕션 환경에서 사용자 계정 관리

WSAT(ASP.NET 웹 사이트 관리 도구)를 사용하면 사용자 계정을 쉽게 만들고 관리하고, 역할을 정의 및 적용하고, 사용자 및 역할 기반 권한 부여 규칙을 철자할 수 있습니다. 솔루션 탐색기 이동하여 ASP.NET 구성 아이콘을 클릭하거나 웹 사이트 또는 프로젝트 메뉴로 이동하고 ASP.NET 구성 메뉴 항목을 선택하여 Visual Studio에서 WSAT를 시작할 수 있습니다. 아쉽게도 WSAT는 로컬 웹 사이트에서만 작동할 수 있습니다. 따라서 워크스테이션의 WSAT를 사용하여 프로덕션 환경에서 웹 사이트를 관리할 수 없습니다.

좋은 소식은 WSAT에서 제공하는 모든 기능을 멤버 자격 및 역할 API를 통해 프로그래밍 방식으로 사용할 수 있다는 것입니다. 또한 대부분의 WSAT 화면은 표준 ASP.NET 로그인 관련 컨트롤을 사용합니다. 요컨대, 필요한 관리 기능을 제공하는 웹 사이트에 ASP.NET 페이지를 추가할 수 있습니다.

이전 자습서에서는 폴더를 포함 ~/Admin 하도록 Book Reviews 웹 애플리케이션을 업데이트했으며 이 폴더는 관리 역할의 사용자만 허용하도록 구성되었습니다. 관리자가 새 사용자 계정을 만들 수 있는 라는 폴더 CreateAccount.aspx 에 페이지를 추가했습니다. 이 페이지에서는 CreateUserWizard 컨트롤을 사용하여 새 사용자 계정을 만들기 위한 사용자 인터페이스 및 백 엔드 논리를 표시합니다. 또한 새 사용자를 관리 역할에 추가해야 하는지 여부를 묻는 CheckBox를 포함하도록 컨트롤을 사용자 지정했습니다(그림 5 참조). 약간의 작업을 통해 WSAT에서 제공하는 사용자 및 역할 관리 관련 작업을 구현하는 사용자 지정 페이지 집합을 빌드할 수 있습니다.

참고

로그인 관련 ASP.NET 웹 컨트롤과 함께 멤버 자격 및 역할 API를 사용하는 방법에 대한 자세한 내용은 내 웹 사이트 보안 자습서를 참조하세요. CreateUserWizard 컨트롤 사용자 지정에 대한 자세한 내용은 사용자 계정 만들기추가 사용자 정보 저장 자습서를 참조하거나 Erich Peterson문서 CreateUserWizard 컨트롤 사용자 지정을 검사.

관리자는 새 사용자 계정을 만들 수 있습니다.

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

WSAT의 전체 기능이 필요한 경우 작성자 Dan Clem이 사용자 지정 WSAT와 유사한 도구를 빌드하는 프로세스를 안내하는 사용자 고유의 웹 사이트 관리 도구 롤아웃을 검사. Dan은 자신의 애플리케이션 소스 코드(C#)를 공유하고 호스트된 웹 사이트에 추가하기 위한 단계별 지침을 제공합니다.

요약

애플리케이션 서비스 데이터베이스 구현을 사용하는 웹 애플리케이션을 배포할 때 먼저 프로덕션 데이터베이스에 필요한 데이터베이스 개체가 있는지 확인해야 합니다. 이러한 개체는 데이터베이스 배포 자습서에서 설명하는 기술을 사용하여 추가할 수 있습니다. 또는 이 자습서에서 aspnet_regsql.exe 보았듯이 도구를 사용할 수 있습니다. 개발 및 프로덕션 환경에서 사용되는 애플리케이션 이름(개발 환경에서 만든 사용자 및 역할이 프로덕션에서 유효하도록 하려는 경우 중요)과 프로덕션 환경에서 사용자 및 역할을 관리하는 기술을 동기화하는 데 중점을 두는 다른 과제가 있습니다.

행복한 프로그래밍!

추가 정보

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