起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9621|回复: 28

[结贴] BeX5.3.7版本集成CAS单点登录问题

[复制链接]

6

主题

25

帖子

37

积分

新手上路

Rank: 1

积分
37
QQ
发表于 2017-9-20 15:26:01 | 显示全部楼层 |阅读模式
本帖最后由 winnyboy 于 2017-9-20 16:09 编辑

1. Cas Server使用4.2.7,Cas Client使用3.3.32.集成后X5能正常获得登录的用户名, 但仍然会跳到X5自己的登录页面,不会进入首页
如下图:
登录后的URL

认证通过后的URL

认证通过后的URL



登录后获取到的用户名

获取到的登录名

获取到的登录名



但有错误,请看日志
bex5.rar (1.47 KB, 下载次数: 94)

123

主题

245

帖子

888

积分

高级会员

Rank: 4

积分
888
发表于 2017-9-22 11:51:37 | 显示全部楼层

你好,你说的单点登录的注销的做法是不对的!注销应该是直接调用CAS的注销,由CAS来负责与该CAS有关的所有的应用的注销!
必须在应用的web.xml 中添加配置

<!--单点退出配置开始-->
<!--
用于单点退出,该过滤器用于实现单点登出功能,可选配置-->

<listener>

<listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class>

</listener>
<!-- 该过滤器用于实现单点登出功能,可选配置。 -->  
    <filter>  
        <filter-name>CASlogoutFilter</filter-name>  
        <filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class>  
    </filter>  
    <filter-mapping>  
        <filter-name>CASlogoutFilter</filter-name>  
        <url-pattern>/*</url-pattern>  
    </filter-mapping>  
回复 支持 1 反对 0

使用道具 举报

6

主题

25

帖子

37

积分

新手上路

Rank: 1

积分
37
QQ
 楼主| 发表于 2017-9-20 15:32:10 | 显示全部楼层
根据错误应该是login.j里报错, 代码段如下:
  1. private JSONObject getLayout(String useName, String bsessionID) throws JSONException{

  2.                 Action layoutAction = new Action();
  3.                 layoutAction.setProcess("/portal2/process/portal/portalProcess");
  4.                 layoutAction.setActivity("index");
  5.                 layoutAction.setName("selectPortal3ProfilesAction");
  6.                 layoutAction.setParameter("personID", useName);
  7.                 ActionResult result = ActionEngine.invokeAction(layoutAction, ActionUtils.JSON_CONTENT_TYPE, bsessionID, null, null);
  8.                
  9.                 JSONObject temp = (JSONObject)result.getContent();
  10.                 temp = (JSONObject)temp.get("data");
  11.                 temp = (JSONObject)temp.get("value");
  12.                
  13.                 String[] relations = new String[]{"sFunctree", "sPortal", "sOther"};
  14.                 for(String rel : relations){
  15.                         Object s = temp.get(rel);
  16.                         if( (s instanceof String && ((String)s).equals(""))) //s == JSONObject.NULL ||
  17.                                 s = "{}";
  18.                         temp.remove(rel);
  19.                         temp.put(rel.substring(1).toLowerCase(), JSON.parse((String)s));
  20.                 }
  21.                
  22.                 return temp;
  23.         }
复制代码

在model里未找到有portal2模块, 另外就是下面的JSONObject的转换出错。

初步怀疑之前提供的与CAS集成的NTLoginFilter的代码已经不应用于现在的版本了。
还请尽快给予回答
回复 支持 反对

使用道具 举报

6

主题

25

帖子

37

积分

新手上路

Rank: 1

积分
37
QQ
 楼主| 发表于 2017-9-20 16:12:13 | 显示全部楼层
错误日志如下:
  1. <action process="/portal2/process/portal/portalProcess" activity="index" name="selectPortal3ProfilesAction" execute-context="" content-type="application/xml"><parameters><parameter name="personID"><xbiz:simple xmlns:xbiz="http://www.justep.com/xbiz#" type="http://www.w3.org/2001/XMLSchema#String">PSN01</xbiz:simple></parameter></parameters></action>
  2. com.justep.exception.BusinessException: 编码: JUSTEP151058; 提示: 模块"/portal2"不存在
  3.         at com.justep.exception.BusinessException.create(Unknown Source)
  4.         at com.justep.util.Utils.check(Unknown Source)
  5.         at com.justep.model.impl.ModelLoader.loadExtAttribute(Unknown Source)
  6.         at com.justep.model.impl.ModelLoader.loadModel(Unknown Source)
  7.         at com.justep.model.impl.ModelLoader.loadModel(Unknown Source)
  8.         at com.justep.model.impl.ModelLoader.loadModel(Unknown Source)
  9.         at com.justep.model.impl.ModelLoader.loadModel(Unknown Source)
  10.         at com.justep.model.impl.ModelLoader.loadModel(Unknown Source)
  11.         at com.justep.model.impl.ModelImpl.getModel(Unknown Source)
  12.         at com.justep.model.impl.UtilImplementInstance.getModel(Unknown Source)
  13.         at com.justep.model.ModelUtils.getModel(Unknown Source)
  14.         at com.justep.model.ModelUtils.getModelObjectByFullName(Unknown Source)
  15.         at com.justep.system.action.Engine.invokeActions(Native Method)
  16.         at com.justep.system.action.Engine.invokeActions(Unknown Source)
  17.         at com.justep.business.server.BusinessServer.doAction(Unknown Source)
  18.         at com.justep.business.server.BusinessServer.doExcute(Unknown Source)
  19.         at com.justep.business.server.BusinessServer.excute(Unknown Source)
  20.         at com.justep.business.server.BusinessServer.excute(Unknown Source)
  21.         at com.justep.business.server.BusinessServerServlet.execService(Unknown Source)
  22.         at com.justep.business.server.BusinessServerServlet.service(Unknown Source)
  23.         at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
  24.         at com.justep.x.bs.BusinessServerServlet.service(Unknown Source)
  25.         at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
  26.         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
  27.         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  28.         at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
  29.         at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
  30.         at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
  31.         at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
  32.         at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
  33.         at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
  34.         at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)
  35.         at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606)
  36.         at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
  37.         at java.lang.Thread.run(Thread.java:745)
  38. 2017-09-20 16:09:58
  39. java.lang.ClassCastException: java.lang.String cannot be cast to com.alibaba.fastjson.JSONObject
  40.         at Login.getLayout(Login.java:172)
  41.         at Login.execute(Login.java:122)
  42.         at com.justep.ui.JavaServer.runJava(Unknown Source)
  43.         at com.justep.ui.JavaServer.doJ(Unknown Source)
  44.         at com.justep.ui.JavaServer.service(Native Method)
  45.         at com.justep.ui.servlet.MainServlet.service(Unknown Source)
  46.         at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
  47.         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
  48.         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  49.         at com.justep.filter.NTLoginFilter.doFilter(NTLoginFilter.java:80)
  50.         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
  51.         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  52.         at org.jasig.cas.client.util.AssertionThreadLocalFilter.doFilter(AssertionThreadLocalFilter.java:50)
  53.         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
  54.         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  55.         at org.jasig.cas.client.util.HttpServletRequestWrapperFilter.doFilter(HttpServletRequestWrapperFilter.java:70)
  56.         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
  57.         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  58.         at org.jasig.cas.client.validation.AbstractTicketValidationFilter.doFilter(AbstractTicketValidationFilter.java:238)
  59.         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
  60.         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  61.         at org.jasig.cas.client.authentication.AuthenticationFilter.doFilter(AuthenticationFilter.java:152)
  62.         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
  63.         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  64.         at org.jasig.cas.client.session.SingleSignOutFilter.doFilter(SingleSignOutFilter.java:100)
  65.         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
  66.         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  67.         at com.justep.portal.filter.RedirectFilter.doFilter(Unknown Source)
  68.         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
  69.         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  70.         at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
  71.         at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
  72.         at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
  73.         at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
  74.         at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
  75.         at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
  76.         at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)
  77.         at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606)
  78.         at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
  79.         at java.lang.Thread.run(Thread.java:745)
复制代码
回复 支持 反对

使用道具 举报

6

主题

25

帖子

37

积分

新手上路

Rank: 1

积分
37
QQ
 楼主| 发表于 2017-9-20 16:12:33 | 显示全部楼层
错误日志如下:
  1. 2017-09-20 16:09:58 编码: JUSTEP002026; 提示: .J(/UI2/portal/base/login/login.j)执行失败
  2. javax.servlet.ServletException: com.justep.ui.exception.UIException: 编码: JUSTEP002026; 提示: .J(/UI2/portal/base/login/login.j)执行失败
  3.         at com.justep.ui.servlet.MainServlet.service(Unknown Source)
  4.         at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
  5.         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
  6.         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  7.         at com.justep.filter.NTLoginFilter.doFilter(NTLoginFilter.java:80)
  8.         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
  9.         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  10.         at org.jasig.cas.client.util.AssertionThreadLocalFilter.doFilter(AssertionThreadLocalFilter.java:50)
  11.         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
  12.         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  13.         at org.jasig.cas.client.util.HttpServletRequestWrapperFilter.doFilter(HttpServletRequestWrapperFilter.java:70)
  14.         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
  15.         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  16.         at org.jasig.cas.client.validation.AbstractTicketValidationFilter.doFilter(AbstractTicketValidationFilter.java:238)
  17.         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
  18.         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  19.         at org.jasig.cas.client.authentication.AuthenticationFilter.doFilter(AuthenticationFilter.java:152)
  20.         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
  21.         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  22.         at org.jasig.cas.client.session.SingleSignOutFilter.doFilter(SingleSignOutFilter.java:100)
  23.         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
  24.         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  25.         at com.justep.portal.filter.RedirectFilter.doFilter(Unknown Source)
  26.         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
  27.         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  28.         at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
  29.         at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
  30.         at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
  31.         at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
  32.         at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
  33.         at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
  34.         at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)
  35.         at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606)
  36.         at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
  37.         at java.lang.Thread.run(Thread.java:745)
  38. Caused by: com.justep.ui.exception.UIException: 编码: JUSTEP002026; 提示: .J(/UI2/portal/base/login/login.j)执行失败
  39.         at com.justep.ui.exception.UIException.create(Unknown Source)
  40.         at com.justep.ui.JavaServer.doJ(Unknown Source)
  41.         at com.justep.ui.JavaServer.service(Native Method)
  42.         ... 35 more
  43. Caused by: java.lang.ClassCastException: java.lang.String cannot be cast to com.alibaba.fastjson.JSONObject
  44.         at Login.getLayout(Login.java:172)
  45.         at Login.execute(Login.java:122)
  46.         at com.justep.ui.JavaServer.runJava(Unknown Source)
  47.         ... 37 more
复制代码
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36180
发表于 2017-9-20 16:27:14 | 显示全部楼层
1.把web.xml中的配置UI相关的去掉,只有UI2相关的
2.目前直接打开首页只有拼username和password的方案没有直接拼bsessionid的方式
3.把NTLoginFilter的代码中登录的可以去掉直接获取到用户名和密码拼到url上,类似与http://bbs.wex5.com/forum.php?mo ... 97597&pid=165269934
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36180
发表于 2017-9-20 17:24:35 | 显示全部楼层
filter文件还用默认的

把/UI2/portal/base/base.js中的
this.setBsessionid(justep.Util.getCookie("bsessionid"));改为
this.setBsessionid(justep.Util.getCookie("bsessionid") || this.getContext().getRequestParameter("bsessionid"));看看
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

6

主题

25

帖子

37

积分

新手上路

Rank: 1

积分
37
QQ
 楼主| 发表于 2017-9-20 18:07:43 | 显示全部楼层
jishuang 发表于 2017-9-20 16:27
1.把web.xml中的配置UI相关的去掉,只有UI2相关的
2.目前直接打开首页只有拼username和password的方案没有 ...

拼password行不通, cas里用的ldap的密码, 与X5平台的密码是不一样的。
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36180
发表于 2017-9-20 18:14:04 | 显示全部楼层
6楼的方案是用bsessionid的,不是用username和password的

filter文件中默认拼接bsessionid的方式不要修改
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

6

主题

25

帖子

37

积分

新手上路

Rank: 1

积分
37
QQ
 楼主| 发表于 2017-9-20 18:20:32 | 显示全部楼层
jishuang 发表于 2017-9-20 18:14
6楼的方案是用bsessionid的,不是用username和password的

filter文件中默认拼接bsessionid的方式不要修改 ...

改了后还是不行!!
回复 支持 反对

使用道具 举报

6

主题

25

帖子

37

积分

新手上路

Rank: 1

积分
37
QQ
 楼主| 发表于 2017-9-20 18:31:34 | 显示全部楼层
filter的配置
  1. <filter>
  2.         <filter-name>NTLoginFilter</filter-name>
  3.         <filter-class>com.justep.filter.NTLoginFilter</filter-class>
  4.          <!-- 以下参数表示url映射, 即如果访问的url是param-name, 将会重定向到param-value指向的页面 -->
  5.         <init-param>
  6.              <param-name>/UI2/portal/pc3/login/login.w</param-name>
  7.              <param-value>/UI2/portal/pc3/login/login.w</param-value>
  8.         </init-param>
  9.         <init-param>
  10.              <param-name>/UI2/portal/pc3/index.w</param-name>
  11.              <param-value>/UI2/portal/pc3/index.w</param-value>
  12.         </init-param>
  13.         <init-param>
  14.              <param-name>/UI2/portal/pc2/index.w</param-name>
  15.              <param-value>/UI2/portal/pc2/index.w</param-value>
  16.         </init-param>
  17.         <init-param>
  18.              <param-name>/UI2/portal/pc/index.w</param-name>
  19.              <param-value>/UI2/portal/pc/index.w</param-value>
  20.         </init-param>
  21.         <init-param>
  22.              <param-name>/UI2/portal/mobile/index.w</param-name>
  23.              <param-value>/UI2/portal/mobile/index.w</param-value>
  24.         </init-param>
  25.    </filter>
  26.    <filter-mapping>
  27.         <filter-name>NTLoginFilter</filter-name>
  28.         <url-pattern>/*</url-pattern>
  29.    </filter-mapping>  
复制代码
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2025-6-29 14:36 , Processed in 0.062029 second(s), 27 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表