ASP.NET2.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有惊无险提供者的架构。

SQL Server 1

图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;}
 //此外成员
}

  例如,为了在”MyApp”应用程序中开创一新用户,你仅需如下编码:

Membership.ApplicationName = “MyApp”;
Membership.CreateUser(“MyUser”,”MyPassword”,…);

  Roles类允许你创建和删除用户角色,从角色中增长或删除用户,检索用户的角色会员音讯以及表明角色会员。上边是此类的概念:

public static class Roles{
 public static string ApplicationName{get;set;}
 public static void CreateRole(string roleName);
 public static bool DeleteRole(string roleName, bool
throwOnPopulatedRole);
 public static void AddUserToRole(string username, string roleName);
 public static void RemoveUserFromRole(string username, string
roleName);
 public static string[] GetAllRoles();
 public static string[] GetRolesForUser(string username);
 public static string[] GetUsersInRole(string roleName);
 public static bool IsUserInRole(string username, string roleName);
 //另外成员
}

  例如,要把角色”Manager”添加到应用程序”MyApp”上,你可以如下编码:

Roles.ApplicationName = “MyApp”;
Roles.CreateRole(“Manager”);
**二、管理凭证存储

**  倘若你挑选使用Windows或位移目录来囤积你的应用程序的用户和角色,那么你需要采纳相应于这些囤积的工具来保管,例如总计机控制面板小程序或挪动目录工具。其实,真正的问题在于怎么着管理存储在SQL
Server中的凭证。为此,你可以行使Visual Studio
2005和一个Web浏览器,甚至不需要安装IIS。在一ASP.NET
Web工程中,从”Website”菜单下抉择”ASP.NET配置”。这将使得Visual
Studio宿主一个Web服务器,打开一可用的端口还要导航到一套管理页面(见图2)。那些管理页面修改该Web应用程序配置文件同时也足以管理凭证存储(当不拔取Windows认证时)。当使用Visual
Studio
2005时,你首先需要选用认证项目。你能够采取Windows或表单认证(互联网存取)。假若你挑选表单认证,你还足以推行下列操作:

  ·启动或裁撤基于角色的攀枝花

  ·创立和删除角色

  ·成立和删除用户

  ·检索一用户的底细

  ·设置一用户的情事

  ·给用户赋于某角色

  ·从角色中剔除用户

SQL Server 2
图2.ASP.NET Web应用程序管理页面

  既然SQL Server是ASP.NET
2.0提供的唯一的商号级定制凭证存储,你可以单独接纳Visual Studio
2005使得的治本页面来管理aspnetdb数据库,而不用别样此外存储。

  三、内置功用的欠缺

  对于Visual Studio
2005驱动的田间管理页面存在部分至关首要缺点:第一,你需要Visual Studio
2005。应用程序或系列顶尖用户可能没有Visual Studio
2005,更毫不说怎么着使用它了。缺省地,该管理页面使用一斜杠(/)来管理应用程序命名,并且没提供任何改动章程。第二,不能存在远程存取-应用程序和Visual
Studio 2005亟须共存,这样Visual Studio
2005才能存取应用程序的布局文件。第三,基于浏览器的用户接口也不很要好-你需要不断点击Back按钮,而且用户接口反映异常迟钝。此外,许多至上用户可能想采取的风味不可能经由页面管理来实现,这就退出了底层提供者类所支撑的性状这一实际。这种措施还不可以落实的地方有:

  ·更新大多数用户帐户细节

  ·检索、改变、重置一用户的口令

  ·检索当前在线用户数据信息

  ·可以从五遍操作的一个角色中去除所有用户

SQL Server,  ·检索关于口令管理策略(例如长度、重置策略、口令类型等)的信息

  ·测试用户凭证

  ·验证用户角色地位

  而且,还有其他的一流用户可能想要的特性也得不到支撑。那多少个特色包括可以寻找数据库所有应用程连串表,可以从一应用程序中去除所有的用户,可以从一应用程序中除去所有的角色,可以删除一应用程序(和它的富有相关联的用户和角色),可以删除所有的应用程序。可想而知,固然ASP.NET
2.0提供了一个甲级的周密的凭据管理,但是它仅提供了有的原本的管住采取,一般的实际上顶级用户是不会拔取它的。

SQL Server 3
图3.凭证管理器应用程序的一个快照

  这总体促使自己要好来支付一个定制的客户端凭证管理器应用程序来弥补这多少个不足。图3显得该程序的一个快照。后边的有的将介绍自身是哪些统筹和构建该证据管理器的。
http://www.7dspace.com/doc/24/0512/2005122706501336546_1.htm

相关文章