[关闭]
@15311494814 2018-04-13T07:30:14.000000Z 字数 5621 阅读 1305

cas 整合jira 安装教程

avatar


前言:当前原型jira 版本为7.8.0,cas 版本为5.2.7。
cas 5.x版本使用spring boot + maven 或着spring boot + gradle ,区别于5以前的springmvc配置
由于目前网上新版本的教程非常少,具体配置又由于新版本的使用有所差别,因此,编写了此教程记录个人学习体会和教程记录。
参考文章:[https://github.com/apereo/java-cas-client#atlassian-integration]

cas整合jira实现思路

操作说明

JIRA_HOME:

war/jar格式: ${install_url}/webapp

安装文件格式: ${install_url}/JIRA Software

本教程使用安装文件格式,安装install_url目录如下:
image_1caus7b65g557tlbse14ha17cep.png-188.1kB

导入相关依赖包:

  1. 需要下载cas client的支持jar cas-client-core-xyz.jar [1]和cas 与jira和confulence的支持jar cas-client-integration-atlassian-xyz.jar [2]
    这里使用的是cas-client-core-3.4.1.jar和cas-client-integration-atlassian-3.4.1.jar
  2. 将jar包放如入JIRA_HOME/atlassian-jira/WEB-INF/lib下,如下图

image_1causni9d1rok15nc18pe1mq8n2216.png-92.5kB

配置web.xml:

配置JIRA_HOME/atlassian-jira/WEB-INF下的web.xml,加入cas client的相关监听和过滤器,放在首位

  1. <!-- 单点登出的监听器放在第一位 -->
  2. <listener>
  3. <listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class>
  4. </listener>
  5. <!-- 单点登出的过滤器,用于单点登出,放在第二位 -->
  6. <filter>
  7. <filter-name>CAS Single Sign Out Filter</filter-name>
  8. <filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class>
  9. <init-param>
  10. <param-name>casServerUrlPrefix</param-name> <!--casServerUrlPrefix配置cas server的地址-->
  11. <param-value>https://iquantex.com:8445/cas</param-value>
  12. </init-param>
  13. </filter>
  14. <!-- cas 的认证过滤器,用于校验用户是否登录cas client没有登录则跳转到cas server的login -->
  15. <filter>
  16. <filter-name>CAS Authentication Filter</filter-name>
  17. <!--<filter-class>org.jasig.cas.client.authentication.Saml11AuthenticationFilter</filter-class>-->
  18. <filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class>
  19. <init-param>
  20. <param-name>casServerLoginUrl</param-name> <!--casServerLoginUrl配置cas server的login页面地址-->
  21. <param-value>https://iquantex.com:8445/cas/login</param-value>
  22. </init-param>
  23. <init-param>
  24. <param-name>serverName</param-name> <!-serverName 配置cas client的地址--->
  25. <param-value>http://localhost:8089</param-value>
  26. </init-param>
  27. </filter>
  28. <!-- cas 的ticket认证过滤器,用于提交ticket到cas sever进行校验,教养成功变获得了用户信息 -->
  29. <filter>
  30. <filter-name>CAS Validation Filter</filter-name>
  31. <!--<filter-class>org.jasig.cas.client.validation.Saml11TicketValidationFilter</filter-class>-->
  32. <filter-class>org.jasig.cas.client.validation.Cas30ProxyReceivingTicketValidationFilter</filter-class>
  33. <init-param>
  34. <param-name>casServerUrlPrefix</param-name>
  35. <param-value>https://iquantex.com:8445/cas</param-value>
  36. </init-param>
  37. <init-param>
  38. <param-name>serverName</param-name>
  39. <param-value>http://localhost:8089</param-value>
  40. </init-param>
  41. <init-param>
  42. <param-name>redirectAfterValidation</param-name>
  43. <param-value>true</param-value>
  44. </init-param>
  45. <init-param>
  46. <param-name>useSession</param-name>
  47. <param-value>true</param-value>
  48. </init-param>
  49. </filter>
  50. <!-- 使用request.getUserPrincipal()来获取用户信息 -->
  51. <filter>
  52. <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>
  53. <filter-class>org.jasig.cas.client.util.HttpServletRequestWrapperFilter</filter-class>
  54. </filter>
  55. <filter-mapping>
  56. <filter-name>CAS Single Sign Out Filter</filter-name>
  57. <url-pattern>/*</url-pattern>
  58. </filter-mapping>
  59. <filter-mapping>
  60. <filter-name>CAS Validation Filter</filter-name>
  61. <url-pattern>/*</url-pattern>
  62. </filter-mapping>
  63. <filter-mapping>
  64. <filter-name>CAS Authentication Filter</filter-name>
  65. <url-pattern>/*</url-pattern>
  66. </filter-mapping>
  67. <filter-mapping>
  68. <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>
  69. <url-pattern>/*</url-pattern>
  70. </filter-mapping>

image_1cautcedk1q6osq21kja1itf168k33.png-217.1kB

配置seraph-config.xml:

进入JIRA_HOME/atlassian-jira/WEB-INF/classes:

image_1cautfb5t1m1rvga7u91g8a1vbn3g.png-100.7kB

image_1cautj1a0109iojdf3114m2avo3t.png-95.4kB

配置seraph-config.xml

  1. 修改url:
  2. <init-param>
  3. <param-name>login.url</param-name>
  4. <!-- 注释掉本身的jira登录地址 -->
  5. <!-- <param-value>/login.jsp?permissionViolation=true&amp;os_destination=${originalurl}&amp;page_caps=${pageCaps}&amp;user_role=${userRole}</param-value> -->
  6. <!-- 修改默认的登录地址为cas server的login地址 -->
  7. <param-value>https://iquantex.com:8445/cas/login?service=${originalurl}</param-value>
  8. <!--<param-value>http://sso.mycompany.com/login?redirectTo=${originalurl}</param-value>-->
  9. </init-param>
  10. <init-param>
  11. <param-name>link.login.url</param-name>
  12. <!-- 注释掉本身的jira 的link.login.url地址 -->
  13. <!-- <param-value>/login.jsp?os_destination=${originalurl}</param-value> -->
  14. <!-- 修改为cas server的login地址 -->
  15. <param-value>https://iquantex.com:8445/cas/login?service=${originalurl}</param-value>
  16. <!--<param-value>/secure/Dashboard.jspa?os_destination=${originalurl}</param-value>-->
  17. <!--<param-value>http://sso.mycompany.com/login?redirectTo=${originalurl}</param-value>-->
  18. </init-param>
  19. <init-param>
  20. <!-- URL for logging out.
  21. - If relative, Seraph just redirects to this URL, which is responsible for calling Authenticator.logout().
  22. - If absolute (eg. SSO applications), Seraph calls Authenticator.logout() and redirects to the URL
  23. -->
  24. <param-name>logout.url</param-name>
  25. <!-- 注释掉jira本身的logour地址 -->
  26. <!-- <param-value>/secure/Logout!default.jspa</param-value> -->
  27. <!-- 修改为cas serverlogout地址 -->
  28. <param-value>https://iquantex.com:8445/cas/logout</param-value>
  29. <!--<param-value>http://sso.mycompany.com/logout</param-value>-->
  30. </init-param>

image_1cautr9bq1odl1hu5e9c1jut58u4a.png-109.6kB

  1. 修改authenticator:
  2. <!-- <authenticator class="com.atlassian.jira.security.login.JiraSeraphAuthenticator"/> -->
  3. <!-- 将jira本身的认证器authenticator注释掉,替换为cas 提供的认证器 -->
  4. <authenticator class="org.jasig.cas.client.integration.atlassian.Jira44CasAuthenticator"/>

image_1cautrmr3mdjgliuaa5k44v4n.png-24.7kB

注意事项:

  1. 查看cas-client-integration-atlassian.jar源码可知在JIRA 4.4之后认证器需要配置Jira44CasAuthenticator,而不是官网所写的JiraCasAuthenticator,由于官网没有说明,导致在此浪费了很多时间.
  2. jira本身自带了jre,为了支持ssl,需要将cas server生成的jdk证书导入到jira目录下的jre中。ssl的证书具体百度,也可以参考我的这篇文章: cas5.2.7安装及部署[https://www.jianshu.com/p/a8f84df086a6]

image_1cautueo71esf5na2161ql27up64.png-22.5kB


[1] cas 客户端的支持jar包,实现了客户端的相关过滤器和监听器。
[2] cas 整合jira和confulence的支持jar包,重写了jira和confulence的登录认证器authenticator
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注