Skip Navigation Links
技术文档
·网站建设
·软件使用
·图形设计
·程序开发
·网络应用
·电脑技巧
 
公司介绍
·公司简介
·索仕SRCOS网络应用平台
·索仕网站管理系统
·影视广告制作
·联系我们
 
 

ASP.NET中的单点登录

12/19/2009 12:06:04 AM

 

对于大多数的web应用程序,很多人喜欢采用表单验证的方法。当许多应用程序运行在一个主域下面的多个子域时,使用单点登录将是很不错的一个选择,当用户在http://www.exapmle.com/登录之后,可以访问everything.example.com的资源。 

    表单验证默认不支持这种特性,但是,通过合适的方法调整它并不复杂。 

    ASP.NET表单验证的技术内幕并不复杂:它创建了一个特殊的Cookie,这个cookie的名字由web.config中的forms元素的name定义,它包含加密的验证数据,该cookie默认的名字是.ASPXAUTH。 

    出于保护用户隐私和安全的原因,cookie默认和主机名关联。但是cookie的机制支持一台主机的cookie在该主机所在的域内被接受,意味着主机server1.example.com的cookie可以在整个example.com中使用。 

    可以设置二级域和三级域的cookie,但是不允许设置顶级域的cookie,例如设置.com的cookie就是不允许的。 

    下面开始进行设置,看需要进行什么工作。



开始设置



    和其它的应用程序一样,必须先在system.web中设定authentication,例如:

<authentication mode="Forms"> 

<forms name="DomainLoginAuth" loginUrl=" http://WebLogin/Default.aspx" protection="All"/>

</authentication> 

    正如前边提到的,验证的cookie是加密的,而加密的种子是随机产生的。当需要多个服务器协同工作时,那么将需要相同的加密种子。在system.web中加入如下的一段:

<MACHINEKEY

  validationKey="BD52058A3DEA473EA99F29418689528A494DF2B00054BB7C" 

  decryptionKey="684FC9301F404DE1B9565E7D952005579E823307BED44885" 

/>

    如果采用DES加密的话,使用16个16进制符号,如果使用SHA1加密的话,使用48个16进制符号,ASP.NET默认采用的SHA1加密。



开始登录验证



    必须在将验证cookie发送给客户之前,为cookie附加域信息,代码如下(假定用户名和密码已经经过验证并且使用的用户名存储在userName变量中):

HttpCookie authCookie = FormsAuthentication.GetAuthCookie(userName, false);

authCookie.Domain = "example.com";

Response.Cookies.Add(authCookie);

Response.Redirect(FormsAuthentication.GetRedirectUrl(userName, false);



注销


    通常,用户注销时不需要进行什么设定,只要调用FormsAuthentication.SignOut()即可,但是这个函数不能处理域的cookie。

    因此,应该手工删除这个cookie,手工删除这个cookie的唯一方法是将cookie的过期时间设定为过去的时间,参考如下的代码:

HttpCookie authCookie = Request.Cookies[FormsAuthentication.FormsCookieName];

authCookie.Domain = "example.com";

authCookie.Expires = DateTime.Now.AddDays(-1);

Response.Cookies.Add(authCookie);

 

    好了,现在你的应用程序可以进行单点登录了。

作者:泡泡饭 来源:博客园
 
 
 
昆明索仕科技开发有限公司 版权所有 Copyright© 2002-2010 Kunming Source Technology Exploitive Co.,LTD. All Rights Reserved.
电话:0871-5627877 业务QQ:163871 联系我们
本站基于:索仕网站信息管理系统建设 版本 2.0.4325