다음을 통해 공유


샘플 역할 공급자 구현

업데이트: 2007년 11월

여기에서는 샘플 역할 공급자와 지원되는 데이터 소스 스키마를 설명합니다.

다음 항목에는 샘플 역할 공급자 구현을 위한 코드가 포함되어 있습니다. 샘플 공급자에서는 .NET Framework Data Provider for ODBC를 사용하여 ODBC 데이터 소스에 연결합니다. 이 샘플에서는 Access 데이터베이스를 데이터 소스로 사용합니다.

이 항목에서는 샘플 프로파일 공급자를 구현하고 ASP.NET 응용 프로그램에서 이 샘플 공급자를 사용하도록 구성하는 방법을 설명합니다.

참고:

각 데이터 소스에 서로 다른 SQL 구문이 포함되어 있으므로 일부 명령은 데이터 소스에 따라 작동하거나 작동하지 않습니다. 따라서 .NET Framework Data Provider for ODBC 또는 .NET Framework Data Provider for OLEDB를 사용하여 SybaseProfileProvider 또는 OracleProfileProvider 등의 데이터 소스에 액세스하는 경우에도 데이터 소스에 따라 역할 공급자를 만들어야 합니다.

샘플 공급자 코드를 보려면 방법: 샘플 역할 공급자 구현을 참조하십시오.

데이터베이스 스키마

샘플 역할 공급자에서는 두 개의 데이터베이스 테이블을 사용하여 역할 정보를 관리합니다. Roles 테이블에는 역할 이름과 응용 프로그램이 들어 있고 UsersInRoles 테이블은 응용 프로그램 역할 이름과 사용자 이름을 연결하는 데 사용됩니다.

샘플 공급자가 사용하는 Access 테이블을 만들려면 새로운 또는 기존 Access 데이터베이스에서 다음 데이터 정의 쿼리를 실행합니다.

CREATE TABLE Roles
(
  Rolename Text (255) NOT NULL,
  ApplicationName Text (255) NOT NULL,
    CONSTRAINT PKRoles PRIMARY KEY (Rolename, ApplicationName)
)

CREATE TABLE UsersInRoles
(
  Username Text (255) NOT NULL,
  Rolename Text (255) NOT NULL,
  ApplicationName Text (255) NOT NULL,
    CONSTRAINT PKUsersInRoles PRIMARY KEY (Username, Rolename, ApplicationName)
)

이벤트 로그 액세스

샘플 공급자는 데이터 소스 작업 시 예외가 발생하면 ASP.NET 응용 프로그램에 예외를 반환하는 대신 응용 프로그램 이벤트 로그에 예외의 세부 정보를 기록합니다. 이 작업은 보안상 데이터 소스에 대한 전용 정보가 ASP.NET 응용 프로그램에 노출되지 않도록 하기 위해 수행됩니다.

샘플 공급자에서는 "OdbcRoleProvider"의 이벤트 Source를 지정합니다. ASP.NET 응용 프로그램에서 응용 프로그램 이벤트 로그에 올바르게 기록하도록 하려면 먼저 다음 레지스트리 키를 만들어야 합니다.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application\OdbcRoleProvider

샘플 공급자가 이벤트 로그에 예외를 기록하지 않도록 하려면 Web.config 파일에서 writeExceptionsToEventLog 특성을 false로 설정합니다.

샘플 공급자 빌드

샘플 공급자를 사용하려면 응용 프로그램의 App_Code 디렉터리에 소스 코드를 배치하면 됩니다. 응용 프로그램의 App_Code 디렉터리에 소스 코드가 이미 있으면 디렉터리의 기존 코드와 동일한 언어로 작성된 샘플 공급자 버전을 추가해야 합니다. 이 공급자는 해당 응용 프로그램이 필요할 때 ASP.NET에서 컴파일됩니다.

또한 샘플 공급자를 라이브러리로 컴파일한 다음 웹 응용 프로그램의 Bin 디렉터리에 배치하거나, 강력한 이름으로 지정한 다음 GAC에 배치할 수도 있습니다. 다음 명령에서는 명령줄 컴파일러를 사용하여 샘플 공급자를 컴파일하는 방법을 보여 줍니다.

vbc /out:OdbcRoleProvider.dll /t:library OdbcRoleProvider.vb /r:System.Web.dll /r:System.Configuration.dll
csc /out:OdbcRoleProvider.dll /t:library OdbcRoleProvider.cs /r:System.Web.dll /r:System.Configuration.dll

ASP.NET 응용 프로그램에서 샘플 공급자 사용

다음 예제에서는 샘플 공급자를 사용하도록 구성된 ASP.NET 응용 프로그램의 Web.config 파일을 보여 줍니다. 이 예제에서는 "RolesDSN"이라는 ODBC DSN을 사용하여 Access 데이터베이스에 대한 연결 정보를 가져옵니다. 이 샘플 공급자를 사용하려면 "RolesDSN"이라는 System DSN을 만들거나 데이터베이스에 올바른 ODBC 연결 문자열을 제공해야 합니다.

예제 구성에서는 웹 사이트가 폼 인증을 사용하도록 설정되었고 사용자 로그인에 사용되는 login.aspx라는 ASP.NET 페이지가 포함되어 있다고 가정합니다.

<configuration>
  <connectionStrings>
    <add name="OdbcServices" connectionString="DSN=RolesDSN;" />
  </connectionStrings>

  <system.web>
    <authentication mode="Forms" />
      <forms loginUrl="loginvb.aspx"
        name=".ASPXFORMSAUTH" />
    </authentication>

    <authorization>
      <deny users="?" />
    </authorization>

    <roleManager defaultProvider="OdbcRoleProvider" 
      enabled="true"
      cacheRolesInCookie="true"
      cookieName=".ASPROLES"
      cookieTimeout="30"
      cookiePath="/"
      cookieRequireSSL="false"
      cookieSlidingExpiration="true"
      cookieProtection="All" >
      <providers>
        <clear />
        <add
          name="OdbcRoleProvider"
          type="Samples.AspNet.Roles.OdbcRoleProvider"
          connectionStringName="OdbcServices" 
          applicationName="SampleApplication" 
          writeExceptionsToEventLog="false" />
      </providers>
    </roleManager>

  </system.web>
</configuration>

참고 항목

개념

역할 공급자 구현

기타 리소스

역할을 사용하여 권한 부여 관리

ASP.NET 웹 사이트 보안