历史版本11 :CAS登出方案 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 版本编辑

报表服务器版本
10.0

2. 概述编辑

2.1 问题描述

通过 配置 FineReport 作为 CAS 客户端 ,可以实现通过 CAS 认证来进行 FineReport 的登录,但是存在一个问题,如果直接退出 FineReport 决策系统,会进入到 FineReport 的登录界面,并不是 CAS 登录系统,说明没有完全退出 CAS 系统。如下图所示:

222

那么,如何实现 FineReport 的退出后,真正退出 CAS 系统并且重新进入到 CAS 登录页面呢?如下图所示:

222

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:falsecas.logout.followServiceRedirects:true使支持 CAS 退出时支持输入 service 参数为跳转路径,如下图所示:

222

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>

如下图所示:

222


3.3 新增 logout.jsp 页面

如果需要退出后定位到 CAS 退出页面,必须重写退出页面,实现退出 CAS 系统并重新进入到 CAS 登录页面

logout.jsp文件如下:logout.rar

页面内容如下图所示:

<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%@ page import="java.net.URLEncoder" %>
<%@ page import="edu.yale.its.tp.cas.client.filter.CASFilter" %>
<%@ page import="com.fr.FrFilter" %>
<html>
<body>
<%
   CASFilter.deleteTicket(request, response);
   FrFilter.deleteToken(request);
   String loginUrl = URLEncoder.encode("http://192.168.1.127/webroot/decision");
   response.sendRedirect(application.getInitParameter("casServerLogoutUrl")+"?service=" + loginUrl);
%>
</body>
</html>

注:JSP文件中,loginUrl 需要改成 nginx 服务器地址和端口(示例中 nginx 端口为80,所以在 web.xml 中省略了端口号),如下图所示

1562728534732679.png

将 logout.jsp 文件放到%TOMCAT_HOME%\webapps\webroot\下,如下图所示:

222

3.4 配置决策系统的登录页面

用管理员账号登录决策系统后,打开系统管理-外观配置-登录页,设置登录页面为 logout.jsp ,如下图所示:

222

保存后,重启 Tomcat 服务器,即可看到上面的退出效果了。