目錄
- 目錄
- 1、介紹
- 2、Crowd 的官網在哪里?
- 3、如何下載安裝?
- 4、對 Crowd 進行配置
- 4.1、破解 Crowd 第一步
- 4.2、破解 Crowd 第二步,獲取授權許可
- 4.2、Crowd 的安裝 Crowd installation
- 4.3、數據庫配置 Database configuration
- 4.4、Crowd 選項 Options
- 4.5、內部目錄設置 Internal directory
- 4.6、設置默認管理員帳號 Default administrator
- 4.7、綜合應用 Integrated applications
- 4.8、查看破解后的授權信息
- 4.9、創建應用程序目錄
- 4.10、添加用戶組 Group
- 4.11、從 JIRA 中導入用戶
- 4.12、添加 JIRA 和 Confluence 應用程序
- 5、設置 Confluence 使用 Crowd 認證
- 6、設置 Jira Software 使用 Crowd 認證
- 7、相關文章
1、介紹
1.1、什么是Crowd?
以下是來自官網的介紹:
能夠管理來自多個目錄(Active Directory、LDAP、OpenLDAP 或 Microsoft Azure AD)的用戶,並在一個位置控制應用身份驗證權限。
- 單點登錄 (SSO)
為用戶提供一組用戶名和密碼來登錄需要訪問的所有應用,讓他們的生活更加輕松。無縫集成 Jira、Confluence 和 Bitbucket 等所有 Atlassian 產品,為您的用戶提供單點登錄 (SSO) 體驗。 - 集中多個目錄
將任意目錄組合映射到單個應用(非常適用於管理不在主目錄中的用戶),然后在同一位置管理身份驗證權限。開始使用適用於 AD、LDAP、Microsoft Azure AD、Novell eDirectory 等的連接器。您甚至可以創建自己的自定義連接器。
不建議大家在公司使用破解版。
2、Crowd 的官網在哪里?
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.2
和 MySQL 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
,在獲取授權碼時,回到我們剛才打開的破解文件窗口,輸入Name
、Email
、Organization
、Server 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 address
、Username
、Password
、Confirm password
、First name
、Last 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-administrators
、confluence-users
、jira-administrators
、jira-software-users
、jira-software-developers
用戶組,Directory
選擇我們剛才創建的apps
,點擊 Create
。
添加后的結果如下圖:
4.11、從 JIRA 中導入用戶
如果之前沒有設置過
JIRA
和Confluence
統一使用JIRA
的帳號登錄,或者兩套程序中沒有用戶,可以忽略此步驟。
第一步點擊上方的 Users
,左側點擊 Import users
,右側選擇Atlassian importer
,然后點擊 Next
。
第二步,在 Atlassian product required
選擇 JIRA
,在 Directory
選擇 apps
, 在 Product database URL
輸入 JIRA
的數據庫連接地址 jdbc:mysql://jira_mysql/jira?autoReconnect=true
,Username
輸入用戶名 jira
, Password
輸入 jira_mshk
,點擊 Continue
。
為什么這樣設置的 JIRA 數據庫信息,請參考 Docker 創建 Jira Core/SoftWare 7.12.3 中文版
操作成功后,可以看到提示從 JIRA
導入多少個用戶。
4.12、添加 JIRA 和 Confluence 應用程序
點擊 Applications
->Add application
,在 Application type
選擇 JIRA
,輸入 Name
為 JIRA
,Description
是JIRA 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-administrators
、confluence-users
,如下圖,其他步驟沒有變化:
最終 Jira Software
、Confluence
應用程序添加后的效果如下圖:
做完上面的步驟,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
修改為confluence
,application.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