您现在的位置: 捷凌网安 >> 服务器 >> WEB开 发 >> ASP.NET >> 正文
理解ASP.NET 2.0中的单点登录

作者:佚名 责任编辑:左决 点击数: 更新时间:2008-2-28 9:51:06

摘要
  在这篇文章中,Masoud讨论了应用ASP.NET中统一身份验证模型进行跨应用程序验证的问题,包括:Membership Providers, web.config配置,配置文件的加密解密等。在文章的最后,作者提供了通过ASP.NET login controls来验证的程序。
   简介

  通常在你要实现ASP.NET web应用程序的身份验证时,你需要为你的每一个应用程序创建一个登录页面。想象一下,如果你有两个或者更多的互相关联的web应用程序,你可能希望通过某种机制为你的所有带关联的应用程序实现仅出现一次登录页面。这样,一旦你登录了一次,你就可以浏览所有的关联程序,而不再需要额外的登录了。单点登录(SSO)就是这样的访问控制机制,它允许一个用户通过一次验证就可以访问所有软件系统资源。

  试想你在你的服务器上创建了两个或者更多的web站点。就像其他的web站点一样,你只是使用ASP.NET权限验证机制来验证你的用户。那么,你的这些站点可能需要一个或更多的登录页面。现在你正试图证明怎么样通过更改你的配置来实现跨程序登录。换句话说,我们只想给我们的程序配置一个登录页面,并且一旦用户通过了验证,他就可以浏览其他所有的站点,而不需要另外的登录。在这篇文章的附录中,你也可以看到如何加密你的配置文件。

  什么是单点登录?它是怎样工作的?

  在许多的公司里,他们有一些以web站点或web应用程序为表现层的系统。自然,由于安全议题他们将需要通过基于ASP.NET 2.0,通过Membership Provider 和 Role Provider 或者定制实现权限验证和权限验证系统。不论怎样,所有的站点都会默认有一个确定用户的ID和密码在数据库中是否有效的”login.aspx” web窗体.当你只有一个站点或者这些站点都是独立运行时,这样做是没有问题的。但是当你有两个或多个站点,而且站点间是关联在一起或链接在一起的,你没准就会问:为什么每个应用程序你都必须登录一次?为什么你不可以只有一个”login.aspx”来实现验证,并让所有不关联程序真正统一起来。幸运的是,在ASP.NET 2.0中你可以通过同样的配置来实现跨应用程序访问,不论是你的新的站点还是已经存在的站点。

  在ASP.NET配置文件(web.config)中有一个配置节(在<system.web中)命名为<machineKey>,负责加密和解密窗体(这些窗体可以读窗体权限验证cookies)权限认证的cookie数据和view-state数据,也负责校验进程外(out-of-process)session 状态标识。所以当用户一旦被验证通过并且有一个cookie保存到了本地计算机,其他拥有同样<machineKey>配置的应用程序也可以识别此cookie为有效的权限票据。所以在其他拥有同样<machineKey>配置的应用程序中就不再需要第二次登陆了。

  由于<machineKey>信息是敏感的,你需要加密配置文件中的此节信息。为了实现这个目标,我将使用ConfigurationManager类和他的方法。这里还有一个类SectionInformation,包含有配置中单个配置节的元数据。此类中有个方法ProtectSection(),用来解密你的配置文件的配置节。

  系统条件

  · A web server running on Windows 2000 or later

  · .NET Framework 2.0

  · Visual Studio 2005

  · Microsoft SQL Server 2005 Express EdITion

  现在让我们来看看在我们的项目中发生了什么。我有一个站点(Aspalliance1)站点中包含一个登录页面”Login.aspx”.用户可以通过此页来进行权限验证。在这个站点里还有一个页面叫做”Default.aspx”,它有一个header和一些文本另外还有一个到Aspalliance2站点的链接。你将会看到一旦这个用户登录了,他可以导航到其他站点而不需要第二次登陆。这里还有一个安置有两个加密和解密的按钮的页面”Encryption.aspx”,用来加密和解密配置文件。

  就像我之前所说的那样,你可以通过在你的web配置文件中一点点小小的配置实现跨应用程序访问。在web.config文件中,有一个名为<system.web>的配置节。我们将对<system.web>做相同的配置,只需要将配置节<machineKey>和它的值放到<system.web>配置节中。<machineKey>有一些属性,我将要去配置他们。首先,就是指定用来验证的加密类型。validationKey 定义了用来验证解密数据的key,decryptionKey定义了用来加密和解密的数据的key,抑或是key生成的过程。

  清单 1: 配置web.config中的machineKey
<machineKey validationKey="282487E295028E59B8F411ACB689CCD6F39DDD21E6055A3EE480424315994760ADF 21B580D8587DB675FA02F79167413044E25309CCCDB647174D5B3D0DD9141" decryptionKey="8B6697227CBCA902B1A0925D40FAA00B353F2DF4359D2099" validation="SHA1"/>

[1] [2] [3] 下一页

  • 上一篇文章:

  • 下一篇文章:
  •  
    最进更新
    普通文章foxpro 更新源表05-05
    普通文章foxpro 让视图与数据源相连05-05
    普通文章foxpro 机动查询和数据输入05-05
    普通文章foxpro 多个本地数据05-05
    普通文章foxpro 维护源表05-05
    普通文章Oracle 10g Release2新功能之05-05
    普通文章将Oracle 10g内置的安全特性05-05
    普通文章ACCESS 2003 建立数据库视频05-05
    普通文章三种SQL分页法效率分析05-05
    普通文章优化MySQL数据库查询的三种方05-05
     
    推荐文章
    推荐文章教你怎样在MySQL中提高全文搜05-05
    推荐文章SQL Server中数据导入导出三05-05
    推荐文章缓冲技术提高JSP程序的性能和04-17
    推荐文章asp去除HTML标记的三个实用函04-17
    推荐文章何时使用DataGrid、DataList04-17
    推荐文章MySQL存储过程示例04-14
    推荐文章华硕搭建Exchange2007企业邮03-14
    推荐文章升级Win 2003到Windows 200803-14
    推荐文章windows Server 2003 搭建域03-14
    推荐文章服务器成为IT中心的6个理由03-11
     
    热点文章 
    普通文章SQL Server 2008分析服务概览05-01
    普通文章Dlink路由器VPN设置04-29
    推荐文章缓冲技术提高JSP程序的性能和04-17
    普通文章教你优化你的ASP程序04-17
    推荐文章asp去除HTML标记的三个实用函04-17
    普通文章ASP添加验证码的解决方法04-17
    推荐文章何时使用DataGrid、DataList04-17
    普通文章Asp.net中禁止用户多次登录04-17
    普通文章MySQL之表结构修改04-14
    推荐文章MySQL存储过程示例04-14

    | 设为首页 | 加入收藏 | 联系站长 | 广告服务 | 友情链接 | 版权申明 | 网站地图 |

    在线交流 捷凌网安主群:51649627
    Copyright 2007-2008 © 捷凌网安. All rights reserved.
    备案序号:蜀ICP备08001812号