jforum单点登录

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

JForum论坛单点登录的几种实现方式(cas和cookie)2010-12-2313:53/标签:jforumSSO单点登录论坛/分类:jforum邓华锋一、用CAS实现Jforum的单点登录(一)CAS客户端应用的web.xml配置CAS和jforum的安装过程本文就不介绍了,下面是jforum配置CAS服务器连接需要在web.xml中添加的配置:filterfilter-nameCASFilter/filter-namefilter-classedu.yale.its.tp.cas.client.filter.CASFilter/filter-classinit-paramparam-nameedu.yale.its.tp.cas.client.filter.loginUrl/param-nameparam-value://localhost:8443/cas/proxyValidate/param-value/init-paraminit-paramparam-nameedu.yale.its.tp.cas.client.filter.serverName/param-nameparam-valuelocalhost:8000/param-value/init-param/filterfilter-mappingfilter-nameCASFilter/filter-nameurl-pattern/*/url-pattern/filter-mapping一开始我调试jforum的单点登录的时候,首先在地址栏输入=(其中user.jsp是我自己添加JSP页面做测试用),在CAS页面输入用户名和口令确认后,页面自动跳转到=ticket=ST-5-Ih4fJNYyWlhFfywfeOwuVAFZn1vKOOVAgpD-20Ticket是生成的票据,然后用这个ticket做参数访问:==ST-5-Ih4fJNYyWlhFfywfeOwuVAFZn1vKOOVAgpD-20如果成功,返回的页面中出现登录成功的用户名,打开html源文件,内容为:cas:serviceResponsexmlns:cas=':authenticationSuccesscas:useradmin/cas:user/cas:authenticationSuccess/cas:serviceResponse如果失败,页面显示ticket'ST-2-4ffpnvHKv1NH5So7uWvFdVNrbHsaPAfROXx-20'notrecognized,html源文件内容:cas:serviceResponsexmlns:cas=':authenticationFailurecode='INVALID_TICKET'ticket'ST-2-4ffpnvHKv1NH5So7uWvFdVNrbHsaPAfROXx-20'notrecognized/cas:authenticationFailure/cas:serviceResponse(二)Jforum配置单点登录Jforum的WEB-INF\config目录下有一个SystemGlobals.properties文件,配置SSO需要更改此文件的几个配置参数:authentication.type=sso#CasUserSSO类用于CAS单点登录,下面将讲述此类的代码sso.implementation=com.iss.common.sso.CasUserSSO#CasCookieSSO是基于Cookie的一个简单的单点登录,代码见下文#sso.implementation=com.iss.common.sso.CasCookieSSO#下面的redirect我也不太清楚具体有什么用sso.redirect=(三)当把jforum的web.xml的CASfilter注释掉以后,使用下面的JSP通过CAS单点登录票据验证的一个示例,其中URL应带service参数,如:=登录CAS成功后,返回的页面url带有一个ticket参数,见下面的返回URL:=ST-5-VbM7tdMPeLD1WlH2ZGnocVGTbAY73ff4y17-20Tomcat控制台显示下面的输出说明票据认证通过:cas:serviceResponsexmlns:cas=':authenticationSuccesscas:useradmin/cas:user/cas:authenticationSuccess/cas:serviceResponse下面是testsso.jsp:%@pagecontentType=text/html;charset=GBK%%@pageimport=java.util.*%%@pageimport=net.jforum.context.RequestContext%%@pageimport=net.jforum.entities.UserSession%%@pageimport=net.jforum.util.preferences.ConfigKeys%%@pageimport=net.jforum.util.preferences.SystemGlobals%%@pageimport=org.apache.log4j.Logger%%@pageimport=net.jforum.sso.*%%@pageimport=java.io.*%%@pageimport=edu.yale.its.tp.cas.client.*%%Stringusername=null;StringerrorCode=null;StringerrorMessage=null;StringxmlResponse=null;Stringticket=request.getParameter(ticket);System.out.println(获取的ticket为:+ticket);ServiceTicketValidatorsv=newServiceTicketValidator();if(ticket!=null){try{sv.setCasValidateUrl();sv.setServiceTicket(ticket);sv.setService();sv.validate();xmlResponse=sv.getResponse();if(sv.isAuthenticationSuccesful()){username=sv.getUser();System.out.println(认证成功,获得的用户名为:);System.out.println(username);}else{errorCode=sv.getErrorCode();errorMessage=sv.getErrorMessage();System.out.println(认证失败!!!!!!!!!!!);}}catch(Exceptionexc){System.out.println(exc.getMessage());}}%edu.yale.its.tp.cas.client.ServiceTicketValidator是casclient.jar中的类。(四)当Jforum的web.xml中不配置CASFilter时,如何实现单点登录类?这种情况类似于(三),但问题是如何在Java类中实现单点登录,而不是在jsp中实现。我从网上找到一个名为CasUserSSO.java的程序,并按步骤(二)的说明将此类作为单点登录类配置,但编译运行后,在浏览器地址栏输入=(user.jsp是我自己写的一个显示简单输出的jsp文件,是我在CasUserSSO.java里面作为service参数的),CAS登录成功后Tomcat控制台没有显示单点登录的认证信息,好象CasUserSSO没有调用到,于是我修改了CasUserSSO.java,将sv.setService()改为sv.setService(java.net.URLEncoder.encode(=forums&action=list));重新编译运行后,地址栏中输入=http%3A%2F%2Flocalhost%3A8000%2Fjforum%2Fforums%2Fjforum.page%3Fmodule%3Dforums%26action%3Dlist注意service等号右面的必须是java.net.URLEncoder.encode转换后的字符串(=forums&action=list转换后的字符串为http%3A%2F%2Flocalhost%3A8000%2Fjforum%2Fforums%2Fjforum.page%3Fmodule%3Dforums%26action%3Dlist)注意地址栏中service后不要带空格,在地址栏输入=http%3A%2F%2Flocalhost%3A8000%2Fjforum%2Fforums%2Fjforum.page%3Fmodule%3Dforums%26action%3Dlist,CAS登录后(我的jforum配的超级管理员帐号是admin/123),出现jforum页面,这说明CAS单点登录成功!!!Tomca

1 / 19
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功