问题描述
两个应用,比如WWW.FIRST.COM在WAS下,WWW.SECOND.COM.CN在tomcat下.要求用户在first下登录成功后,可以直接进入远程second,而现在是这样实现: 在first中登录成功后,当点击远程second应用入口时,我获取了登录用户的用户名,然后将该用户名放入以get(post)方式尾部,并提交到second应用中登录action,这样就进入到second应用了。(比如:http://www.second.com.cn/login?username=**&password=*****) 像上面那样,我觉得还是登录了两次,跟sso脱离了。sso不是只登陆一次,获取认证就行了吗。 请问这样的实现是不是不符合sso的做法? 问题补充:<div class="quote_title">schnell18 写道</div><div class="quote_div">SSO是对用户而言的,只要他不需要在第二个系统中重新输入密码就可以。不过看你的具体实现貌似安全性比较差。用户名和密码太显眼了。</div><br /><br /> 安全确实很差,虽然我在fisrt应用中使用ifame包含远程second应用,且在指向second时都会有加密处理,在浏览器中不会显示出请求地址(只允许内部网访问),不过登录进去后,邮件查看属性依然可以看到那一串串字符,还是不和谐。<br /> <br /> 而事实上我最想做的就是,只要第一次登录成功后,能拿到一个认证后,跳过第二个应用的登录来达到效果。我想问问,我那样做是由两次登录吧?
解决方案
没错,实际是两次登陆了。要做到一次登陆需要两个应用都支持SSO,就是两个应用都能理解用户登陆后产生的session token,该token可以存到cookie中,每次web请求都发送,如果不存在就要请用户登陆。真正要做到这样的单点登录不是很容易的,特别是需要支持遗留系统的情况更不好解决。看看acegi是否能够满足你的要求,http://www.acegisecurity.org/
解决方案二:
SSO是对用户而言的,只要他不需要在第二个系统中重新输入密码就可以。不过看你的具体实现貌似安全性比较差。用户名和密码太显眼了。