快速业务通道

SSO单点登录解决方案 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-24
failed.html").forward(request, response); else { String gotoURL = request.getParameter("goto"); String newID = createUID(); SSOIDs.put(newID, username); Cookie wangyu = new Cookie(cookiename, newID); wangyu.setDomain(domainname); wangyu.setMaxAge (60000); wangyu.setValue(newID); wangyu.setPath("/"); response.addCookie(wangyu); System.out.println("login success, goto back url:" + gotoURL); if (gotoURL != null) { PrintWriter ut = response.getWriter(); response.sendRedirect(gotoURL); out.close(); } } }

handlerFromLogin()这个方法是用来处理来自login.jsp的登录请求。它的逻辑 很简单:将用户输入的用户名和密码与预先设定好的用 户集合(存放在accounts中)相比较,如果用户 名或密码不匹配的话,则返回登录失败的页面(failed.html),如果登录成功的话,需要为用 户当前 的session创建一个新的ID,并将这个ID和用户名的映射关系存放到SSOIDs中,最后还要将这个ID设置为 浏览器能够保存的cookie 值。

登录成功后,浏览器会到哪个页面呢?那我们回顾一下我们是如 何使用身份认证服务的。一般来说我们不会直接访问身份服务的任何URL,包括 login.jsp。身份服务是 用来保护其他应用服务的,用户一般在访问一个受SSOAuth保护的Web应用的某个URL时,当前这个应用会 发现当前的 用户还没有登录,便强制将也页面转向SSOAuth的login.jsp,让用户登录。如果登录成功后 ,应该自动的将用户的浏览器指向用户最初想访问的那 个URL。在handlerFromLogin()这个方法中,我 们通过接收“goto”这个参数来保存用户最初访问的URL,成功后便重新定向到这个页 面中 。

另外一个要说明的是,在设置cookie的时候,我使用了一个setMaxAge(6000)的方法。这个方 法是用来设置cookie的有效期,单位是 秒。如果不使用这个方法或者参数为负数的话,当浏览器关闭的 时候,这个cookie就失效了。在这里我给了很大的值(1000分钟),导致的行为是:当你 关闭浏览器( 或者关机),下次再打开浏览器访问刚才的应用,只要在1000分钟之内,就不需要再登录了。我这样做 是下面要介绍的桌面SSO中所需要的功 能。

其他的方法更加简单,这里就不多解释了。

3.2.2具有SSO功能的web应用源代码解析

要实现WEB-SSO的功能,只有身份认证服务是不够的。这点很显然,要想使多个应用具有单点登录的 功能,还需要每个应用本身的配合:将自己的身份认证的 服务交给一个统一的身份认证服务-SSOAuth 。SSOAuth服务中提供的各个方法就是供每个加入SSO的Web应用来调用的。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号