当一个子系统要登录SSO系统时,它要把用户导航到SSO系统去登录,而它自己并不能处理用户登录(它自己不能拿到用户密码)。如果它自己给用户一个登录窗,我们可以说它是“打着单点登录名义的钓鱼网站”。许多人所谓的“让用户只需登录一次,就能在访问这些模块时都是已登录的状态”的想法,都是无厘头的幻想,缺乏对单点登录的基本规则的了解。
解决方案 »
- 高手进来看啊。急。马上结贴~!
- 200分:js写的控件怎么在大部分机器上的ie能显示,而有些机器的ie却不能显示
- asp版没人回答的问题 -- 自定义图片尺寸 和 动态改变文字大小 !
- 一个Remoting的例子
- *****************如何不通过写html代码来打开一个新的页面?**************
- 弹出对话框的同时保持页面的显示
- 怎么附值,谢谢(c#)
- 焦点在Datagird跳转....在线等待
- 在datagrid里怎样实现按时间排序?
- 类似这样的编号是怎样生成的?(sid=N2I5aTZtN3o5aDNvNXU1MDAw)
- MVC3里面lambada表达式的意思求解
- vs2013发布程序为什么不生成dll文件
我理解的是父系统为A,它有B,C,D三个挂靠系统(你的说法),当BCD被访问时,都要跳转到A去验证,在A验证完毕后,返回一个指令来指示BCD是否能登录系统
打开浏览器访问ABC之一时,都需要输用户密码登录,
而如果已访问A或C,再访问B时就不用用户再次输用户密码登录
根据不同的系统有不同的设计。令牌就是一个编码而已,例如 sfdqeorqlldfasldfals 这样的编码。举个简单的例子,比如说子站将用户界面导航到SSO系统
"http://www.abc.com/login?site=7762838&from="+ UrlEncode("http://www.def.com/site1/mmxx.aspx?id=123");
这时候SSO会判断用户是否在这个login页面已经登录。如果没有登录,就会显示7762838的内容并询问用户是否登录。如果登录了,SSO会把用户界面重新导航回
http://www.def.com/site1/mmxx.aspx?id=123&sso=sfdqeorqlldfasldfals
这就是简单的传递。
你可以想一下,当导航用户界面到 login 这一个页面时,它“什么登录信息都知道”,它自己作逻辑判断是否给根据A或者C的授权而直接给B授权。只要它重新把用户界面导航回 B 网站的页面时,它所附加的新的 sso 授权编码(这个编码通常在几十秒钟后就作废)能够让 B 网站作为凭据就行了。