1. 版本编辑
报表服务器版本 |
---|
10.0 |
2. 概述编辑
2.1 问题描述
通过 配置 FineReport 作为 CAS 客户端 ,可以实现通过 CAS 认证来进行 FineReport 的登录,但是存在一个问题,如果直接退出 FineReport 决策系统,会进入到 FineReport 的登录界面,并不是 CAS 登录系统,说明没有完全退出 CAS 系统。如下图所示:
那么,如何实现 FineReport 的退出后,真正退出 CAS 系统并且重新进入到 CAS 登录页面呢?如下图所示:
2.2 解决思路
配置 FineReport 的退出页面及 CAS 系统退出页面,并进行关联,即可实现 FineReport 退出后退出 CAS 系统。
3. 操作过程编辑
3.1 配置 CAS 服务器端
修改 %TOMCAT_HOME%\webapps\cas\WEB-INF\cas-servlet.xml 里的logoutController节点,找到如下代码:
<bean id="logoutController" class="org.jasig.cas.web.LogoutController" p:centralAuthenticationService-ref="centralAuthenticationService" p:logoutView="casLogoutView" p:warnCookieGenerator-ref="warnCookieGenerator" p:ticketGrantingTicketCookieGenerator-ref="ticketGrantingTicketCookieGenerator" p:servicesManager-ref="servicesManager" p:followServiceRedirects="${cas.logout.followServiceRedirects:false}"/>
修改cas.logout.followServiceRedirects:false为cas.logout.followServiceRedirects:true,使支持 CAS 退出时支持输入 service 参数为跳转路径,如下图所示:
3.2 配置 FineReport 端
打开 %TOMCAT_HOME%\webapps\webroot\WEB-INF\web.xml 的第一个 fitler 之前添加如下代码:
<!-- 填写退出的URL --> <context-param> <param-name>casServerLogoutUrl</param-name> <param-value>https://josie:8443/cas/logout</param-value> </context-param> <!--单点退出配置 --> <listener> <listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class> </listener> <filter> <filter-name>CAS Single Sign Out Filter</filter-name> <filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class> </filter> <filter-mapping> <filter-name>CAS Single Sign Out Filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
如下图所示:
3.3 新增 logout.jsp 页面
如果需要退出后定位到 CAS 退出页面,必须重写退出页面,实现退出 CAS 系统并重新进入到 CAS 登录页面
logout.jsp页面内容如下图所示:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.io.*,java.util.*" %>
<%
session.removeAttribute("edu.yale.its.tp.cas.client.filter.user");
session.removeAttribute("_const_cas_assertion_");
session.invalidate();
response.sendRedirect("http://IP:端口/cas/logout?service=http://IP:端口/webroot/decision/view/report?op=fs");
%>
<html>
<head>
<title>标题</title>
</head>
<body>
</body>
</html>
注:IP、端口、标题需要自行修改。
放到%TOMCAT_HOME%\webapps\webroot\下,如下图所示:
3.4 配置决策系统的登录页面
用管理员账号登录决策系统后,打开系统管理-外观配置-登录页,设置登录页面为logout.jsp,如下图:
保存后,重启 Tomcat 服务器,即可看到上面的退出效果了。