欢迎来到天天文库
浏览记录
ID:36338373
大小:35.05 KB
页数:9页
时间:2019-05-09
《SSO解决方案大全SingleSignOnforeveryone》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、SSO解决方案大全SingleSign-OnSSO解决方案大全SingleSign-Onforeveryone前段时间为我们的系统做SSO(单点登录)参考了很多资料,其中包括博客园二级域名的登录.翻译本文是由于作者的一句话:思想都是一样的,只不过实现起来需要创造性思维. SingleSign-On(SSO)是近来的热门话题.很多和我交往的客户中都有不止一个运行在.Net框架中的Web应用程序或者若干子域名.而他们甚至希望在不同的域名中也可以只登陆一次就可以畅游所有站点.今天我们关注的是如何在各种不同的应用场景中实现SSO.我们由简到繁,逐一攻破.1.虚拟目录的主应用和子应
2、用间实现SSO2.使用不同验证机制实现SSO(usernamemapping)3.同一域名中,子域名下的应用程序间实现SSO4.运行在不同版本.NET下的应用程序间实现SSO5.两个不同域名下的Web应用程序间实现SSO6.混合身份验证方式模式(FormsandWindows)下实现SSO 1.虚拟目录的主应用和子应用之间实现SSO假设有两个.Net的Web应用程序-Foo和Bar,Bar运行在Foo虚拟目录的子目录(http://foo.com/bar).二者都实现了Forms认证.实现Forms认证需要我们重写Application_AuthenticateReque
3、st,在这个时机我们完成认证一旦通过验证就调用一下FormsAuthentication.RedirectFromLoginPage.这个方法接收的参数是用户名或者其它的一些身份信息.在Asp.net中登录用户的状态是持久化存储在客户端的cookie中.当你调用RedirectFromLoginPage时就会创建一个包含加密令牌FormsAuthenticationTicket的cookie,cookie名就是登录用户的用户名.下面的配置节在Web.config定义了这种cookie如何创建: 4、e=".FooAuth"protection="All"timeout="60"loginUrl="login.aspx"/> 9/9SSO解决方案大全SingleSign-On 比较重要的两个属性是name和protection. 按照下面的配置就可以让Foo和Bar两个程序在同样的保护级别下读写Coo5、kie,这就实现了SSO的效果: 当protection属性设置为"All",通过Hash值进行加密和验证数据都存放在Cookie中.默认的验证和加密使用的Key都存储在machine.config文件,我们可以在应用程序的Web.Config文件覆盖这些值.默认值如下:6、rate,IsolateApps"decryptionKey="AutoGenerate,IsolateApps"validation="SHA1"/>IsolateApps表示为每个应用程序生成不同的Key.我们不能使用这个.为了能在多个应用程序中使用相同的Key来加密解密cookie,我们可以移除IsolateApps选项或者更好的方法是在所有需要实现SSO的应用程序的Web.Config中设置一个具体的Key值:7、ey="F9D1A2D3E1D3E2F7B3D9F90FF3965ABDAC304902F8D923AC"validation="SHA1"/>如果你使用同样的存储方式,实现SSO只是改动一下Web.config而已.2.使用不同认证机制实现SSO(usernamemapping)要是FOO站点使用database来做认证,Bar站点使用MembershipAPI或者其它方式做认证呢?这种情景中FOO站点创建的cookie对Bar站点毫无用处,因为cookie中的用户名对Bar没有什么意义.要想cookie起作用,你就需要再为
4、e=".FooAuth"protection="All"timeout="60"loginUrl="login.aspx"/> 9/9SSO解决方案大全SingleSign-On 比较重要的两个属性是name和protection. 按照下面的配置就可以让Foo和Bar两个程序在同样的保护级别下读写Coo
5、kie,这就实现了SSO的效果: 当protection属性设置为"All",通过Hash值进行加密和验证数据都存放在Cookie中.默认的验证和加密使用的Key都存储在machine.config文件,我们可以在应用程序的Web.Config文件覆盖这些值.默认值如下:6、rate,IsolateApps"decryptionKey="AutoGenerate,IsolateApps"validation="SHA1"/>IsolateApps表示为每个应用程序生成不同的Key.我们不能使用这个.为了能在多个应用程序中使用相同的Key来加密解密cookie,我们可以移除IsolateApps选项或者更好的方法是在所有需要实现SSO的应用程序的Web.Config中设置一个具体的Key值:7、ey="F9D1A2D3E1D3E2F7B3D9F90FF3965ABDAC304902F8D923AC"validation="SHA1"/>如果你使用同样的存储方式,实现SSO只是改动一下Web.config而已.2.使用不同认证机制实现SSO(usernamemapping)要是FOO站点使用database来做认证,Bar站点使用MembershipAPI或者其它方式做认证呢?这种情景中FOO站点创建的cookie对Bar站点毫无用处,因为cookie中的用户名对Bar没有什么意义.要想cookie起作用,你就需要再为
6、rate,IsolateApps"decryptionKey="AutoGenerate,IsolateApps"validation="SHA1"/>IsolateApps表示为每个应用程序生成不同的Key.我们不能使用这个.为了能在多个应用程序中使用相同的Key来加密解密cookie,我们可以移除IsolateApps选项或者更好的方法是在所有需要实现SSO的应用程序的Web.Config中设置一个具体的Key值:7、ey="F9D1A2D3E1D3E2F7B3D9F90FF3965ABDAC304902F8D923AC"validation="SHA1"/>如果你使用同样的存储方式,实现SSO只是改动一下Web.config而已.2.使用不同认证机制实现SSO(usernamemapping)要是FOO站点使用database来做认证,Bar站点使用MembershipAPI或者其它方式做认证呢?这种情景中FOO站点创建的cookie对Bar站点毫无用处,因为cookie中的用户名对Bar没有什么意义.要想cookie起作用,你就需要再为
7、ey="F9D1A2D3E1D3E2F7B3D9F90FF3965ABDAC304902F8D923AC"validation="SHA1"/>如果你使用同样的存储方式,实现SSO只是改动一下Web.config而已.2.使用不同认证机制实现SSO(usernamemapping)要是FOO站点使用database来做认证,Bar站点使用MembershipAPI或者其它方式做认证呢?这种情景中FOO站点创建的cookie对Bar站点毫无用处,因为cookie中的用户名对Bar没有什么意义.要想cookie起作用,你就需要再为
此文档下载收益归作者所有