[Java报表软件—技术知识]使用报表finereport进行CAS单点登录 |
创建证书
1. 概述
下面我们来介绍下CAS单点登录的配置步骤。
2. 创建证书
证书对于实现此单点登录非常之重要,证书是服务器端和客户端安全通信的凭证,由于只是演示,因为我们使用JDK自带的证书生成工具keytool。
2.1 生成证书
用JDK自带的keytool生成证书,打开命令窗口,输入如下代码:
keytool -genkey -alias mykey  -keyalg RSA -keystore c:/store/key   
注:此命令生成一个证书,其中sjc为别名,另外需要在c盘目录下新建store文件夹。
此命令执行结果如下图:
注:名字与姓氏最好写你的 域名,若是测试你可以在C:\Windows\System32\drivers\etc\hosts文件中映射一个虚拟域名,注意不要写ip地址。
2.2 导出证书
在命令窗口中输入如下命令:
keytool -export -file c:/keys/key.crt -alias mykey -keystore c:/store/key   
此命令执行结果如下图:
2.3 为客户端的JVM导入证书
在命令窗口中输入如下命令:
keytool -import -keystore %JAVA_HOME%\jre\lib\security\cacerts -file c:/store/key.crt -alias mykey  
此命令执行结果如下图:
至此,证书的生成、导出、导入到客户JVM中都已完成。
返回顶部
应用证书到Web服务器-Tomcat
1. 概述
下面我们以Tomcat服务器为例,为大家介绍如何将cas配置到服务器中。
2. 下载CAS服务器
下载CAS的服务端,解压,把解压后的文件中modules文件夹中的cas-server-webapp-3.4.8.war文件拷贝到%TOMCAT_HOME%\webapps下并将文件重命名为cas.war。
3. 开放Tomcat的8443端口
打开%TOMCAT_HOME%\conf\server.xml文件,找到8443端口的代码,取消注释,按照下面修改代码:
<Connector port="8443" maxHttpHeaderSize="8192"  
              maxThreads="150" minSpareThreads="25" maxSpareThreads="75"  
              enableLookups="false" disableUploadTimeout="true"  
              acceptCount="100" scheme="https" secure="true"  
              clientAuth="false" sslProtocol="TLS"   
           keystoreFile="c:/store/key"  
           keystorePass="bowie123"/>  
注:keystoreFile的值为生成证书的位置,keystorePass的值为设置的密码。
4. 效果查看
在浏览器中输入:https://设置的名称与姓氏:8443,出现如下界面
打开CAS服务器的页面输入admin/admin点击登录(CAS默认的验证规则只要用户名和密码相同就通过),看到如下界面则说明配置成功:
5. CAS服务器读取数据库配置
下面我们来进一步配置CAS服务器怎么读取数据库的信息进行身份验证,假设已经存在mysql数据库中已经存在userinfo表,其表样如下:
打开%TOMCAT_HOME%/webapp/cas/WEB-INF/deployerConfigContext.xml文件,将90行的
class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler" />  
代码注释掉,并增加如下代码:
<bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">  
 <property name="dataSource" ref="dataSource" />  
 <property name="sql" value="select password from username where username=?" />  
</bean>  
在文件的末尾之前加入如下代码:
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">  
   <property name="driverClassName"><value>com.mysql.jdbc.Driver</value></property>  
   <property name="url"><value>jdbc:mysql://localhost:3306/mysql</value></property>  
   <property name="username"><value>root</value></property>  
   <property name="password"><value>bowie</value></property>  
</bean>  
<bean id="serviceRegistryDao" class="org.jasig.cas.services.InMemoryServiceRegistryDaoImpl" />  
此时再进行登录的话,就需要输入userinfo表中的用户名和密码了。
配置FR作为CAS客户端
1. 概述
制作完上述步骤后,下面我们来看下如何将FR与CAS单点登录结合。
2. 实现过程
首先打开%TOMCAT_HOME%\webapps\WebReport\WEB-INF下的web.xml文件,在其中加入如下过滤条件:
<filter>  
        <filter-name>CASFilter</filter-name>  
        <filter-class>edu.yale.its.tp.cas.client.filter.CASFilter</filter-class>  
        <init-param>  
            <param-name>edu.yale.its.tp.cas.client.filter.loginUrl</param-name>  
            <param-value>https://localhost:8443/cas/login</param-value>  
            <!--这里的server是服务端的IP-->  
        </init-param>  
        <init-param>  
            <param-name>edu.yale.its.tp.cas.client.filter.validateUrl</param-name>  
            <param-value>https://localhost:8443/cas/proxyValidate</param-value>  
            <!--这里的ServerName是服务端的主机名也就是CN-->  
        </init-param>  
        <init-param>  
            <param-name>edu.yale.its.tp.cas.client.filter.serverName</param-name>  
            <param-value>localhost:8080</param-value>  
        </init-param>  
    </filter>  
    <filter-mapping>  
        <filter-name>CASFilter</filter-name>  
        <url-pattern>/*</url-pattern>  
    </filter-mapping>  
若报表应用设置了权限,则需要将如下代码:
package com.fr;  
  
import java.io.IOException;  
import java.io.PrintStream;  
import javax.servlet.Filter;  
import javax.servlet.FilterChain;  
import javax.servlet.FilterConfig;  
import javax.servlet.ServletException;  
import javax.servlet.ServletRequest;  
import javax.servlet.ServletResponse;  
import javax.servlet.http.HttpServletRequest;  
import javax.servlet.http.HttpSession;  
  
public class filter implements Filter  
{  
  public void doFilter(ServletRequest req, ServletResponse res, FilterChain filterChain)  
    throws IOException, ServletException  
  {  
    HttpServletRequest re = (HttpServletRequest)req;  
    HttpSession session = re.getSession(false);  
    //获取session中保留的信息  
    String user = (String)session.getAttribute("edu.yale.its.tp.cas.client.filter.user");  
  
    re.getSession().setAttribute("fr_username", user);  
    re.getSession().setAttribute("fr_password", user);  
    filterChain.doFilter(req, res);  
    System.out.println("sds");  
  }  
  
  public void init(FilterConfig filterconfig)  
    throws ServletException  
  {  
  }  
  
  public void destroy()  
  {  
  }  
}  
将filter.java编译成class文件,并放在%TOMCAT_HOME%\WebReport\WEB-INF\classes\com\fr目录下。
然后在web.xml文件中增加如下代码:
 <filter>  
   <filter-name>filter</filter-name>  
   <filter-class>com.fr.filter</filter-class>  
 </filter>  
 <filter-mapping>  
    <filter-name>CASFilter</filter-name>  
    <url-pattern>/*</url-pattern>  
 </filter-mapping>  
<filter-mapping>  
    <filter-name>filter</filter-name>  
    <url-pattern>/ReportServer</url-pattern>  
</filter-mapping>   
最后打开tomcat服务器,在浏览器中输入:http://localhost:8080/WebReport/ReportServer?reportlet=GettingStarted.cpt即进入了cas登录界面。
返回顶部
|
|
|

.: 公告
本博客提供详细的java报表软件的制作过程,发布java报表软件的版本更新信息,并适时对国内主流报表软件进行功能比较。 |
|
« | August 2025 | » | 日 | 一 | 二 | 三 | 四 | 五 | 六 | | | | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | | | | | | | |
|
.: 我的分类(专题)
|

.: 最新日志
.: 最新回复
|

blog名称:Java报表软件 日志总数:357 评论数量:69 留言数量:0 访问次数:1208930 建立时间:2006年4月16日 |
|

.: 留言板
|

.: 链接
|

|