本站首页    管理页面    写新日志    退出

The Neurotic Fishbowl

[Java报表软件—技术知识]使用报表finereport进行CAS单点登录
FineReport——报表技术领跑者 发表于 2012/11/21 9:36:05

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

阅读全文(1596) | 回复(0) | 编辑 | 精华

 



发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)

 
 



The Neurotic Fishbowl

.: 公告

本博客提供详细的java报表软件的制作过程,发布java报表软件的版本更新信息,并适时对国内主流报表软件进行功能比较。


Bloginess

«August 2025»
12
3456789
10111213141516
17181920212223
24252627282930
31

.: 我的分类(专题)

首页(357)
Java报表软件—制作笔记(54)
Java报表软件—功能比较(43)
Java报表软件—使用心得(21)
Java报表软件—行业动态(54)
Java报表软件—新闻资讯(48)
Java报表软件—技术知识(49)
Java报表软件—问题解析(2)


In the Bowl

.: 最新日志

如何对报表的参数控件赋值
java报表工具FineReport常见
报表怎么做 FineReport连接池原
报表怎么做FineReport数据连接之
报表模板之报表设计
报表模板之报表设计


.: 最新回复

回复:报表参数
好好学习,
好好学习,天天向上。买双 air jor
回复:理解FineReport缓存系列2
回复:理解FineReport缓存系列2


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



Text Me

.: 留言板

签写新留言

需要你的帮助


Other Fish in the Sea

.: 链接

报表开发工具  html5图表java报表开发工具




站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.236 second(s), page refreshed 144754542 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号