Docker 創建 Crowd3.3.2 以及打通 Jira Software7.12.3和Confluence6.12.2 SSO 單點登錄

目錄

1、介紹

1.1、什麼是Crowd?

  以下是來自官網的介紹:
  能夠管理來自多個目錄(Active Directory、LDAP、OpenLDAP 或 Microsoft Azure AD)的用戶,並在一個位置控制應用身份驗證權限。
  

  • 單點登錄 (SSO)
      爲用戶提供一組用戶名和密碼來登錄需要訪問的所有應用,讓他們的生活更加輕鬆。無縫集成 JiraConfluence 和 Bitbucket 等所有 Atlassian 產品,爲您的用戶提供單點登錄 (SSO) 體驗。
      
  • 集中多個目錄
      將任意目錄組合映射到單個應用(非常適用於管理不在主目錄中的用戶),然後在同一位置管理身份驗證權限。開始使用適用於 AD、LDAP、Microsoft Azure AD、Novell eDirectory 等的連接器。您甚至可以創建自己的自定義連接器。   

    不建議大家在公司使用破解版。

2、Crowd 的官網在哪裏?

  https://www.atlassian.com/
    

3、如何下載安裝?

  我將 Crowd 3.3.2 直接封裝到了 Docker 鏡像中,如何安裝Docker,請參考這篇文章<Centos7的安裝、Docker1.12.3的安裝,以及Docker Swarm集羣的簡單實例>
    
  以下實例中安裝 Crowd 3.3.2 ,需要用到 MySQL 5.7,如果你已經安裝完Docker,可以下載已經做好的 <docker-compose.yml>。文件內容如下,請注意修改/srv/your_folder/my.ini的位置爲你下載後的文件位置:

version: '3'
# https://docs.docker.com/compose/compose-file/
# support Docker version 17.05.0-ce
services:

#################################### crowd ######################################################

##############################
# jira_crowd_mysql
##############################
  jira_crowd_mysql:
    image: "idoall/mysql:5.7"
    hostname: jira_crowd_mysql
    ports:
     - "6033:3306"
    volumes:
      - /srv/your_folder/my.ini:/etc/mysql/my.cnf
    networks:
      - crowd
    environment:
      - MYSQL_ROOT_PASSWORD=123456
      - MYSQL_DATABASE=crowd
      - MYSQL_USER=crowd
      - MYSQL_PASSWORD=crowd_mshk
      - character-set-server=utf8mb4
      - collation-server=utf8mb4_bin
    deploy:
      replicas: 1
      update_config:
        delay: 1s
      restart_policy:
        condition: on-failure
##############################
# jira_crowd
##############################
  jira_crowd:
    image: "idoall/ubuntu16.04-jira-crowd:3.3.2"
    hostname: jira_crowd
    ports:
     - "80:8095"
    networks:
      - crowd
    depends_on:
     - jira_crowd_mysql
    deploy:
      replicas: 1
      update_config:
        delay: 1s
      restart_policy:
        condition: on-failure

# 統一網絡設置
networks:
  crowd:
    driver: overlay

     
  我們運行以下命令,使用 Docker Stack 的編排服務,來創建 Crowd 3.3.2 以及 MySQL 5.7 服務:

$ docker stack deploy -c docker-compose.yml mshk_crowd
Creating network mshk_crowd_crowd
Creating service mshk_crowd_jira_crowd
Creating service mshk_crowd_jira_crowd_mysql

  
  啓動成功後,使用下面的命令,可以看到 Crowd 3.3.2MySQL 5.7 的服務運行狀態:

$ docker service ls
ID                  NAME                          MODE                REPLICAS            IMAGE                                 PORTS
hgijdmnrwobl        mshk_crowd_jira_crowd         replicated          1/1                 idoall/ubuntu16.04-jira-crowd:3.3.2   *:80->8095/tcp
8jqw32rdaoh6        mshk_crowd_jira_crowd_mysql   replicated          1/1                 idoall/mysql:5.7                      *:6033->3306/tcp

  
  再等幾分鐘以後,在<docker-compose.yml>文件中,可以看到,我們對 Crowd 做了80->8095端口的映射,所以打開:http://localhost ,能夠看到如下頁面,說明運行成功:

這時的等待是因爲 Crowd的服務需要啓動, MySQL 5.7 的數據庫需要創建。

  

4、對 Crowd 進行配置

4.1、破解 Crowd 第一步

  Crowd 3.3.2 的破解文件已經打包到了 Docker 中。
  先用 docker ps 命令,查看服務生成的容器名稱,本文測試時生成的容器名稱是 mshk_crowd_jira_crowd.1.vvl9un0ubbyos0so8xoms1r81

CONTAINER ID        IMAGE                                 COMMAND                  CREATED             STATUS              PORTS                     NAMES
f41c14a845ec        idoall/ubuntu16.04-jira-crowd:3.3.2   "/bin/bash -e /init/…"   37 minutes ago      Up 37 minutes       8095/tcp                  mshk_crowd_jira_crowd.1.vvl9un0ubbyos0so8xoms1r81
5adfee0cc8d8        idoall/mysql:5.7                      "docker-entrypoint.s…"   About an hour ago   Up About an hour    3306/tcp                  mshk_crowd_jira_crowd_mysql.1.9z947zyvdxiswwt93drk6wxh6

  Docker 編排服務後的容器名稱比較長,把容器名稱賦值到一個變量CONTAINERNAME ,這樣後面使用起來會很方便。
  將要破解的文件、破解工具從容器中複製到本地,並將要破解的文件atlassian-extras-3.2.jar重命名爲atlassian-extras-2.6.jar

CONTAINERNAME=`docker ps --format "{{.Names}}" | grep mshk_crowd_jira_crowd.1`
docker cp $CONTAINERNAME:/home/work/_app/_jira_crowd/crowd-webapp/WEB-INF/lib/atlassian-extras-3.2.jar ./atlassian-extras-2.6.jar
docker cp $CONTAINERNAME:/usr/src/_crowd/crowd_keygen.jar .

  在當前目錄,運行以下命令,打開破解文件,在彈出的破解文件窗口中,點擊.patch!,找到剛纔從容器中複製出來的atlassian-extras-2.6.jar文件。破解成功後,在破解工具的左下方,會提示jar successfully patched這時不要着急關閉破解文件的窗口,後面還會用到。 

$ java -jar crowd_keygen.jar

  停止 Crowd 容器運行的服務;同時將 Crowd 容器的原文件 atlassian-extras-3.2.jar 重命名爲atlassian-extras-3.2.jar.bak做備份;再將我們破解後的atlassian-extras-2.6.jar文件,複製到容器中重命名爲atlassian-extras-3.2.jar ;啓動容器;下面是本次操作的命令:

$ docker exec $CONTAINERNAME sh -c '/home/work/_app/_jira_crowd/stop_crowd.sh;mv /home/work/_app/_jira_crowd/crowd-webapp/WEB-INF/lib/atlassian-extras-3.2.jar /home/work/_app/_jira_crowd/crowd-webapp/WEB-INF/lib/atlassian-extras-3.2.jar.bak'
$ docker cp atlassian-extras-2.6.jar $CONTAINERNAME:/home/work/_app/_jira_crowd/crowd-webapp/WEB-INF/lib/atlassian-extras-3.2.jar 
$ docker exec $CONTAINERNAME sh -c '/home/work/_app/_jira_crowd/start_crowd.sh'

  
  這時在瀏覽器,輸入 http://localhost,打開 Crowd ,能夠打開以界面,說明破解的第一步成功。
  

  

4.2、破解 Crowd 第二步,獲取授權許可

  點擊 Set up Crowd,在獲取授權碼時,回到我們剛纔打開的破解文件窗口,輸入NameEmailOrganizationServer ID,點擊.gen!,生成授權碼,並將授權碼複製到頁面中,點擊Continue

  

4.2、Crowd 的安裝 Crowd installation

    
  如圖中選擇New installation 新的安裝,然後點擊Continue
  
  

4.3、數據庫配置 Database configuration

  
  選擇 JDBC connection,然後 Database 選擇 MySQL,將 JDBC URL 的內容更改爲 jdbc:mysql://jira_crowd_mysql/crowd?autoReconnect=true&characterEncoding=utf8&useUnicode=true,Username輸入crowd,Password輸入crowd_mshk,最後點擊Continue

這裏輸入的數據庫參數,是我們在<docker-compose.yml>中配置的主機名 jira_crowd_mysql ,數據庫名稱 crowd ,用戶名 crowd ,密碼 crowd_mshk

4.4、Crowd 選項 Options

  這裏可以設置 Crowd 的標題,會話超時的時間Session timeout單位是分鐘,以及Base URL,點擊Continue

4.5、內部目錄設置 Internal directory

  這裏可以做一些基礎的設置,比如密碼的正則,無效登錄的嘗試次數等,我們不做太多演示,直接點擊Continue

4.6、設置默認管理員帳號 Default administrator

  輸入Email addressUsernamePasswordConfirm passwordFirst nameLast name,點擊Continue

4.7、綜合應用 Integrated applications

  什麼也不操作,點擊Continue

4.8、查看破解後的授權信息

  用剛纔設置的管理員帳號登錄以後,點擊右上角的齒輪,選擇Licensing,能夠看到破解日期已經延長到了2337年。

4.9、創建應用程序目錄

  點擊上方的Directory->Add directory,選擇Internal,點擊Next,在Name處輸入apps,點擊Continue,創建成功後的效果如下圖。

  

4.10、添加用戶組 Group

  點擊Groups->Add roup,如下圖,分別添加confluence-administratorsconfluence-usersjira-administratorsjira-software-usersjira-software-developers 用戶組,Directory選擇我們剛纔創建的apps,點擊 Create

  
添加後的結果如下圖:

  

4.11、從 JIRA 中導入用戶

如果之前沒有設置過 JIRAConfluence 統一使用 JIRA 的帳號登錄,或者兩套程序中沒有用戶,可以忽略此步驟。

  第一步點擊上方的 Users,左側點擊 Import users,右側選擇Atlassian importer,然後點擊 Next
  第二步,在 Atlassian product required 選擇 JIRA ,在 Directory 選擇 apps, 在 Product database URL 輸入 JIRA 的數據庫連接地址 jdbc:mysql://jira_mysql/jira?autoReconnect=trueUsername 輸入用戶名 jiraPassword 輸入 jira_mshk,點擊 Continue

爲什麼這樣設置的 JIRA 數據庫信息,請參考 Docker 創建 Jira Core/SoftWare 7.12.3 中文版

  操作成功後,可以看到提示從 JIRA 導入多少個用戶。

  

4.12、添加 JIRA 和 Confluence 應用程序

  點擊 Applications->Add application,在 Application type 選擇 JIRA,輸入 NameJIRADescriptionJIRA Application,再設置密碼123456,點擊Next.

  
  在URL輸入設置的JIRA URL地址,點擊 Resolve IP address,會自動解析出 Remote IP address
  選擇剛纔創建的apps目錄,點擊Next
  在Directory groups中選擇jira-software-users,點擊Add Group,將用戶添加到授權組Authorised groups,同樣操作將jira-administrators也添加到授權組,點擊Next。(也可以勾選Allow all users to authenticate,允許目錄中所有的用戶訪問)
  最後點擊Add Application,新應用添加成功。

  
  Confluence 的添加方式同上,只是在選擇用戶組的時候,添加confluence-administratorsconfluence-users,如下圖,其他步驟沒有變化:

  
  最終 Jira SoftwareConfluence 應用程序添加後的效果如下圖:

  
  做完上面的步驟,Crowd 的配置基本結束。
  

5、設置 Confluence 使用 Crowd 認證

5.1、設置 Crowd 的用戶目錄

  第一步:使用管理員帳號登錄到 Confluence 後臺,左側點擊 用戶目錄 在彈出的窗口中選擇 Atlassian 人羣 ,點擊 下一步
  第二步:在 應用程序名稱 處輸入剛纔設置的 Confluence應用程序名稱 confluence,在應用程序密碼輸入剛纔我們設置的密碼123456,點擊 測試設置,能夠看到如下圖中有綠色的提示框,提示 連接測試成功,最後點 測試並保存
  第三步:在 用戶目錄,可以看到,我們剛添加的 Crowd Server 目錄。

  
  調整 Crowd Server 目錄的順序到第一行,調整後的順序如下:

  

5.2、啓用 Confluence 與 Crowd 的 SSO 集成

  修改 Confluence 容器中的文件 /opt/atlassian/confluence/confluence/WEB-INF/classes/crowd.properties,修改前的格式如下:

application.name                        username
application.password                    password
application.login.url                   http://localhost:8095/crowd/console/

crowd.server.url                        http://localhost:8095/crowd/services/
crowd.base.url                          http://localhost:8095/crowd/

session.isauthenticated                 session.isauthenticated
session.tokenkey                        session.tokenkey
session.validationinterval              2
session.lastvalidation                  session.lastvalidation

  
  將 crowd.properties 文件中的內容改爲我們之前配置的應用程序內容( 參考 本文的4.12章節), application.name修改爲confluenceapplication.password修改爲123456,修改後的內容如下:

application.name                        confluence
application.password                    123456
application.login.url                   http://localhost:8095/crowd/console/

crowd.server.url                        http://localhost:8095/crowd/services/
crowd.base.url                          http://localhost:8095/crowd/

session.isauthenticated                 session.isauthenticated
session.tokenkey                        session.tokenkey
session.validationinterval              2
session.lastvalidation                  session.lastvalidation
cookie.tokenkey                         crowd.token_key

  
  設置 Confluence 的驗證授權爲 Crowd,修改 /opt/atlassian/confluence/confluence/WEB-INF/classes/seraph-config.xml 文件,將 <authenticator class="com.atlassian.confluence.user.ConfluenceAuthenticator"/> 註釋,將 <!-- <authenticator class="com.atlassian.confluence.user.ConfluenceCrowdSSOAuthenticator"/> --> 取消註釋,修改後的內容如下:

<!-- Default Confluence authenticator, which uses the configured user management for authentication. -->
<!-- <authenticator class="com.atlassian.confluence.user.ConfluenceAuthenticator"/> -->

<!-- Custom authenticators appear below. To enable one of them, comment out the default authenticator above and uncomment the one below. -->

<!-- Authenticator with support for Crowd single-sign on (SSO). -->
<authenticator class="com.atlassian.confluence.user.ConfluenceCrowdSSOAuthenticator"/>

<!-- Specialised version of the default authenticator which adds authenticated users to confluence-users if they aren't already a member. -->
<!-- <authenticator class="com.atlassian.confluence.user.ConfluenceGroupJoiningAuthenticator"/> -->

  
  在管理後臺的站點管理->用戶&安全->安全配置中勾選上外部用戶管理。通過以上步驟,就完成了 Confluence 使用 Crowd 認證.
  通過以下命令,重啓 Confluence 容器內的服務,使用在 Crowd 中配置的用戶登錄,就可以測試效果了。

$ CONTAINERNAME=`docker ps --format "{{.Names}}" | grep mshk_confluence_confluence.1`
$ docker exec $CONTAINERNAME sh -c 'service confluence restart'

  

6、設置 Jira Software 使用 Crowd 認證

6.1、設置 Crowd 的用戶目錄

  使用管理員帳號登錄以後,右上角齒輪,選擇用戶管理->左側選擇用戶目錄,點擊添加目錄,在彈出的窗口中選擇Atlassian 人羣,點擊下一步

  
  後面的步驟,同 5.1章節 一樣,只是在 應用程序名稱 處輸入剛纔設置的 JIRA應用程序名稱 jira,在應用程序密碼輸入剛纔我們設置的密碼123456,點擊 測試設置,能夠看到如下圖中有綠色的提示框,提示 連接測試成功,最後點 測試並保存
  添加後,將 Crowd Server 的順序調整到第一行,調整後的效果如下圖:

  

6.2、啓用 JIRA 與 Crowd 的 SSO 集成

  添加 JIRA 容器中的文件 /opt/atlassian/jira/atlassian-jira/WEB-INF/classes/crowd.properties,內容如下:

application.name                        jira
application.password                    123456
application.login.url                   http://localhost:8095/crowd/console/

crowd.server.url                        http://localhost:8095/crowd/services/
crowd.base.url                          http://localhost:8095/crowd/

session.isauthenticated                 session.isauthenticated
session.tokenkey                        session.tokenkey
session.validationinterval              2
session.lastvalidation                  session.lastvalidation
cookie.tokenkey                         crowd.token_key

在這個版本中 /opt/atlassian/jira/atlassian-jira/WEB-INF/classes/crowd.propertie文件是不存在的,所以我們需要創建

  
  設置 JIRA 的驗證授權爲 Crowd,修改 /opt/atlassian/jira/atlassian-jira/WEB-INF/classes/seraph-config.xml 文件,將 <authenticator class="com.atlassian.jira.security.login.JiraSeraphAuthenticator"/> 註釋,將 <authenticator class="com.atlassian.jira.security.login.SSOSeraphAuthenticator"/> 取消註釋,修改後的內容如下:

<!-- CROWD:START - If enabling Crowd SSO integration uncomment the following SSOSeraphAuthenticator and comment out the JiraSeraphAuthenticator below -->
<authenticator class="com.atlassian.jira.security.login.SSOSeraphAuthenticator"/>

<!-- CROWD:END -->

<!-- CROWD:START - The authenticator below here will need to be commented out for Crowd SSO integration -->
<!-- <authenticator class="com.atlassian.jira.security.login.JiraSeraphAuthenticator"/> -->
<!-- CROWD:END -->

<!-- NB: the URL to redirect to is now specified by login.url above -->

  
  通過以下命令,重啓 JIRA 容器內的服務,使用在 Crowd 中配置的用戶登錄,就可以測試效果了。

$ CONTAINERNAME=`docker ps --format "{{.Names}}" | grep mshk_crowd_jira_crowd.1`
$ docker exec $CONTAINERNAME sh -c 'service jira stop;service jira start'

  

7、相關文章

7.1、 Crowd Adding an Application


博文作者:迦壹
博客地址:Docker 創建 Crowd3.3.2 以及打通 Jira Software7.12.3和Confluence6.12.2 SSO 單點登錄
轉載聲明:可以轉載, 但必須以超鏈接形式標明文章原始出處和作者信息及版權聲明,謝謝合作!

比特幣地址:1KdgydfKMcFVpicj5w4vyn3T88dwjBst6Y
以太坊地址:0xbB0a92d634D7b9Ac69079ed0e521CC2e0a97c420


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章