AuthorizationStoreRoleProvider 类

注意:此类在 .NET Framework 2.0 版中是新增的。

在 XML 文件中、Active Directory 中或 Active Directory 应用程序模式服务器上管理 ASP.NET 应用程序的角色成员资格信息在授权管理器策略存储区中的存储。

命名空间:System.Web.Security
程序集:System.Web(在 system.web.dll 中)

Visual Basic(声明)
Public Class AuthorizationStoreRoleProvider
    Inherits RoleProvider
Visual Basic(用法)
Dim instance As AuthorizationStoreRoleProvider
C#
public class AuthorizationStoreRoleProvider : RoleProvider
C++
public ref class AuthorizationStoreRoleProvider : public RoleProvider
J#
public class AuthorizationStoreRoleProvider extends RoleProvider
JScript
public class AuthorizationStoreRoleProvider extends RoleProvider

此类由 RolesRolePrincipal 类用于为使用授权管理器存储区的 ASP.NET 应用程序提供角色管理服务。可以使用角色管理为应用程序指定不同的授权级别。授权管理器可以使用 Microsoft 管理控制台访问。

AuthorizationStoreRoleProvider 对象使用 Windows 身份验证和 Forms 身份验证模式。

通过配置 AuthorizationStoreRoleProvider 对象,可以使用本地 XML 文件、Active Directory 或 Active Directory 应用程序模式 (ADAM) 服务器。使用本地文件时,连接字符串应类似于下面的示例。

msxml://<path to xml file>

如果本地文件存储在 ASP.NET Web 应用程序的目录树中,则可以使用波浪线字符(“~”)字符指示根目录。例如,若要指示本地文件存储在 Web 应用程序的数据目录中,应使用类似于下面的示例的连接字符串。

msxml://~\App_Data\datafilename.xml

Security note安全注意

在 Web 应用程序目录中存储 XML 数据文件是一种潜在的安全威胁。默认情况下,IIS 会将 XML 数据文件发送到 Web。为了提高使用 ASP.NET 应用程序中的本地数据文件时的安全性,应将数据文件存储在 App_Data 目录中。存储在 App_Data 目录中的文件不会发送到 Web。

如果要将 Active Directory 或 ADAM 服务器用于策略存储区,则连接字符串应类似于下面的示例。

msldap://myserver/CN=MyAzManStore,OU=MyOU,DC=MyDomain,DC=MyDC,DC=Com

在有关 AuthorizationStoreRoleProvider 对象方法的文档中列出的异常是由 AuthorizationStoreRoleProvider 对象引发的异常。由于提供程序依赖于基础身份验证管理器运行库,因此每当 AuthorizationStoreRoleProvider 对象将方法调用转发到身份验证管理器运行库时都可能引发 COMException 异常。

Security note安全注意

AuthorizationStoreRoleProvider 对象对于在部分信任环境中运行有以下要求:

在 ASP.NET 应用程序中使用基于文件的策略存储区时,由当前信任级别授予的文件 I/O 权限确定提供程序是否允许进行读操作和写操作。ASP.NET 应用程序必须具有对文件的读权限以从策略存储区读取数据,而且必须具有写权限以在策略存储区中保存新的信息或更新现有信息。默认的中等信任级别的策略文件授予 ASP.NET 应用程序在其应用程序目录中的读/写权限。默认的低信任级别的策略文件仅授予 ASP.NET 应用程序在其应用程序目录中的读权限。此外,运行 ASP.NET 应用程序的进程的标识必须具有文件系统权限以对策略文件进行读和/或写访问。

使用 Active Directory 或 ADAM 服务器时,ASP.NET 应用程序需要非托管代码权限,这是因为内部 AuthorizationStoreRoleProvider 对象代码使用 COM interop。

在 ASP.NET 之外使用 AuthorizationStoreRoleProvider 对象时,调用方代码需要非托管代码权限。

下面的代码示例演示一个设置使用 AuthorizationStoreRoleProvider 进行角色管理的 Web.config 文件。

<configuration>
  <connectionStrings>
    <add name="AuthorizationServices" connectionString="msxml://~\App_Data\SampleStore.xml" />
  </connectionStrings>

  <system.web>

    <authentication mode="Windows" />
    <identity impersonate="true" />

    <roleManager defaultProvider="AuthorizationStoreRoleProvider" 
      enabled="true"
      cacheRolesInCookie="true"
      cookieName=".ASPROLES"
      cookieTimeout="30"
      cookiePath="/"
      cookieRequireSSL="false"
      cookieSlidingExpiration="true"
      cookieProtection="All" >
      <providers>
        <clear />
          <add
            name="AuthorizationStoreRoleProvider"
            type="System.Web.Security.AuthorizationStoreRoleProvider"
            connectionStringName="AuthorizationServices"
            applicationName="SampleApplication" 
            cacheRefreshInterval="60"
            scopeName="" />
      </providers>
    </roleManager>

  </system.web>
</configuration>
posted on 2008-11-14 15:04  yxbsmx  阅读(158)  评论(0编辑  收藏  举报