拼吾爱程序人生.Net编程Asp.Net ASP.NET2.0应用中定制安全凭证之理论篇

1  /  1  页   1 跳转 查看:1098

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

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安全提供者的架构。


  图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助理类

Code


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

Membership.Applicati;
Membership.CreateUser("MyUser","MyPassword",...);
  Roles类允许你创建和删除用户角色,从角色中添加或删除用户,检索用户的角色会员信息以及验证角色会员。下面是该类的定义:

Code


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

Roles.Applicati;
Roles.CreateRole("Manager");

 感谢原创者的辛勤劳动,希望对您有所帮助,转载请注明原出处。
 您可能对 [Asp.Net] 的这些文章也感兴趣:

ASP.NET上传文件到数据库
ASP.NET Mvc Preview 5 演示Demo #4
[Podcast推荐]--ASP.NET & .NET
ASP.NET Mvc Preview 5 演示Demo #2 实现Membership角色权限控制
.NET Framework Namespaces
技巧:ASP.NET数据校验部分的封装与应用
如何使用.NET配置文件(一)
C#调用ORACLE存储过程返回结果集及函数
c#2.0中动态修改页面标题
中小系统.net DataAccess数据访问类
 

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

二、管理凭证存储

  如果你选择使用Windows或活动目录来存储你的应用程序的用户和角色,那么你需要使用相应于这些存储的工具来管理,例如计算机控制面板小程序或活动目录工具。其实,真正的问题在于如何管理存储在SQL Server中的凭证。为此,你可以使用Visual Studio 2005和一个Web浏览器,甚至不需要安装IIS。在一ASP.NET Web工程中,从"Website"菜单下选择"ASP.NET配置"。这将使得Visual Studio宿主一个Web服务器,打开一可用的端口并且导航到一套管理页面(见图2)。这些管理页面修改该Web应用程序配置文件并且也可以管理凭证存储(当不选择Windows认证时)。当使用Visual Studio 2005时,你首先需要选择认证类型。你可以选择Windows或表单认证(互联网存取)。如果你选择表单认证,你还可以执行下列操作:

  ·启动或取消基于角色的安全

  ·创建和删除角色

  ·创建和删除用户

  ·检索一用户的细节

  ·设置一用户的状态

  ·给用户赋于某角色

  ·从角色中删除用户


图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按钮,而且用户接口反映相当迟钝。另外,许多超级用户可能想使用的特征无法经由页面管理来实现,这就脱离了底层提供者类所支持的特性这一事实。这种方式还不能实现的方面有:

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

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

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

  ·能够从一次操作的一个角色中删除全部用户

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

  ·测试用户凭证

  ·验证用户角色身份

  而且,还有其它的超级用户可能想要的特征也得不到支持。这些特征包括能够检索数据库所有应用程序列表,能够从一应用程序中删除所有的用户,能够从一应用程序中删除所有的角色,能够删除一应用程序(和它的所有相联系的用户和角色),能够删除所有的应用程序。总之,尽管ASP.NET 2.0提供了一个第一流的全面的凭证管理,然而它仅提供了一些原始的管理选项,一般的实际超级用户是不会使用它的。


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


  这一切促使我自己来开发一个定制的客户端凭证管理器应用程序来弥补这些不足。图3显示该程序的一个快照。后面的部分将介绍我是如何设计和构建该凭证管理器的。
网络核战不可避免!
 
1  /  1  页   1 跳转

快速回复帖子

标题
禁用 URL 识别
禁用表情
禁用 Discuz!NT 代码
使用个人签名
  [完成后可按 Ctrl+Enter 无刷新发布]  

版权所有 拼吾爱程序人生    Total Unique Visitors:

web counter

Powered by Discuz!NT 2.1.202   Copyright © 2001-2008 Comsenz Inc. 鄂ICP备07500843号
返顶部