CAS之5.2x版本之Confluence单点登录-yellowcong
这一节,主要将如何配置confluence的单点登录,不讲如何安装Confluence,配置cas到Confluence ,有一下几个步骤:
1、配置web.xml文件,设置过滤器,匹配。2、配置seraph-config.xml ,设定访问到cas的信息。3、修改xwork.xml(这个文件存在于confluence-3.0.1.jar 中),配置登出。4、导入cas登录的jar包。5、重启cas服务。6、登录测试。
confluence下载地址
cas下载地址,包含了**文件。
#confluence 5.6.6 版本下载地址()
http://yellowcong.qiniudn.com/confluence.zip
百度链接:https://pan.baidu.com/s/1Pxg_L740lNRnZINgWfDZyA
#cas登录文件
http://yellowcong.qiniudn.com/cas%20client%20for%20confluence%203.3.3.zip
服务器架构
节点 | 服务 | 版本 |
---|---|---|
http://192.168.1.99:9000 | cas服务 | cas 5.2.1 |
http://192.168.100.10:8090 | Confluence服务 | atlassian-confluence-5.6.6 |
修改的文件与其对应目录
文件名 | 地址 |
---|---|
web.xml | /opt/atlassian/confluence/confluence/WEB-INF/web.xml |
seraph-config.xml | /opt/atlassian/confluence/confluence/WEB-INF/classes/seraph-config.xml |
xwork.xml(confluence-5.6.6.jar中的) | /opt/atlassian/confluence/confluence/WEB-INF/classes/xwork.xml |
导入jar包到confluence
将下面的两个包导入到confluence中。
1、配置web.xml
编辑web.xml添加过滤器,监听器。
vim /opt/atlassian/confluence/confluence/WEB-INF/web.xml
这里写代码片
配置cas的服务地址和 confluence 的服务地址,得根据自己的服务器地址或域名来填。
这个地方,需要注意的是web.xml配置的时候,注意是按照域名的方式,还是按照ip的方式来访问。
<!--配置过滤器和cas 以及本地服务的路径信息-->
<!-- CAS:START - Java Client Filters -->
<filter>
<filter-name>CasSingleSignOutFilter</filter-name>
<filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class>
</filter>
<filter>
<filter-name>CasAuthenticationFilter</filter-name>
<filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class>
<init-param>
<param-name>casServerLoginUrl</param-name>
<param-value>http://192.168.1.99:9000/login</param-value>
</init-param>
<init-param>
<param-name>serverName</param-name>
<param-value>http://192.168.100.10:8090/</param-value>
</init-param>
</filter>
<filter>
<filter-name>CasValidationFilter</filter-name>
<filter-class>org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter</filter-class>
<init-param>
<param-name>casServerUrlPrefix</param-name>
<param-value>http://192.168.1.99:9000</param-value>
</init-param>
<init-param>
<param-name>serverName</param-name>
<param-value>http://192.168.100.10:8090/</param-value>
</init-param>
<init-param>
<param-name>redirectAfterValidation</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<!--- CAS:END -->
<!--配置过滤器-->
<!-- CAS:START - Java Client Filter Mappings -->
<filter-mapping>
<filter-name>CasSingleSignOutFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>CasAuthenticationFilter</filter-name>
<url-pattern>/login.action</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>CasValidationFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- CAS:END -->
<!--配置单点登出的监听器-->
<!-- CAS:START - Java Client Single Sign Out Listener -->
<listener>
<listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class>
</listener>
<!-- CAS:END -->
1、过滤器定义
在所有的过滤器后面,配置cas的过滤器
2、过滤器匹配
在登录匹配(<filter-name>login</filter-name>
)的前面配置过滤器
3、监听器配置地址
在所有的监听器前面,配置监听器,也就是在Servlet Context Listeners (Executed on app startup/shutdown)
这段话后面,配置监听器。
2、配置seraph-config.xml
配置seraph-config.xml,设定访问cas登录的信息,同时设置confluence的授权信息为cas的方式。
#打开配置文件
vim /opt/atlassian/confluence/confluence/WEB-INF/classes/seraph-config.xml
修改默认的登录配置
<!--set cas login info-->
<init-param>
<param-name>login.url</param-name>
<!--<param-value>/login.action?os_destination=${originalurl}</param-value>-->
<param-value>http://192.168.1.99:9000/login?service=${originalurl}</param-value>
</init-param>
<init-param>
<param-name>link.login.url</param-name>
<!--<param-value>/login.action</param-value>-->
<param-value>http://192.168.1.99:9000/login?service=${originalurl}</param-value>
</init-param>
<!--配置confluence通过cas的方式来验证服务-->
<!-- CAS:START - Java Client Confluence Authenticator -->
<authenticator class="org.jasig.cas.client.integration.atlassian.ConfluenceCasAuthenticator"/>
<!-- CAS:END -->
设定授权信息
3、配置登出
获取到xwork.xml文件,需要从lib目录下面,获取到confluence-5.6.6.jar文件,这个地方版本不同,可能jar包的名称版本号不一样。
这个地方,我直接提供一份confluence-5.6.6.jar 里面的xwork.xml 配置文件
http://yellowcong.qiniudn.com/xwork.xml
解压jar包,然后获取到里面的xwork.xml文件
打开配置文件后,配置登出节点,让后拷贝到/opt/atlassian/confluence/confluence/WEB-INF/classes
目录下面。
##编辑,设定退出
vim /opt/atlassian/confluence/confluence/WEB-INF/classes/xwork.xml
然后修改推出的操作。
<action name="logout" class="com.atlassian.confluence.user.actions.LogoutAction">
<interceptor-ref name="defaultStack"/>
<!-- <result name="error" type="velocity">/logout.vm</result> -->
<!-- CAS:START - CAS Logout Redirect -->
<result name="success" type="redirect">http://192.168.1.99:9000/logout</result>
<!-- CAS:END -->
</action>
设定推出是重定向到 cas服务器上。
4、添加jar包
这个cas的版本是5.2.2的,confluence 5.6.6的,然后开始一直说是ticket有问题,后来发现是官方文档的导入jar包问题,我试了很多遍,发现只有3.3.3的版本是支持的,这点我就被坑哭了。
#下面是版本信息,我同
cas-client-core-3.3.3.jar
cas-client-integration-atlassian-3.3.3.jar
5、重启服务
cas常见的命令
#查看是否运行
ps -ef |grep tomcat
#启动confluence
/opt/atlassian/confluence/bin/startup.sh
#日志查看
tail -f -n 100 /opt/atlassian/confluence/logs/catalina.2018-03-21.log
#关闭confluence
/opt/atlassian/confluence/bin/shutdown.sh
#通过confluence 给我们提供的脚本
#启动
/etc/init.d/confluence start
#重启
/etc/init.d/confluence restart
#停止
/etc/init.d/confluence stop
登录测试
可以看到,我先访问的是 http://192.168.100.10:9000(confluence 服务端),然后跳转到http://192.168.1.99:9000(cas服务器),登录成功后,然后返回到confluence 服务上。然后点击注销后,用户到cas注销用户信息。
常见问题
1、javax.servlet.ServletException: org.jasig.cas.client.validation.TicketValidationException:
出现这个问题,我不知道是高兴,还是该哭,但是这说明了,我们配置的cas生效了,但是ticket 无效,宝宝不开心了。
导致这个问题的原因是由于cas client的版本问题,我经过了多次测试,发现版本的最适合的是:这个cas的版本是5.2.2的,confluence 5.6.6的,然后开始一直说是ticket有问题,后来发现是官方文档的导入jar包问题,我试了很多遍,发现只有3.3.3的版本是支持的,这点我就被坑哭了。
#下面是版本信息,我同
cas-client-core-3.3.3.jar
cas-client-integration-atlassian-3.3.3.jar
2、HTTP Status 403 - 票根’ST-40-M-PS2Mgh9FkHfrxER6jIIJC1hRg-DESKTOP-LVAA2JR’不符合目标服务
导致这个问题的原因是配置cas
web.xml配置的ticket验证,可以发现配置的是ip,而我们访问的方式是通过域名的,所以报错了,解决的两种方案:第一种、配置web.xml,设置过滤器的servername是域名,第二种:访问的时候,通过ip地址访问。
3、java.lang.NullPointerException at org.jasig.cas.client.integration.atlassian.ConfluenceCasAuthenticator.logout(ConfluenceCasAuthenticator.java:78)
就是在登出的时候,报错了,导致这个问题的愿意是配置的登出有问题。
导致这个问题的原因是 xwork.xml 配置有问题了。
##编辑,设定退出
vim /opt/atlassian/confluence/confluence/WEB-INF/classes/xwork.xml
然后修改推出的操作。
<action name="logout" class="com.atlassian.confluence.user.actions.LogoutAction">
<interceptor-ref name="defaultStack"/>
<!-- <result name="error" type="velocity">/logout.vm</result> -->
<!-- CAS:START - CAS Logout Redirect -->
<result name="success" type="redirect">http://192.168.1.99:9000/logout</result>
<!-- CAS:END -->
</action>
设定推出是重定向到 cas服务器上。
参考文章
上一篇: js面向对象2--js中工厂模式的演化(重要,详细)
下一篇: 行走江湖所需交朋友的方法,走心
推荐阅读
-
SSO之CAS单点登录实例(非常详细)
-
CAS之5.2x版本自定义返回消息-yellowcong
-
CAS之5.2x版本之OAuth2.0-yellowcong
-
CAS之5.2x版本之服务器开发调试(eclipse调试cas)-yellowcong
-
CAS之5.2x版本之服务管理-yellowcong
-
CAS之5.2x版本之Gitlab单点登录-yellowcong
-
CAS之5.2x版本之Confluence单点登录-yellowcong
-
CAS之5.2x版本之Jira单点登录-yellowcong
-
CAS之5.2x版本之客户端集成(Springboot)-yellowcong
-
CAS之5.2x版本之jdbc配置多返回值-yellowcong