基于.net的安全性验证

来源 :电脑知识与技术·学术交流 | 被引量 : 0次 | 上传用户:jia_oracle
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:采用自定义主体Principal和身份Identity实现基于窗体的安全验证,构建了一个灵活方便的安全权限管理系统,综合使用了数据库技术、面向对象设计技术、操作系统权限管理、NET框架中基于代码访问安全性和基于角色访问安全性等多方面技术。该方案可以用于多数WEB系统中,作为通用的安全权限管理模块。
  关键词:身份验证;自定义主体;自定义身份
  中图法分类号:TP311文献标识码:A文章编号:1009-3044(2008)01-10ppp-0c
  
  Securit Authentication Base on .NET
  LI YunTANG Xin-yu
  (Changsha Aeronautic Vocational and Technical College, Hnnan Changsha 410124, China)
  Abstratct: This paper presents an approach for constructing a flexible and convenient Security Management system based on form securit authentication of self-defined principle and identify,combining with database technology,object-oriented design,operating system privilege management,code-based and role-based security access in .NET technology.This new idea can be used in most of Web systems as a universal security privilege management module.
  Key words: Identification and Authentication; self-defined principal; self-defined identif
  
  安全认证是一个复杂而关键的问题,对于WEB应用程序开发,通常在窗体登陆时实现认证的操作。安全的含义既包括不允许非授权用户访问特定资源,也包括允许授权用户方便地访问授权资源。验证是授权的关键部分。在允许或拒绝用户的权限之前,首先必须知道用户的身份。.NET框架使用身份(identity)和主体(principal)对象代表用户。主体对象对应于一个用户,并且包含代表该用户细节的身份对象。可以将用户分类为不同的组或角色(role),如管理员和用户。
  在ASP.NET授权中,有URL、文件、编码等授权方式,最为灵活的方面是通过编程给用户授权的能力。本文设计了一种通用的、基于数据库的、可以灵活应用的WEB系统用户验证与授权方案。
  
  1 总体设计
  
  .NET 基于角色安全性验证的核心是主体(Principal)和标识(Identity)对象,其中主体负责角色或者组的验证,标识对象封装了有关正在验证的用户或实体的信息。角色安全性验证通过生成可供当前线程使用的主体信息来支持授权,其中主体用关联的标识进行构造。验证用户后对其进行授权,授权允许细致地定义角色和方法,这些角色可利用这些方法与应用程序的操作或资源进行交互。验证涉及允许访问,而授权则精确定义了允许哪些访问内容。
  要实现基于Form的身份验证流程,需要做如下几项工作:1)修改Web.Config文件;2)在登陆文件(比如login.aspx)中将用户信息写入cookies并加密;3)在Global.asax文件的Application_AuthenticateRequest事件中取得用户身份;4)在需要授权才能访问的资源页面检查用户授权。
  
  
  图2 数据库关系图
  
  3 业务逻辑层
  
  SitePrincipal对象是实现了IPrincipal接口的类的实例,这些对象用来表示用户,并且包括了用户的身份信息。System.Security.Principal命名空间包括了几种类型的Principal类,这些类中封装了程序代码运行的的安全环境(security context)。
  声明授权允许在类层次中和单独的方法、属性或事件上设置权限需求。通过设置属性来做到这一点,ASP.NET中内置的用户验证支持非常强大。它能够在Context(上下文)对象中自动生成一个名为User的属性,该属性允许用户访问各种信息,包括用户是否已经验证、所使用的验证类型,甚至还有用户名。.NET系统中的安全机制基于主题(Principal)的概念,Principal对象代表以其名义运行代码的用户的安全环境。低于主体级别的是身份(Identity),身份代表执行代码的用户。因此每一个主体都有一个身份。主体和身份用户WEB站点和远程主机传递证书。
  由于Microsoft.Net没有提供一种从数据库获取许可级别的方式,所以要扩展NET系统中主体和身份的功能。分配给HttpContext.User 的对象必须实现IPrincipal接口,IPrincipal的属性之一是Identity,而Identity必须实现IIdentity接口,为此设计了两个类:SiteIdentity和SitePrincipal实现上述接口。类的详细说明如下:
  class SiteIdentity: IIdentity
  Name 当前身份名称
  UserId 用户编号
  Password 二进制格式的加密密码
  TestPassword(string) 验证用户密码
  Authentication 身份验证类别,返回”自定义身份验证”
  IsAuthentication 当前身份是否为已经验证
  
  classSitePrincipal: IPrincipal
  Identity 获取当前主体的身份
  IsInrole 当前主体是否属于某个角色
  Permissions PermissionsId数组,许可列表
  Roles 主体所属角色列表
  ValidateLogin 验证登陆电子邮件和密码
  HasPermission 主体是否具有某项许可
  EncrptPassword 加密用户密码
  
  4 主要技术实现
  
  4.1 Web.Config设置
  在配置文件Web.Config中把设置项中的mode属性设置为“Windows”、“Forms”、“Passport”或“None”,可以决定ASP.NET采用的验证模式。本文采用目前广泛应用于internet的窗体验证,即“Forms”身份验证模式。
  <authentication mode="Forms" >
   <forms
   name="edaWebLogin"
   path="/"
   loginUrl="Accounts/Admin/Login.aspx"
   protection="All"
   timeout="30">
   </forms>
  </authentication>
  4.2 全局应用程序Global.aspx.cs代码
  public void Application_AuthenticateRequest(Object sender, EventArgs e )
  {//尝试对使用进行身份验证时激发
  if (HttpContext.Current.User!=null)
  if (HttpContext.Current.User.Identity.IsAuthenticated)
  if ((HttpContext.Current.User.Identity) is FormsIdentity)
  { FormsIdentity Id = HttpContext.Current.User.Identity;
  String useremail = Id.Name.ToString();
  SitePrincipal newUser= New SitePrincipal(useremail);
  HttpContext.Current.User = newUser;}
  }
  4.3Accounts/Admin/Login.aspx用户提交事件
  private void Click(Object sender, EventArgs e)
  { SitePrincipal newUser =
  _SitePrincipal.ValidateLogin(EmailAddress.Text, Password.Text);
  if( newUser = =null)
  {LoginResult.Text = "登陆失败 "
其他文献
世界上最近的距离是母与子脐带相连,只有神奇的血脉解释出天地的奥秘。  今生 ,我穷极一生也无法丈量运河宽度,一条河早已跨越了人心。  我敬仰中華民族悠久灿烂的文明,只因河不曾断流,中华民族不曾更改信仰。  运河帆影,古道幽幽,你转漕的岂止是江南的米粮,塞北的乌金。儒家的中庸,法家的正道顺着运河水生生不息的奔流。  你是一条连接南来北往,纵贯古今的脐带,你把中华儿女紧紧相系,你让中华文明永不断流。
摘要:作为对欧美文学影响深远的拉丁美洲作家,博尔赫斯用奇特的叙述方式,将传说或是见诸记载的人物、事件进行“重述”和“改写”。在内容上,他“篡改”和“歪曲”他人作品中所叙述的故事,用近乎抄袭的创作方法表现故事和人物命运的多样性可能,及现实生活的丰富多彩。在形式上,作者从时空的多重维度和现实生活的多重组合中构建文本,将夸张的艺术形式与哲理般的思想内容结合起来,用零散性、互文见义、模糊性体裁、迷宫现象和
摘要:软件复用是提高软件生产力和软件质量的重要途径。本文提出了一种用面向对象的UML方法来分析并从中提取可复用构件的方法,并提出了ERP领域构件的一种提取及分类方法。  关键词:统一建模语言;构件;企业资源计划;构件分类  中图分类号:TP31 文献标识码:A 文章编号:1009-3044(2008)18-20ppp-0c    Extraction and classify component
摘要:系统基于C/S、B/S结构,采用C#为程序设计语言,SQLServer2000为后台数据库。该系统实现了进销存的信息化管理,方便了经营者日常经营管理,减少了额外开销,降低成本。  关键词:进销存;C#;SQLServer2000  中图分类号:TP312文献标识码:A文章编号:1009-3044(2008)18-2pppp-0c  Abstract:System is based on C/
摘要:在简要介绍了JSP数据库连接技术的基本原理和实现方法的基础上,提出了在数据存储、正确选择驱动程序、使用连接池技术及代码优化等方面改进数据访问效率的措施。  关键词:JSP;数据库;连接池  中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)24-1283-02  Research on Performance Optimization of Database Acc
摘要:INTERNET网络的迅速发展使宽带进入了寻常百姓家,网络爱好者们也勇于尝试,在自己的机器上建设自己的网站成为时尚, Win 2000漏洞百出,Win 2003又专门为服务器设计的,而LINUX或UNIX系统在平时又是很少使用。本文介绍了在WINXP环境中利用IIS架构自己的网站的方法。利用Windows XP的组件就可以满足建站的要求,而且安全性能不错。  关键词: Web;FTP;IIS
摘要:江苏省农业种质资源信息系统及基因库建设项目是江苏省农业种质资源保护与利用平台中的一个子平台。平台由水禽种质资源基因库、水禽研究开放实验室、水禽信息中心、水禽推广服务中心等构成。项目中的重要内容之一是构建水禽信息化中心,根据《江苏省农业种质资源保护与利用平台建设总体方案》的要求,要研究和完善水禽种质资源的描述规范,标准化整理,建立江苏省水禽种质资源数据库,通过e-平台和江苏省科技信息共享网络系
摘要:本文介绍了济南市气象网站的建设及其主要结构和网页内容. 济南气象网站发布的信息内容主要为系列气象预报和其他气象信息,实现了网页气象信息的自动更新,介绍了互联网技术在气象服务中的应用。  关键词:气象网站;气象信息;自动更新;后台管理  中图分类号:TP393文献标识码:A文章编号:1009-3044(2008)17-20ppp-0c    Internet Technology in Met
摘要:IPv6技术是下一代互联网的技术核心,对IPv6网络入侵检测系统的研究与下一代网络的安全技术紧密相关。在分析网络安全系统的基本原理和IPv6网络的主要特点之后,提出了一种基于IPv6网络入侵检测系统的框架,同时采用了改进的KMP算法和蜜罐技术。  关键词:IPv6;网络入侵检测;模式匹配;蜜罐技术  中图分类号:TP393文献标识码:A文章编号:1009-3044(2008)18-2pppp
摘要:本文描述了一种在TCP/IP网络中进行故障节点诊断的程序实现,该方法基于VxWorks操作系统的网络测试仪环境,但此程序算法的实现,并不依赖于底层的操作系统及硬件环境,经过少量修改可以在任何提供TCP/IP协议栈的操作系统中实现,比如Linux,Windows等。  关键词:ICMP;TCP;UDP;路由追踪  中图分类号:TP393文献标识码:A文章编号:1009-3044(2008)18