摘要
端午節閒來無事,想起公司的jira confluence 還沒集成單點登錄(也是應領導的需求),所以就有了這篇文章,記錄下過程,以備後查。
由於先前已經有了jira和confluence服務器,也已經使用了很長時間,上面的數據很多不適合重新做,所以就在已有jira、confluence的情況下集成SSO(crowd)。
如果小夥伴們需要部署新的jira和confluence網上有很多教程,在這裏我就不贅述了,破解工具(confluence、crowd)已經放到百度雲上 鏈接:https://pan.baidu.com/s/11kKunO6tsMpm-L6Y9KaZFg 密碼:popp
服務器架構如下:
名稱 | 服務器 |
---|---|
jira | http://172.16.165.174:8080 |
confluence | http://192.168.6.107:8090/ |
crowd | http://172.16.165.175:8095/ |
一、想要集成SSO單點登錄,需要先安裝crowd
用途:在安裝了confluence,jira,fisheye後發現每次登錄它們就得重新輸入用戶名密碼,所以安裝crowd, Atlassian單點登錄的產品,可以用於集中用戶、用戶組管理,方便權限控制。
1.下載crowd
$ wget https://product-downloads.atlassian.com/software/crowd/downloads/atlassian-crowd-3.2.1.tar.gz
2.安裝&破解&漢化
[crowd@crowd ~]$ tar xf atlassian-crowd-3.2.1.tar.gz -C /opt/
[crowd@crowd ~]$ vim /opt/atlassian-crowd-3.2.1/crowd-webapp/WEB-INF/classes/crowd-init.properties
.......
crowd.home=/var/crowd-home #最後一行crowd安裝路徑
[crowd@crowd ~]$ /opt/atlassian-crowd-3.2.1/start_crowd.sh ##啓動
登陸8095端口查看,出現界面表示沒有問題,點擊set upcrowd
破解crowd:
[crowd@crowd ~]$ cp /opt/atlassian-crowd-3.2.1/crowd-webapp/WEB-INF/lib/atlassian-extras-3.2.jar /tmp/atlassian-extras-2.6.jar
把atlassian-extras-2.6.jar導出到windows 打開crowd_keygen.jar 鏈接:https://pan.baidu.com/s/11kKunO6tsMpm-L6Y9KaZFg 密碼:popp
數據庫初始化完成後(需要一段時間),繼續默認下一步即可。
3.啓動
啓動:
/crowd/atlassian-crowd-3.3.4/start_crowd.sh
停止:
/crowd/atlassian-crowd-3.3.4/stop_crowd.sh
4.漢化
將漢化包crowd-language_zh_CN-2.7.0.jar放入/opt/atlassian-crowd-3.2.1/crowd-webapp/WEB-INF/lib
二、Crowd 與 JIRA、Confluence集成
1、配置crowd
新建目錄,點擊crowd的diectories(目錄),點擊add diectory,選擇internal,點擊next;
填寫目錄名稱,點擊continue;
點擊update,完成目錄的添加
最終完成創建如下:
Crowd 與 JIRA 集成
導入jira的用戶,product選擇jira,diectory選擇apps,databases url填寫jira數據庫地址,點擊continue
添加用戶組,點擊crowd的groups,選擇add group,填寫name(主要是填寫confluence的用戶組,jira的用戶組在導入用戶時,會自動創建),點擊create
要保證有這些用戶組;
添加應用,點擊crowd的application,選擇add application,填寫相關信息,點擊next;
填寫要添加應用的路徑,,點擊resolve IP address,自動解析ip地址,點擊next
選擇目錄,選擇創建的apps目錄,點擊next
設置用戶允許從指定目錄訪問新添加的應用程序,勾選allow all users to authenticate,點擊next
點擊add application,完成新應用的添加
使用 JIRA 管理員,登錄 JIRA。點擊用戶管理 --> 用戶目錄 --> 添加目錄,選擇 “Atlassian 人羣”,點擊下一步
輸入 Crowd 服務器的配置,點擊測試,並保存。
名稱:Crowd Server
服務器的URL:Crowd的URL地址,比如:http://www.example.com:8095/crowd/
應用程序名稱:與在 Crowd 裏配置的 Application 名稱一致
應用程序密碼:與在 Crowd 裏配置的 Application 密碼一致
系統默認每 1 小時從 Crowd 同步一次用戶(系統管理員可修改),點擊同步按鈕也可手動同步。
註銷管理員用戶,使用 Crowd 裏的用戶嘗試登陸 JIRA,發現能夠登錄進去了。
2、Crowd 與 Confluence集成
參考 Crowd 與 JIRA 集成。
jira、confluence、crowd 以上三臺服務器添加hosts
編輯:/etc/hosts
192.168.6.190 atlassian.xx.com
最終
3、配置jira、confluence、crowd域名
需要注意的地方是想要實現SSO單點登錄 必須使用域名訪問。
一開始沒使用域名,這個也是坑我花費了很長的時間。
首先給各個服務配置上域名,在這裏我使用的是nginx,配置如下:
[crowd@crowd ~]$ more atlassian.conf
server {
listen 80;
server_name atlassian.xx.com;
client_max_body_size 500m;
proxy_connect_timeout 120;
proxy_send_timeout 600;
proxy_read_timeout 600;
charset UTF-8;
location ^~ /jira {
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
client_max_body_size 32m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 240;
proxy_read_timeout 240;
#設置代理服務器(nginx)保存用戶頭信息的緩衝區大小
proxy_buffer_size 128k;
#proxy_buffers緩衝區,網頁平均在32k以下的設置
proxy_buffers 32 32k;
#高負荷下緩衝大小(proxy_buffers*2)
proxy_busy_buffers_size 128k;
#設定緩存文件夾大小,大於這個值,將從upstream服務器傳
proxy_temp_file_write_size 128k;
#limit_except PUT GET POST HEAD OPTIONS { deny all;}
add_header Cache-Control no-cache;
add_header Cache-Control no-store;
add_header pragma no-cache;
add_header Cache-Control must-revalidate;
add_header expires 0 ;
proxy_pass http://172.16.165.174:8080/jira;
}
location / {
try_files $uri @confluence;
}
location @confluence {
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
internal;
proxy_pass http://wiki;
}
location ^~ /crowd {
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
client_max_body_size 32m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 240;
proxy_read_timeout 240;
#設置代理服務器(nginx)保存用戶頭信息的緩衝區大小
proxy_buffer_size 128k;
#proxy_buffers緩衝區,網頁平均在32k以下的設置
proxy_buffers 32 32k;
#高負荷下緩衝大小(proxy_buffers*2)
proxy_busy_buffers_size 128k;
#設定緩存文件夾大小,大於這個值,將從upstream服務器傳
proxy_temp_file_write_size 128k;
#limit_except PUT GET POST HEAD OPTIONS { deny all;}
add_header Cache-Control no-cache;
add_header Cache-Control no-store;
add_header pragma no-cache;
add_header Cache-Control must-revalidate;
add_header expires 0 ;
proxy_pass http://172.16.165.175:8095/crowd;
}
}
再修改jira、confluence服務的context-path配置
Crowd
默認支持,無需修改。
JIRA
# server.xml,在 Context 標籤中添加 path="/jira"
$ vi /opt/jira/atlassian/jira/conf/server.xml
<Context path="/jira" docBase="${catalina.home}/atlassian-jira" reloadable="false" useHttpOnly="true">
# 重啓生效
Confluence
# server.xml,在 Context 標籤中添加 path="/confluence"
$ vi /opt/confluence/atlassian/confluence/conf/server.xml
<Context path="/confluence" docBase="../confluence" debug="0" reloadable="false" useHttpOnly="true">
# 重啓生效
訪問地址列表如下:
jira:
http://atlassian.xx.com/jira
wiki:
http://atlassian.xx.com/confluence
crowd:
http://atlassian.xx.com/crowd/
三、單點登錄(SSO)配置
在配置sso之前,各應用系統已配置好相應的域名
再次聲明需要配置域名!!!
1、Confluence 配置 SSO
# copy /opt/atlassian-crowd-3.2.1/client/crowd-integration-client-3.2.1.jar 到 jira服務的 /opt/atlassian/jira/atlassian-jira/WEB-INF/lib/
# 編輯 seraph-config.xml
$ vi /opt/confluence/atlassian/confluence/confluence/WEB-INF/classes/seraph-config.xml
# 註釋掉
<!--<authenticator class="com.atlassian.confluence.user.ConfluenceGroupJoiningAuthenticator"/>-->
# 打開註釋
<authenticator class="com.atlassian.confluence.user.ConfluenceCrowdSSOAuthenticator"/>
# 修改 crowd.properties
$ vi /opt/atlassian/confluence/confluence/WEB-INF/classes/crowd.properties
#application.name:配置 crowd 裏該 Application 的名稱
#application.password:配置 crowd 裏該 Application 的密碼
#application.login.url:配置 crowd 的地址
#crowd.server.url:配置 crowd 的 services 地址
#crowd.base.url:配置 crowd 的 baseurl 地址
#session.tokenkey:與 crowd 管理頁面的SSO cookie name保持一致
application.name confluence
application.password xx
application.login.url http://atlassian.xx.com/crowd/
crowd.server.url http://atlassian.xx.com/crowd/services/
crowd.base.url http://atlassian.x.com/crowd/
session.isauthenticated session.isauthenticated
session.tokenkey crowd.token_key
session.validationinterval 2
session.lastvalidation session.lastvalidation
# 重啓 Confluence 生效
驗證:
先登錄crowd,然後在打開一個頁面,輸入confluence地址,發現不需要在手動輸入賬戶密碼,直接就登進去了
注意:必須使用帶域名的地址,登錄的用戶必須是同步過的用戶。
2、JIRA 配置 SSO
拷貝 /opt/atlassian-crowd-3.2.1/client/crowd-integration-client-3.2.1.jar 到 jira服務的 /opt/atlassian/jira/atlassian-jira/WEB-INF/lib/
編輯 seraph-config.xml
參考 Confluence 配置 sso,基本一樣,只是 JIRA 的安裝目錄裏沒有 crowd.properties 文件,可以從 Confluence 或者 Crowd 拷貝一份,然後修改配置的內容即可。
$ cat /opt/atlassian/jira/atlassian-jira/WEB-INF/classes/crowd.properties
application.name jira
application.password confluence
application.login.url http://atlassian.xx.com/crowd/
crowd.server.url http://atlassian.x.com/crowd/services/
crowd.base.url http://atlassian.x.com/crowd/
session.isauthenticated session.isauthenticated
session.tokenkey crowd.token_key ##與crowd系統配置的token保持一致
session.validationinterval 2
session.lastvalidation session.lastvalidation
重啓服務。
四、配置程序導航器
jira配置:
confluence配置:
使用已有的賬號登錄jira或者confluence,點擊導航器切換服務,看是否自動登錄,是否需要再次登錄,如果不需要說明sso單點登錄配置成功。