Asp.net 2.0中单点登录(SSO)的实现

Masoud的《Understanding Single Sign-On in ASP.NET 2.0http://aspalliance.com/1545_Understanding_Single_SignOn_in_ASPNET_20.all
讨论了在Asp.net 2.0的程序场中,实现SSO的一种简便方式,如果你的企业的所有需要实现SSO的系统都是基于asp.net2.0实现的,那么你可以用这种方式,文中还有Demo下载[Download Sample]
在Asp.net 2.0的Web.config文件中的<system.web>节中有一个<machineKey>节点,需要实现SSO的程序保持<machineKey>的同容相同即可
<machineKey       
validationKey="282487E295028E59B8F411ACB689CCD6F39DDD21E6055A3EE480424315994760ADF
21B580D8587DB675FA02F79167413044E25309CCCDB647174D5B3D0DD9141"

decryptionKey="8B6697227CBCA902B1A0925D40FAA00B353F2DF4359D2099"      
validation="SHA1"/>

同时设置成为form认证,把登录指向同个页面
<authentication mode="Forms">
<forms loginUrl="http://localhost/Aspalliance1/login.aspx" name=".ASPXAUTH"/>
</authentication>

。由于<machineKey>中包含了敏感信息,所以作者建议实际应用当中应该把<machineKey>进行加密存储,用的时候再解密,作者在演示程序中还提供了加密解决的函数。

刚看到宝玉的对《Understanding Single Sign-On in ASP.NET 2.0》一文的补充 文中谈到了保持<machineKey>相同实现SSO的原理是基于同一域下的虚拟目录的cookie是可以共享的,然后MachineKey的一致,确保了cookie的解密和解密的结果是一致的。这仅是解决了同一域下的虚拟目录不同的SSO的问题,如果对于同一主域不同子域之间的cookie共享,需要设置如下
<authentication mode="Forms"> <forms loginUrl="login.aspx" name=".ASPXAUTH" domain="joycode.com"/> </authentication>
而对于不同主域之间,这种方法是行不通的。
牛人真多呀,呵呵!




shore 2008-01-28 16:39 发表评论
posted on 2008-01-28 16:39  蝈蝈  阅读(827)  评论(0编辑  收藏  举报