网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 大学论文导航 设计下载 最新论文 下载排行 原创论文 论文源代码
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > ASP.net > 正文

ASP.Net 2.0 窗体身份验证机制详解

来源:http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/13
, "Passport"), rolesArray);

这样才能保证HttpContext对象和线程指向同一个验证用户的信息。

Forms Authentication Cookies

FormsAuthentication类在调用FormsAuthentication.SetAuthCookie或者FormsAuthentication.RedirectFromLoginPage的方法后会自动创建验证Cookie;

一个典型的验证cookie包含以下两个属性:

Name:Cookie的名称

Value:Cookie的值

在一个典型的forms authentication cookie中,cookie的值是加密的,并且创建一个FormAuthenticationTicket的签名。Cookie包含以下属性:

Expires:此属性标识cookie的过期时间,当用户需要把cookie保存在本地电脑上时,需要设置此属性。

Domain:这个属性表明cookie和哪个域相关联,默认的值为null

HasKeys:这个属性表明cookie是否有子键。

HttpOnly: 这个属性表示cookie是否能被客户端脚本读取,.net2.0中,这个设置始终为true;但在客户端浏览器中,只有IE6.0才能识别这个属性。

Path:这个属性表明cookie的虚拟目录。默认的值为”/”,表示站点根目录。

Secure:这个属性表明cookie是否需要加密。如果设置true,cookie将接受SSL加密

Version:这个属性表明cookie的版本号

创建Forms Authentication Cookies

当某个用户验证通过后,Forms Authentication Cookies会被Forms Authentication类在内部自动创建。创建的就是一个FormsAuthenticationTicket类。创建此类的代码如下:

FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1,

"userName",

DateTime.Now,

DateTime.Now.AddMinutes(30), // value of time out property false, // Value of IsPersistent property

String.Empty,

FormsAuthentication.FormsCookiePath);

然后如果在web.config文件中,forms元素的protection属性被设置成ALL

或者Encryption,将对ticket对象进行加密并且创建签名。加密代码如下:

string encryptedTicket = FormsAuthentication.Encrypt(ticket);

下面将简要介绍一下当protection属性被设置为true时的流程:

创建一个序列化的forms authentication ticket:即创建此对象为一个字节数组(byte array)
创建forms authentication ticket的签名。machineKey中的validation和alidationKey的属性所设置了生成签名的算法。我们用此算法计算上面序列化的bytearray,生成MAC(message authentication code)。在默认的选择中,系统使用的是SHA1的算法。
加密forms authentication ticket,同时我们将创建另外一个序列化的对象,此对象经过加密算法加密。这个加密算法也可在machineKey中的decryption和decryptionKey的属性中获得。在asp.net 1.1中使用的是3DES加密,而在asp.net2.0中,使用的是AES加密算法。
创建HttpCookie对象或者生成cookie的query string,(在不支持cookie时,我们只能生成Query String).HttpCookie 对象创建方法代码如下:
       HttpCookie authCookie = new HttpCookie(

                            FormsAuthentication.FormsCookieName,

                            encryptedTicket);

        加密后的ticket就被添加到了HttpCookie对象中。

设置forms authentication cookie为安全的。如果forms authentication ticket被配置成为使用SSL,那么HttpCookie. Secure的属性也必须设置成true.在这种情况下,浏览器只能通过HTTPS协议传送Cookies.
设置

  • 上一篇资讯: 怎样查看.net类库源码
  • 网学推荐

    免费论文

    原创论文

    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号