欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

CAS之5.2x版本之Confluence单点登录-yellowcong

程序员文章站 2022-05-05 12:10:33
...

这一节,主要将如何配置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中。
CAS之5.2x版本之Confluence单点登录-yellowcong

1、配置web.xml

编辑web.xml添加过滤器,监听器。

vim /opt/atlassian/confluence/confluence/WEB-INF/web.xml

这里写代码片CAS之5.2x版本之Confluence单点登录-yellowcong

配置cas的服务地址和 confluence 的服务地址,得根据自己的服务器地址或域名来填。
CAS之5.2x版本之Confluence单点登录-yellowcong

这个地方,需要注意的是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的过滤器
CAS之5.2x版本之Confluence单点登录-yellowcong

2、过滤器匹配
在登录匹配(<filter-name>login</filter-name>)的前面配置过滤器
CAS之5.2x版本之Confluence单点登录-yellowcong
3、监听器配置地址
在所有的监听器前面,配置监听器,也就是在Servlet Context Listeners (Executed on app startup/shutdown) 这段话后面,配置监听器。
CAS之5.2x版本之Confluence单点登录-yellowcong

2、配置seraph-config.xml

配置seraph-config.xml,设定访问cas登录的信息,同时设置confluence的授权信息为cas的方式。

#打开配置文件
vim /opt/atlassian/confluence/confluence/WEB-INF/classes/seraph-config.xml

CAS之5.2x版本之Confluence单点登录-yellowcong

修改默认的登录配置

<!--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 -->

设定授权信息
CAS之5.2x版本之Confluence单点登录-yellowcong

3、配置登出

获取到xwork.xml文件,需要从lib目录下面,获取到confluence-5.6.6.jar文件,这个地方版本不同,可能jar包的名称版本号不一样。
CAS之5.2x版本之Confluence单点登录-yellowcong

这个地方,我直接提供一份confluence-5.6.6.jar 里面的xwork.xml 配置文件

http://yellowcong.qiniudn.com/xwork.xml

解压jar包,然后获取到里面的xwork.xml文件
CAS之5.2x版本之Confluence单点登录-yellowcong

打开配置文件后,配置登出节点,让后拷贝到/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服务器上。
CAS之5.2x版本之Confluence单点登录-yellowcong

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

CAS之5.2x版本之Confluence单点登录-yellowcong

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注销用户信息。

CAS之5.2x版本之Confluence单点登录-yellowcong

常见问题

1、javax.servlet.ServletException: org.jasig.cas.client.validation.TicketValidationException:

出现这个问题,我不知道是高兴,还是该哭,但是这说明了,我们配置的cas生效了,但是ticket 无效,宝宝不开心了。
CAS之5.2x版本之Confluence单点登录-yellowcong

导致这个问题的原因是由于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

CAS之5.2x版本之Confluence单点登录-yellowcong

2、HTTP Status 403 - 票根’ST-40-M-PS2Mgh9FkHfrxER6jIIJC1hRg-DESKTOP-LVAA2JR’不符合目标服务

导致这个问题的原因是配置cas

CAS之5.2x版本之Confluence单点登录-yellowcong

web.xml配置的ticket验证,可以发现配置的是ip,而我们访问的方式是通过域名的,所以报错了,解决的两种方案:第一种、配置web.xml,设置过滤器的servername是域名,第二种:访问的时候,通过ip地址访问。
CAS之5.2x版本之Confluence单点登录-yellowcong

3、java.lang.NullPointerException at org.jasig.cas.client.integration.atlassian.ConfluenceCasAuthenticator.logout(ConfluenceCasAuthenticator.java:78)

就是在登出的时候,报错了,导致这个问题的愿意是配置的登出有问题。
CAS之5.2x版本之Confluence单点登录-yellowcong

导致这个问题的原因是 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服务器上。
CAS之5.2x版本之Confluence单点登录-yellowcong

参考文章

1、Configuring Confluence with JASIG CAS Client for Java 3.1

2、cas官网git仓库的配置