CAS (8) —— Mac下配置CAS到JBoss EAP 6.4(6.x)的Standalone模式(服务端)


jboss版本: jboss-eap-6.4-CVE-2015-7501

jdk版本: 1.7.0_79

cas版本: cas4.1.3

参考来源:

JBoss7.1.1版本和CAS3的集成(未完)

CAS 4.1.1 - JDBC authentication, failed to deploy

Securing JBoss EAP 6 - Implementing SSL

JBoss eap 6.4 mutual (two way) ssl configuration

Tomcat (1) —— Mac下配置Tomcat Https/SSL

准备工作

配置cas server到jboss eap 6.4需要做以下准备:

  • 一个cas-server-webapp
  • 一个jboss eap服务
  • 配置jboss SSL

cas-server-webapp

可以参照下面两篇文章,进行准备和配置:

jboss eap 6.4

配置jboss eap比较简单,直接去官网注册后就能下载了。

下载后也无需编译,如果再Mac或linux下可以直接运行命令启动jboss eap

Standalone模式:

  1. :node6-a Richard$ ./bin/standalone.sh

Domain模式:

  1. :node6-a Richard$ ./bin/domain.sh

新的EAP提供了两种部署方式,官方推荐产品上使用Domain模式,关于Domain模式和Standalone模式有何区别,再次不赘述,weblogic也有类似特性,可以去官网上查找。

如果能正常启动,最后几行的console输出可能是:

  1. 09:05:34,206 INFO [org.springframework.web.servlet.DispatcherServlet] (ServerService Thread Pool -- 69)
  2. FrameworkServlet 'cas': initialization completed in 820 ms
  3. 09:05:34,251 INFO [org.jboss.as.server] (Controller Boot Thread)
  4. JBAS015859: 已部署的 "cas.war"runtime-name: "cas.war"
  5. 09:05:34,256 INFO [org.jboss.as] (Controller Boot Thread)
  6. JBAS015961: 侦听 http://127.0.0.1:9990/management 的 HTTP 管理接口
  7. 09:05:34,257 INFO [org.jboss.as] (Controller Boot Thread)
  8. JBAS015951: 管理控制台侦听于 http://127.0.0.1:9990
  9. 09:05:34,257 INFO [org.jboss.as] (Controller Boot Thread)
  10. JBAS015874: JBoss EAP 6.4.0.GA (AS 7.5.0.Final-redhat-21) started in 9651ms - Started 551 of 588 services (60 services are lazy, passive or on-demand)

默认情况下,本地后台服务管理的入口是http://127.0.0.1:9990/console

*注意以下的测试都是基于Standalone模式

配置jboss SSL

这个版本的SSL的配置过程与Tomcat有些许差异,主要是因为jboss eap提供了Standalone与Domain两种模式以及对配置文件范式的修改。至于从哪个版本起做的改变,在此不考证。

SSL密钥和证书生成过程与Tomcat SSL一致,在此不赘述。

standalone.xml里面有关键配置(Line 295~):

  1. <subsystem xmlns="urn:jboss:domain:web:2.2" default-virtual-server="default-host" native="false">
  2. <connector name="http" protocol="HTTP/1.1" scheme="http" socket-binding="http"/>
  3. <connector name="https" protocol="HTTP/1.1" scheme="https" socket-binding="https" secure="true">
  4. <ssl name="https" password="Hoau123" certificate-key-file="/Users/Richard/Documents/Dev/servers/cluster/keys/hoaukey"/>
  5. </connector>
  6. <virtual-server name="default-host" enable-welcome-root="true">
  7. <alias name="localhost"/>
  8. <alias name="sso.hoau.com"/>
  9. </virtual-server>
  10. </subsystem>

为subsystem添加了https connector以及为ssl指定certificate-key-file的路径。

安装cas.war

通过后台console界面来部署比较方便

(1)选择“Create Deployment”

(2)选择“Add”

(3)点击“Browse”并选择编译好的war

错误

部署后可能会出现错误:

查看server.log(../servers/cluster/jboss/node6-a/standalone/log)

  1. Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name
  2. 'supportsTrustStoreSslSocketFactoryHttpClient': FactoryBean threw exception on object creation; nested exception is java.lang.NoSuchMethodError:
  3. org.apache.http.impl.client.HttpClientBuilder.setSSLHostnameVerifier(Ljavax/net/ssl/HostnameVerifier;)L
  4. org/apache/http/impl/client/HttpClientBuilder;
  5. at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:175)
  6. [spring-beans-4.1.8.RELEASE.jar:4.1.8.RELEASE]
  7. at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.getObjectFromFactoryBean(FactoryBeanRegistrySupport.java:127)
  8. [spring-beans-4.1.8.RELEASE.jar:4.1.8.RELEASE]
  9. at org.springframework.beans.factory.support.AbstractBeanFactory.getObjectForBeanInstance(AbstractBeanFactory.java:1523)
  10. [spring-beans-4.1.8.RELEASE.jar:4.1.8.RELEASE]
  11. at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:314)
  12. [spring-beans-4.1.8.RELEASE.jar:4.1.8.RELEASE]
  13. at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
  14. [spring-beans-4.1.8.RELEASE.jar:4.1.8.RELEASE]
  15. at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:351)
  16. [spring-beans-4.1.8.RELEASE.jar:4.1.8.RELEASE]
  17. ... 64 more

解决办法

此处怀疑jboss容器自带的库可能和Tomcat(8.x)有所差异,此处报错的“org.apache.http.impl.client.HttpClientBuilder”属于httpclient包下。

查看文件module.xml (路径“../servers/cluster/jboss/node6-a/modules/system/layers/base/org/apache/httpcomponents/main”),发现jboss这个版本的jar是依赖与redhat自己打包的"httpclient-4.3.6.redhat-1.jar"和“httpcore-4.3.3.redhat-1.jar”。

暂且不考虑影响和更好的解决方案,一个可行方案是修改这个配置,将这两个jar替换成httpclient的更高版本(此处为4.4.1)

maven

  1. <dependency>
  2. <groupId>org.apache.httpcomponents</groupId>
  3. <artifactId>httpclient</artifactId>
  4. <version>4.4.1</version>
  5. </dependency>

module.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <module xmlns="urn:jboss:module:1.1" name="org.apache.httpcomponents">
  3. <properties>
  4. <property name="jboss.api" value="private"/>
  5. </properties>
  6. <resources>
  7. <!-- redhat original -->
  8. <!-- <resource-root path="httpclient-4.3.6.redhat-1.jar"/>
  9. <resource-root path="httpcore-4.3.3.redhat-1.jar"/>
  10. <resource-root path="httpmime-4.3.6.redhat-1.jar"/> -->
  11. <!-- redhat original -->
  12. <!-- Richard Modify -->
  13. <resource-root path="httpclient-4.4.1.jar"/>
  14. <resource-root path="httpcore-4.4.1.jar"/>
  15. <resource-root path="httpmime-4.3.6.redhat-1.jar"/>
  16. <!-- Richard Modify -->
  17. <!-- Insert resources here -->
  18. </resources>
  19. <dependencies>
  20. <module name="javax.api"/>
  21. <module name="org.apache.commons.codec"/>
  22. <module name="org.apache.commons.logging"/>
  23. <module name="org.apache.james.mime4j"/>
  24. </dependencies>
  25. </module>

测试

尝试访问

  1. https://sso.hoau.com:8453/cas

并使用我们在数据库里面预埋的数据"casuser/Mellon"登陆

*扩展

参照数据库用户验证和JpaTicketRegistry的方式,重新发布cas.war。这时可能会遇到另一个错误:

查看server.log

  1. 10:28:09,762 ERROR [org.springframework.web.context.ContextLoader]
  2. (ServerService Thread Pool -- 216) Context initialization failed:
  3. org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in ServletContext resource [/WEB-INF/spring-configuration/ticketRegistry.xml]:
  4. Invocation of init method failed; nested exception is java.lang.NoSuchMethodError:
  5. javax.persistence.Table.indexes()[Ljavax/persistence/Index;
  6. at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1572)
  7. [spring-beans-4.1.8.RELEASE.jar:4.1.8.RELEASE
  8. at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539)
  9. [spring-beans-4.1.8.RELEASE.jar:4.1.8.RELEASE]
  10. at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476)
  11. [spring-beans-4.1.8.RELEASE.jar:4.1.8.RELEASE]
  12. at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:303)
  13. [spring-beans-4.1.8.RELEASE.jar:4.1.8.RELEASE]

这主要还是因为jboss EAP 6.4这个版本自带jar包的问题。

解决方案

修改hibernate-jpa-api的jar包版本,路径:

  1. /Users/Richard/Documents/Dev/servers/cluster/jboss/node6-a/modules/system/layers/base/javax/persistence/api/main

module.xml

  1. <module xmlns="urn:jboss:module:1.1" name="javax.persistence.api">
  2. <dependencies>
  3. <!-- PersistenceUnitInfo needs javax.sql.DataSource -->
  4. <module name="javax.api" export="true"/>
  5. </dependencies>
  6. <resources>
  7. <!-- original -->
  8. <!-- <resource-root path="hibernate-jpa-2.0-api-1.0.1.Final-redhat-3.jar"/> -->
  9. <!-- orginal -->
  10. <!-- Richard modify -->
  11. <resource-root path="hibernate-jpa-2.1-api-1.0.0.Final.jar"/>
  12. <!-- Richard modify -->
  13. <!-- Insert resources here -->
  14. </resources>
  15. </module>

结束

CAS (8) —— Mac下配置CAS到JBoss EAP 6.4(6.x)的Standalone模式(服务端)的更多相关文章

  1. CAS (7) —— Mac下配置CAS 4.x的JPATicketRegistry(服务端)

    CAS (7) -- Mac下配置CAS 4.x集群及JPATicketRegistry(服务端) tomcat版本: tomcat-8.0.29 jdk版本: jdk1.8.0_65 cas版本: ...

  2. CAS (1) —— Mac下配置CAS到Tomcat(服务端)

    CAS (1) -- Mac下配置CAS到Tomcat(服务端) tomcat版本: tomcat-8.0.29 jdk版本: jdk1.8.0_65 cas版本: cas4.1.2 cas-clie ...

  3. CAS (3) —— Mac下配置CAS客户端经代理访问Tomcat CAS

    CAS (3) -- Mac下配置CAS客户端经代理访问Tomcat CAS tomcat版本: tomcat-8.0.29 jdk版本: jdk1.8.0_65 nginx版本: nginx-1.9 ...

  4. CAS (2) —— Mac下配置CAS到Tomcat(客户端)

    CAS (2) -- Mac下配置CAS到Tomcat(客户端) tomcat版本: tomcat-8.0.29 jdk版本: jdk1.8.0_65 cas版本: cas4.1.2 cas-clie ...

  5. CAS (1) —— Mac下配置CAS到Tomcat(服务端)(转)

    tomcat版本: tomcat-8.0.29 jdk版本: jdk1.8.0_65 cas版本: cas4.1.2cas-client-3.4.1 参考来源: CAS实现单点登录(SSO)经典完整教 ...

  6. 在Mac下配置php开发环境:Apache+php+MySql

    /private/etc/apache2/httpd.conf 一.启动Apache sudo apachectl start sudo apachectl -v   可以查看到Apache的版本信息 ...

  7. iOS开发MAC下配置svn

    版本控制对于团队合作显得尤为重要,那么如何在iOS开发中进行版本控制呢?在今天的博客中将会介绍如何在MAC下配置SVN服务器,如何导入我们的工程,如何在Xcode中进行工程的checkOut和Comm ...

  8. mac下配置openfire

    下载 在浏览器中打开如下网址http://www.igniterealtime.org/downloads/index.jsp,根据你的操作系统选择对应的版本进行下载,这里我是在mac下配置的,所以选 ...

  9. Mac下配置idk

    Mac下配置java #以下进入啰嗦模式演示添加jdk7 #下载jdk7的mac版 #官网下载地址http://www.oracle.com/technetwork/java/javase/downl ...

随机推荐

  1. SharePoint 2013 Farm 安装指南——构建一个双层SharePoint Farm

    最近要对公司里的SharePoint进行升级,由于旧的系统SharePoint 2010已经有2年了,上面改动比较多,而且权限也很混乱了,所以下定决心要对其做一次升级,重新部署一台新的SharePoi ...

  2. POJ 1129 Channel Allocation(DFS)

    Channel Allocation Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 13173   Accepted: 67 ...

  3. 章节0:MySQl学前知识储备

    一.数据库基础: 1.数据库(database):保存有组织的数据的容器(通常是一个文件或一组文件). 2.数据库管理系统(DBMS):创建和操纵数据库的软件系统. 3.表(table):某种特定类型 ...

  4. Android编译系统环境初始化过程分析

    Android源代码在编译之前,要先对编译环境进行初始化,其中最主要就是指定编译的类型和目标设备的型号.Android的编译类型主要有eng.userdebug和user三种,而支持的目标设备型号则是 ...

  5. [转]Java中Runtime.exec的一些事

    0 预备知识 1 不正确的调用exitValue 2不正确的调用waitFor 3 一种可接受的调用方式 4 调用认为是可执行程序的时候容易发生的错误 5 window执行的良好示例 6 不良好的重定 ...

  6. [转]session和cookie的区别和联系,session的生命周期,多个服务部署时session管理

    Session和Cookie的区别 对象 信息量大小 保存时间 应用范围 保存位置 Session 小量,简单的数据 用户活动时间+一段延迟时间(一般为20分钟) 单个用户 服务器端 Cookie 小 ...

  7. marquee标签详解

    <marquee>标签,它是成对出现的标签,首标签<marquee>和尾标签</marquee>之间的内容就是滚动内容.<marquee>标签的属性主要 ...

  8. js日期操作,某天的N天后,一个月后的日期

    var date = new Date(); var tomorrow = date.setDate(new Date().getDate() + 10); //10天后的日期 console.log ...

  9. centos 7 安装python3和pip

    目前,我认为还是使用系统自带的稳定版最好,因为:该版本肯定是centos7开发组深思熟虑的,稳定性好,另外,由于系统自带,兼容性好,第三,和之配套的软件齐全,如果不用系统的,建议还是不要在源码编译安装 ...

  10. Darwin Streaming Server for Windows 安装

    最近搞流媒体相关的项目,于是打算在局域网搭建一个流媒体服务器.本以为很快搞定的,但是,在安装过程中还是折腾了一番. 现把安装流程记下来: 一.下载 Darwin Streaming Server fo ...