理解ASP.NET 2.0中的单点登录
摘要
在这篇文章中,Masoud讨论了应用ASP.NET中统一身份验证模型进行跨应用程序验证的问题,包括:Membership Providers, web.config配置,配置文件的加密解密等。在文章的最后,作者提供了通过ASP.NET login controls来验证的程序。
by Masoud Tabatabaei:
目录
简介
什么是SSO?它是怎样工作的?
系统条件
工作
下载
结论
简介
通常在你要实现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数
相关文档:
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// <summary>
/// javascript弹出窗口封装类
/// </summary>
public static class JSCommon
......
什么是LINQ?
LINQ是语言集成查询(Language Integrated Query)的简称,是Visual Studio 2008 和.NET Framework 3.5 版中一项,突破性的创新,它在对象领域和数据领域之间架起了一座桥梁.
一个简单LINQ查询:
&n ......
Cookie为客户端信息存放对象,可以把用户的信息保存在用户本地,不必总是访问服务器
与Session不同,Session为用户全局变量,对于该用户的所有操作过程都有效。
//1。创建Cookie对象
HttpCookie newCookie = new HttpCookie("User");
//2。Cookie中添加信息项:为键值对,key/value
newCookie.Values.Add("Name" ......
一、ASP.NET页面
一个ASP.NET页面(或者称为ASP.NET窗体)由以下几个部分组成:
1、指令
(包括@Page、@Import、@OutputCache、@Implements、@Register、@Master、@Control…)
2、Head(HTML文档头)
3、Body(HTML文档体)
窗体元素(form)
控件(html标记、服务器控件标记)
4、代码(客户端代码,服务端 ......
★1. 使用QueryString变量
QueryString是一种非常简单的传值方式,他可以将传送的值显示在浏览器的地址栏中。如果是传递一个或多个安全性要求不高或是结构简单的数值时,可以使用这个方法。但是对于传递数组或对象的话,就不能用这个方法了。下面是一个例子:
a.aspx的C#代码
private vo ......