Security Basics and ASP.NET Support(翻译)
2008-03-01 21:18 Jun1st 阅读(375) 评论(0) 编辑 收藏 举报论坛、电子商务网站、eMail网站、Portal和各种社区网站专注的方面和提供的服务不同。但是,他们都需要提供一个用户管理的功能。新访问者能够创建新的用户,并能用这个用户登陆。而Web服务器需要能够根据登陆的用户的信息,来判断当前用户所能访问的资源和不能的信息。本文是Asp.Net Web Form验证、授权、和用户管理这一系列文章中的第一篇。这一系列文章将会介绍如下的信息:
- 用户的识别和登陆
- 使用Asp.Net's Membership Framework来管理用户
- 创建、修改和删除用户
- 根据登陆用户的信息,来决定用户能访问的页面和是否提供某些功能
- 使用Asp.Net's Roles Framework来关联用户和系统定义的角色
- 管理角色
- 根据登陆用户的角色,来决定用户能访问的页面和是否提供某些功能
-
定制和扩展ASP.NET's security Web controls
本文将会介绍一些重要的网站Security方面的概念,已经Asp.Net在authentication, authorization等方面的功能。
Authentication, Authorization, User Accounts, and Roles
本文中将会经常提到Authentication, authorization, user accounts, and roles这四个问题。因此做一下简单的介绍:
- Authentication: 确认访问者的身份。如果访问者的身份被认证过了,那这个访问者就是authenticated, 否者就是unauthenticated或者anonymous. 大多数网站需要用户提供一些信息,如用户名和密码,来确认用户的身份。这些信息就是用户的credential. 本文主要也将介绍Asp.Net的Forms Authentication.
- Authorization: 在确认用户的身份之后,需要对用户进行授权来决定用户所能访问的资源和提供给用户的服务
- User Account: 是用来存储用户信息的。User Account需要存储能够唯一确认用户身份的信息,以及一些相关的信息。
- Role: Role提供一些定义好的授权规则。当把某一个Role赋给某一个用户时,用户就有了相应的授权。
Authenticating Users in an ASP.NET Application
在默认情况下,当一个新的请求到服务器时,这个请求不包括任何的身份认证信息。但是,如果当这个请求包括认证信息时,服务器就会开始对用户进行认证的流程。ASP.NET提供三种认证方式:Windows、Passport和Forms。
Authentication via Windows Authentication
Windows认证有三种方法:
1. Basic authentication
2. Digest authentication
3. Windows Integrated Authentication
这三种方法都通过同样的流程进行认证。当一个匿名的请求到达时,服务器返回一个http 响应(response)以告知用户需要进行授权。客户端浏览器会弹出一个模态窗口,提示用户输入用户名和密码
提供的这些Credential信息会被发送到服务器的Windows User Store去验证。因此要通过验证,每一个用户必须在Organization内有一个Windows帐户。鉴于此,在局域网内使用Windows Authentication是一个可行的选择。
Authentication via Forms Authentication
Windows authentication在局域网内是个不错的选择,而Forms authentication对于面向internet的Web程序就是一个理想的选择。Forms authentication通过一个web form页面,即Login页面,让用户输入用户名和密码,来提供credential信息。因此,但用户试图访问未被授权的资源时,会被自动重定向到Login页面。
当用户提交的credential信息通过验证之后,服务器会为这个用户创建一个Form Authentication Ticket, 并且以cookie的形式存在与客户端。这个ticket可以证明当前用户已经通过验证,因此,从此客户端发起的后续的http 请求就被标识为Authenticated.
下图描述了Form Authentication的流程,
User Accounts and Roles
在Asp.Net 2.0之前,开发人员需要自己负责User和Role的信息,并且要处理User和Role之间的关系。由于Asp.Net 2.0提供了Membership Framework和Login控件,因此实现用户管理变得更加简单。关于Membership framework,这里不再赘述。
Summary
几乎所有的Web Application需要提供用户管理这一功能,例如:对新用户提供注册的功能。允许用户进行登陆,并根据登陆的信息来决定用户能够查看的信息和访问的资源。
在本系列的下一篇文章中,将具体来讨论一下ASP.NET的Form Authentication.
Happy Programming