ASP.NET 2.0应用中定制安全凭证之理论篇

阅读提要 在缺省状况下,你只能使用Visual Studio 2005的一个本机实例来 管理与ASP.NET 2.0一同发行的SQL Server数据库中的安全凭证。本文将向你展 示怎样用一个Web服务来包装ASP.NET 2.0提供者并通过使用一个Windows表单应 用程序来管理凭证存储从而扩展这种管理能力。

如今,无论是互联网还是企业内部局域网程序一般都要求使用定制的方式来 存储和管理用户帐户和角色。为此,ASP.NET 2.0提供了一个现成的提供者模型 和一个SQL Sever数据库。不幸的是,只能通过Visual Studio 2005来管理该凭证数据库且只能针对本机Web应用程序。这无疑是非常不方便而且不能广泛使用 的。

本文描述了一个超级用户可以使用的完全定制的安全管理应用程序。这个应 用程序通过用一个WEB服务对ASP.NET 2.0提供者进行了包装并增加了一些功能。 本文详细描述了其中的设计方法,面临的问题和包含在应用程序中的技术。同时 还向你介绍了一些有用而强有力的技术,如基于接口的Web服务,基于反射的Web 服务兼容性,高级C# 2.0编程,Web服务安全性和Web服务事务等。

一、ASP.NET 2.0凭证基础结构

基于互联网的应用程序常常不依赖Windows帐户和组,而是依赖于基于表单的 认证并结合某种如SQL Server的后台定制凭证存储。为了帮助开发者免除重复设 计和构建这样的解决方案,ASP.NET 2.0发行中加入了一个现成的安全凭证基础 结构。ASP.NET 2.0凭证存储并不仅可用于ASP.NET应用程序,而且ASP.NET Web 服务和Windows表单应用程序都能使用它来管理它们的用户凭证。另外,Windows 通讯基础(编码名为Indigo)服务也能被容易地设置来使用ASP.NET 2.0安全凭证 存储。

ASP.NET 2.0使用一提供者模型来访问和管理凭证以避免把应用程序耦合到任 何特定存储上。在利用抽象提供者模型的优点的同时由程序员来开发这个应用程 序。超级用户负责选择和管理特定的凭证存储。图1显示出ASP.NET 2.0安全提供 者的架构。

图1.ASP.NET 2.0安全提供者模型

Membership Provider负责管 理用户,而Role Provider负责管理角色。在凭证存储中,每个用户或角色仅限 于一应用程序之内。这样就允许不同应用程序使用一样的凭证存储而不会与彼此 的用户名或角色相冲突。ASP.NET为SQL服务器、Windows和活动目录(见图1)等的 凭证存储提供支持。为了安装SQL Server凭证数据库,可以运行 aspnet_regsql.exe程序,其位置是:

<WINDOWS>\Microsoft.NET\Framework\<version>

这个安装程序创建一个称为 aspnetdb的新数据库-它包含一组应用程序的表、用户、角色以及存取这些表的 存储过程。这个SQL Server数据库是运用最新的安全技术经过精心设计的。另外 ,ASP.NET 2.0还提供一套相应于提供者的类(图1)。

使用哪个提供者 的信息被保存在应用程序的配置文件(App.Config或Web.Config)中。你几乎不需 要直接与特定的提供者进行交互;而是,存在两个静态助理类:Membership和 Roles-它们负责从配置文件中读取使用哪个提供者。默认的提供者(即当没有指 定提供者时)就是SQL Server。Membership类(列表1)允许你创建和删除用户, 检索关于用户的信息并观看口令策略。

列表1: Membership助理类

[Serializable]
public class MembershipUser{
  public virtual bool ChangePassword(string oldPassword,string newPassword);
  public virtual string GetPassword(string passwordAnswer);
  public virtual string ResetPassword(string passwordAnswer);
  public virtual bool UnlockUser();
  //其它成员
}
public static class Membership{
  public static string ApplicationName{get;set;}
  public static MembershipUser CreateUser(string username, string password);
  public static MembershipUser CreateUser(string username,
  string password, string email, string passwordQuestion,
  string passwordAnswer, bool isApproved, out MembershipCreateStatus status);
  public static bool DeleteUser(string username,bool deleteAllRelatedData);
  public static MembershipUser GetUser(string username);
  public static void UpdateUser(MembershipUser user);
  public static bool ValidateUser(string username,string password);
  public static bool EnablePasswordReset{get;}
  public static bool EnablePasswordRetrieval{get;}
  //其它成员
}

时间: 2024-10-02 13:40:35

ASP.NET 2.0应用中定制安全凭证之理论篇的相关文章

ASP.NET2.0应用中定制安全凭证之理论篇

asp.net|安全 阅读提要 在缺省状况下,你只能使用Visual Studio 2005的一个本机实例来管理与ASP.NET 2.0一同发行的SQL Server数据库中的安全凭证.本文将向你展示怎样用一个Web服务来包装ASP.NET 2.0提供者并通过使用一个Windows表单应用程序来管理凭证存储从而扩展这种管理能力. 如今,无论是互联网还是企业内部局域网程序一般都要求使用定制的方式来存储和管理用户帐户和角色.为此,ASP.NET 2.0提供了一个现成的提供者模型和一个SQL Seve

ASP.NET 2.0应用中定制安全凭证之实践篇

一.方案架构 本方案架构很简单--它用一个Web服务来包装ASP.NET 2.0提供者并且为远 程客户暴露该凭证管理,你甚至还能在该架构中加上一些失去的功能.然后,在 提供一个丰富的用户接口和全面凭证管理经验的同时,使用一个Windows表单应 用程序来消费该Web服务.该Web服务配置文件将包含特定于该凭证存储的指令. 然而,这的确意味着所有由该Web服务管理的应用程序都将可以共享这些指令. 尽管你能够从头到尾地构建该Web服务,也就是说,首先用静态方法Roles和 Membership来包装

ASP.NET2.0应用中定制安全凭证之实践篇

asp.net|安全     一.方案架构 本方案架构很简单--它用一个Web服务来包装ASP.NET 2.0提供者并且为远程客户暴露该凭证管理,你甚至还能在该架构中加上一些失去的功能.然后,在提供一个丰富的用户接口和全面凭证管理经验的同时,使用一个Windows表单应用程序来消费该Web服务.该Web服务配置文件将包含特定于该凭证存储的指令.然而,这的确意味着所有由该Web服务管理的应用程序都将可以共享这些指令. 尽管你能够从头到尾地构建该Web服务,也就是说,首先用静态方法Roles和Mem

ASP.NET 2.0 Beta2 中特殊文件夹名称的改变

asp.net 微软的Web平台开发组最近发布了一个新消息,据称在Visual Studio 2005 Beta2中,ASP.NET2.0中的一些特殊文件夹的名称将有所改变.这些改变主要是为了避免和应用程序命名的不协调,以及在进行XCopy部署时保护相关系统资料. ASP.NET 2.0 (Beta2)中最新的特殊文件夹的名称改变如下: /Bin 改变为 /Application_Assemblies * /Code 改变为 /Application_Code /Resources 改变为 /A

ASP.NET 2.0 AJAX中Webservice调用方法示例

ajax|asp.net|web|示例 ASP.NET 2.0 AJAX中能够在客户端js中很方便地调用服务器Webservice,以下为一些调用的示例.笔者安装的ASP.NET 2.0 AJAX 版本为AJAX November CTP. 三个示例分别为:1 带参数的WS方法2 不带参数的WS方法3 参数类型为DataTable的WS方法 一.WebMethod注意要点:1 WebMethod类需要添加命名空间 Microsoft.Web.Script.Services,此空间需要引用Micr

在ASP.NET 2.0开发中实现站点地图的本地化

本文中,我们首先简要地介绍了ASP.NET 2.0提供的新的站点导航机制,并注意到这个新的导航功能的核心是通过XML文件来详细描述网站的导航框架.显然,这种新导航机制的强大功能可以大大节省程序员的编码时间.接下来,我们通过一个简单的例子分析了本地化Web.sitemap的一般思路. 一.基于XML的站点地图 以前在Web应用程序中建立导航的方法是在页面上散布大量的超级链接.但当开发大型Web工程时,这种简单而原始的方法显得极为臃肿而且力不从心.为此,ASP.NET 2.0引入了一个新的导航系统来

asp.net 2.0 Webconfig中连接串的加密

ASP.NET 2.0 允许用户对配置文件的单个节进行加密本文.通过示例,演示如何以编程方式对配置节进行加密,配置API如何自动处理加密的节. ASP.NET 2.0 现在允许您对配置文件的单个节进行加密,这样,几乎不可能使用文本编辑器来读取这些配置节. ASP.NET 包括两个内置的受保护配置提供程序:RSA和DPAPI DPAPI提供程序使用特定于计算机的密钥,因此您必须在每台计算机上实际加密配置设置.默认使用的RSA提供程序允许您选择创建RSA密钥并将其安装在其他计算机上,这样您就可以在这

ASP.NET 2.0 WebService中传递DataTable参考

asp.net|web|参考 在2.0正式版发布之前,就满天的看到关于DataTable支持序列化的新特性宣传,满以为从此以后使用DataTable就和DataSet一样方便了,结果在应用项目的时候才发现并非那么回事. DataTable是支持序列化了,但是微软并没有把他做的特别方便,还需要我们自己来做一些工作之后才能够在WebService里面传递DataTable,否则在引用DataTable的时候会发现DataTable变成了一个什么Proxy类型. 首先编写类DataTableSchem

ASP.NET 4.0 AJAX 中无法使用自定义函数的疑问

问题描述 我的开发环境是vs2010sp1+asp.net4.0,我使用了scriptmanager控件,但是在aspx页面里我自己编写的javascript无法饮用.请问是什么原因?谢谢.PS:我之前一直是用ASP.NET2.0+AJAX,那时候是可以使用这些自定义的函数的,但是现在在ASP.NET4.0里就是提示我的函数没有定义. 解决方案 解决方案二:你是怎么使用你的函数的?解决方案三:在别的按钮的onClientClick里引用