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模式:

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

Domain模式:

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

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

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

09:05:34,206 INFO  [org.springframework.web.servlet.DispatcherServlet] (ServerService Thread Pool -- 69)
FrameworkServlet 'cas': initialization completed in 820 ms
09:05:34,251 INFO [org.jboss.as.server] (Controller Boot Thread)
JBAS015859: 已部署的 "cas.war"(runtime-name: "cas.war")
09:05:34,256 INFO [org.jboss.as] (Controller Boot Thread)
JBAS015961: 侦听 http://127.0.0.1:9990/management 的 HTTP 管理接口
09:05:34,257 INFO [org.jboss.as] (Controller Boot Thread)
JBAS015951: 管理控制台侦听于 http://127.0.0.1:9990
09:05:34,257 INFO [org.jboss.as] (Controller Boot Thread)
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~):

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

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name
'supportsTrustStoreSslSocketFactoryHttpClient': FactoryBean threw exception on object creation; nested exception is java.lang.NoSuchMethodError:
org.apache.http.impl.client.HttpClientBuilder.setSSLHostnameVerifier(Ljavax/net/ssl/HostnameVerifier;)L
org/apache/http/impl/client/HttpClientBuilder;
at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:175)
[spring-beans-4.1.8.RELEASE.jar:4.1.8.RELEASE]
at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.getObjectFromFactoryBean(FactoryBeanRegistrySupport.java:127)
[spring-beans-4.1.8.RELEASE.jar:4.1.8.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.getObjectForBeanInstance(AbstractBeanFactory.java:1523)
[spring-beans-4.1.8.RELEASE.jar:4.1.8.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:314)
[spring-beans-4.1.8.RELEASE.jar:4.1.8.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
[spring-beans-4.1.8.RELEASE.jar:4.1.8.RELEASE]
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:351)
[spring-beans-4.1.8.RELEASE.jar:4.1.8.RELEASE]
... 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

<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.4.1</version>
</dependency>

module.xml

<?xml version="1.0" encoding="UTF-8"?>

<module xmlns="urn:jboss:module:1.1" name="org.apache.httpcomponents">
<properties>
<property name="jboss.api" value="private"/>
</properties> <resources>
<!-- redhat original -->
<!-- <resource-root path="httpclient-4.3.6.redhat-1.jar"/>
<resource-root path="httpcore-4.3.3.redhat-1.jar"/>
<resource-root path="httpmime-4.3.6.redhat-1.jar"/> -->
<!-- redhat original -->
<!-- Richard Modify -->
<resource-root path="httpclient-4.4.1.jar"/>
<resource-root path="httpcore-4.4.1.jar"/>
<resource-root path="httpmime-4.3.6.redhat-1.jar"/>
<!-- Richard Modify -->
<!-- Insert resources here -->
</resources> <dependencies>
<module name="javax.api"/>
<module name="org.apache.commons.codec"/>
<module name="org.apache.commons.logging"/>
<module name="org.apache.james.mime4j"/>
</dependencies>
</module>

测试

尝试访问

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

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

*扩展

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

查看server.log

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

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

解决方案

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

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

module.xml

<module xmlns="urn:jboss:module:1.1" name="javax.persistence.api">
<dependencies>
<!-- PersistenceUnitInfo needs javax.sql.DataSource -->
<module name="javax.api" export="true"/>
</dependencies> <resources>
<!-- original -->
<!-- <resource-root path="hibernate-jpa-2.0-api-1.0.1.Final-redhat-3.jar"/> -->
<!-- orginal -->
<!-- Richard modify -->
<resource-root path="hibernate-jpa-2.1-api-1.0.0.Final.jar"/>
<!-- Richard modify --> <!-- Insert resources here -->
</resources>
</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. Linux shell下30个有趣的命令

    Tips 原文作者:Víctor López Ferrando 原文地址:30 interesting commands for the Linux shell 这些是我收集了多年的Linux she ...

  2. Oozie-coordinator调度

    当有一个复杂的工作流job,希望每天定时执行,使用crontab方式调用需要编写大量的脚本,还要通过大量的判断来控制每个工作流job的执行顺序问题.Oozie中的Coordinator可以让每个工作流 ...

  3. Scala java maven开发环境搭建

        基于maven配置的scala开发环境,首先需要安装 idea 的scala plugin.然后就可以使用maven编译scala程序了.一般情况下都是java scala的混合,所以src下 ...

  4. 在vultr中安装coreos

    1.coreos必须使用key文件. 2.生成ssh key -C "your_email@mail.com" 3.拷贝ssh公钥文件内容.默认为id_rsa.pub 4.编辑vu ...

  5. Atitit Java OpenCV 捕获视频

    Atitit Java  OpenCV 捕获视频 ,打开一段视频或默认的摄像头 有两种方法,一种是在定义类的时候,一种是用open()方法. 一. 读取视频序列 OpenCV提供了一个简便易用的框架以 ...

  6. SSH框架整合开发具体解释(个人笔记)

    一.创建数据库并设置编码. A) create database oa default character set utf8. 二.MyEclipseproject A) 在Myeclipse里创建w ...

  7. C/C++中的volatile关键字

    volatile提醒编译器它后面所定义的变量随时都有可能改变,因此编译后的程序每次需要存储或读取这个变量的时候,都会直接从变量地址中读取数据. 如果没有volatile关键字,则编译器可能优化读取和存 ...

  8. vim学习日志(7):替换、删除文件中的字符

    vim全局替换文件: 语法为 :[addr]s/源字符串/目的字符串/[option] 全局替换命令为::%s/源字符串/目的字符串/g [addr] 表示检索范围,省略时表示当前行. 如:“1,20 ...

  9. libevent源码分析:event_add、event_del

    event_add.event_del两个函数分别是使event生效和失效的,下面就来看一下两个函数的实现. event_add int event_add(struct event *ev, con ...

  10. IE 此网站的某个加载项无法运行

    1.使用IE浏览器 发生问题,一直以为是浏览器安全设置出问题,将IE安全级别调到最低,还是同样的问题 2.转用360浏览器(IE内核) 问题一样,提示略有不同 点击需要运行的java程序 解决方法 1 ...