转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 站长学院 >> Web开发 >> 正文
ASP.NET 安全性         ★★★★

ASP.NET 安全性

作者:闵涛 文章来源:闵涛的学习笔记 点击数:6744 更新时间:2009/4/23 10:44:53
>

PrincipalPermission 请求

命令性(嵌入方法的代码内)

PrincipalPermission permCheck = new PrincipalPermission(
                                       null, @"DomainName\WindowsGroup");
    permCheck.Demand();

声明性(属性位于接口、类和方法之前)

[PrincipalPermission(SecurityAction.Demand, 
                  Role=@"DomainName\WindowsGroup)]

明确的角色检查。您可以使用 IPrincipal 接口执行角色检查。

IPrincipal.IsInRole(@"DomainName\WindowsGroup");

Enterprise Services (COM+) 角色。可以使用 ContextUtil 类以编程方式执行角色检查。

ContextUtil.IsCallerInRole("Manager")

何时使用

使用 Windows 身份验证和模拟的情况:

应用程序的用户已经有了可以由服务器验证的 Windows 帐号。

您需要将原调用者的安全性上下文传递到 Web 应用程序的中间层和/或数据层以支持细分(每用户)授权。

您需要将原调用者的安全性上下文传递到下游各层以支持操作系统级审核。

在应用程序中使用模拟之前,确保将此方法与使用受信任的子系统模型进行比较,了解此方法的优缺点。“身份验证和授权”一章中的“授权方式”章节中的“选择资源访问模式”详细阐述了这些内容。

模拟的缺点包括:

由于无法对数据库连接进行池处理,因而降低了应用程序的可扩展性。

由于需要给各个用户配置后端资源的 ACL,因而增加了管理工作。

委派需要 Kerberos 身份验证和进行适当配置的环境。

更多信息

有关 Windows 身份验证的详细信息,请参见本章后面的“Windows 身份验证”。

有关模拟的详细信息,请参见本章后面的“模拟”。

有关 URL 授权的详细信息,请参见本章后面的“URL 授权注意事项”。

有关 Enterprise Services (COM+) 角色的详细信息,请参见“Enterprise Services Security一章。

不带模拟的 Windows 身份验证

下列配置元素显示了如何在Web.config.中明确声明启用不带模拟功能的 Windows(IIS) 身份验证。

<authentication mode="Windows" />
<!-- The following setting is equivalent to having no identity element -->
<identity impersonate="false" />

可配置的安全性

当您使用不带模拟的 Windows 身份验证时,可以使用以下授权选项:

WindowsACL

客户端请求的资源。ASP.NET FileAuthorizationModule 对映射到 ASP.NET ISAPI 的请求文件类型执行访问检查。它使用原调用者的访问令牌和附加到请求资源的 ACL 以便执行访问检查。模拟不是必需选项。

对于静态文件类型(没有映射到 ISAPI 扩展),IIS 使用调用者的访问令牌和附加到文件的 ACL 执行访问检查。

应用程序访问的资源。根据 ASP.NET 进程标识,在应用程序所访问的资源(文件、文件夹、注册表项和 Active Directory 对象)上配置 Windows ACL。

URL 授权。在 Web.config 中配置 URL 授权。在 Windows 身份验证中,用户名采用 DomainName\UserName 格式,并且角色与 Windows 组 一 对应。

<authorization>
  <deny user="DomainName\UserName" />
  <allow roles="DomainName\WindowsGroup" />
</authorization>

程序安全性

可以使用下列编程安全选项:

主体权限要求

命令性

PrincipalPermission permCheck = new PrincipalPermission(
                                         null, @"DomainName\WindowsGroup");
    permCheck.Demand();

声明性

[PrincipalPermission(SecurityAction.Demand, 
                  Role=@"DomainName\WindowsGroup")]

明确的角色检查。您可以使用IPrincipal 接口执行角色检查。

IPrincipal.IsInRole(@"DomainName\WindowsGroup");

何时使用

使用不带模拟的 Windows 身份验证的情况:

应用程序的用户已经有了可以由服务器验证的 Windows 帐户。

需要使用固定标识来访问下游资源(例如数据库)以便支持连接池。

更多信息

有关 Windows 身份验证的详细信息,请参见本章后面的“Windows 身份验证”。

有关 URL 授权的详细信息,请参见本章后面的“URL 授权注意事项”。

使用固定标识的 Windows 身份验证

Web.config 中的 <identity> 元素支持可选的用户名和密码属性,这样,您就可以为应用程序配置特定的固定标识以进行模拟。这显示在以下配置文件片段中。

<identity impersonate="true"
          userName="registry:HKLM\SOFTWARE\YourSecureApp\
                    identity\ASPNET_SETREG,userName"
          password="registry:HKLM\SOFTWARE\YourSecureApp\
                    identity\ASPNET_SETREG,password" />

这个例子显示了 <identity> 元素,其中凭证在注册表中使用 aspnet_setreg.exe 工具进行加密。明文形式的 userNamepassword 属性值被指向安全的注册表项和包含加密凭证的命名值的指针所替代。有关这个工具的详细信息及下载方式,请参见 Microsoft 知识库中的文件 Q329290 “HOWTO:Use the ASP.NET Utility to Encrypt Credentials and Session State Connection Strings”。

何时使用

当在运行 Windows 2000 的服务器上使用 .NET Framework 1.0 时,不建议使用固定的模拟标识。因为这需要您授予 ASP.NET 进程帐户“充当操作系统的一部分”权限,这个权限很大。 ASP.NET 进程需要这个权限,因为它使用您所提供的凭证执行 LogonUser 调用。

.NET 框架 1.1 版将在 Windows 2000 上提供此方案的改进版本。凭证将由 IIS 进程执行,这样 ASP.NET 就不需要“充当操作系统的一部分”权限了。

窗体身份验证

以下配置元素显示了如何在 Web.config 中以声明方式启用窗体身份验证。

<authentication mode="Forms">
  <forms loginUrl="logon.aspx" name="AuthCookie" timeout="60" path="/">
  </forms>
</authentication>

可配置的安全性

在使用窗体身份验证时,可以使用以下授权选项:

WindowsACL

客户端请求的资源。请求的资源需要 ACL 以允许对匿名 Internet 用户帐户进行读取访问。(在使用窗体身份验证时,应该将 IIS 配置为允许匿名访问)。

无法使用 ASP.NET 文件授权,因为它需要 Windows 身份验证。

应用程序访问的资源。根据 ASP.NET 进程标识,在应用程序所访问的资源(文件、文件夹、注册表项和 Active Directory 对象)上配置 Windows ACL。

URL 授权

在 Web.config 中配置 URL 授权。在窗体身份验证中,用户名的格式取决于自定义数据存储、SQL Server 数据库或 Active Directory。

如果使用的是 SQL Server 数据存储,则为:

<authorization>
<deny users="?" />
  <allow users="Mary,Bob,Joe" roles="Manager,Sales" />
</authorization>

如果使用 Active Directory 作为数据存储,则以 X.500 格式显示用户名和组名:

<authorization>
  <deny users="someAccount@domain.corp.yourCompany.com" />
  <allow roles ="CN=Smith James,CN=FTE_northamerica,CN=Users,
                DC=domain,DC=corp,DC=yourCompany,DC=com" />
</authorization>

程序安全性

可以使用下列编程安全选项:

主体权限要求

命令性

PrincipalPermission permCheck = new PrincipalPermission(
                                         null, "Manager");
    permCheck.Demand();

声明性

[PrincipalPermission(SecurityAction.Demand, 
                  Role="Manager")]

明确的角色检查。您可以使用 IPrincipal 接口执行角色检查。

IPrincipal.IsInRole("Manager");

何时使用

窗体身份验证最适合于 Internet 应用程序。如果出现以下情况,则应该使用窗体身份验证:

应用程序用户没有 Windows 帐户。

您希望用户通过使用 HTML 窗体输入凭证的方式登录到应用程序。

上一页  [1] [2] [3] [4] [5] [6] [7] [8] [9] [10]  ...  下一页 >> 


[C语言系列]NET 中C#的switch语句的语法  [系统软件]托拽Explore中的文件到VB.net的窗口
[系统软件]Boost库在XP+Visual C++.net中的安装  [常用软件]新配色面板:Paint.Net3.0RC1官方下载
[常用软件]用内建的“Net Meeting”聊天  [VB.NET程序]Henry的VB.NET之旅(三)—共享成员
[VB.NET程序]Henry的VB.NET之旅(二)—构造与析构  [VB.NET程序]Henry的VB.NET之旅(一)—失踪的窗体
[VB.NET程序]在托盘上显示Balloon Tooltip(VB.NET)  [VB.NET程序]Henry手记-VB.NET中动态加载Treeview节点(二)

教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Web开发  · 网页制作
    · 平面设计  · 网站运营
    · 网站推广  · 搜索优化
    · 建站心得  · 站长故事
    · 互联动态
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台