jira、confluence、bitbucket、基于crowd实现sso的案例

案例简介

这是旧生产环境备份案例:

版本信息

  • jira:7.13
  • confluence:6.10.0
  • bitbucket:7.0.0
  • crowd:3.2.1
  • mysql:5.7

  1. jira位于一台服务器192.168.99.253数据库也在此服务器,端口为8080
  2. crowd和confluence位于同一台服务器192.168.99.252它们的数据库也在此服务器,crowd端口为8095,confluence端口为8090
  3. bitbucket位于一台服务9器192.168.99.251数据库也在此服务器,端口为7990

整个项目是旧的项目迁移而来。

参考文章jira、confluence、bitbucket、基于crowd实现sso | Regen

思路

因为是新的环境,而且基础信息也已经全部丢失,例如各种账号密码,所以思路是:

  1. 先满足每个软件能够正常使用内部账户登录使用
  2. 再连接crowd进行测试
  3. 最后实现SSO

图:

image-20250721161435380

  • 操作目标
  • 实现三平台(jira、confluence、bitbucket)的单点登录。

1. 准备工作:

1. 找到各个软件的安装目录和数据目录

jira

  1. 安装目录

image-20250721165424260

  1. 数据目录

image-20250721165441962

confluence

  1. 安装目录

image-20250721165844897

  1. 数据目录

image-20250721165954165

bibucket

  1. 安装目录

image-20250721170035979

  1. 数据目录

image-20250721170015797

crowd

  1. 安装目录

image-20250721165757293

  1. 数据目录

image-20250721165811334

2. 停掉还在运行的服务

到对应的bin目录下运行对应脚本即可。


2. 使用内网DNS解析

服务器为Winserver2016,安装DNS服务。

1. 搭建与配置DNS服务器

1. 搭建DNS服务器

  1. 打开服务器管理器

image-20250722161735278

  1. 点击添加角色和功能

image-20250722162042742

  1. 点击下一步-基于角色或基于功能的安装-下一步,选择主机,选择DNS服务器

image-20250722162253226

  1. 一路下一步最后安装

image-20250722162326485

​ 可能会重启几次

2. 配置DNS解析

  1. 进入DNS管理器

image-20250722162527041

  1. 选择正向查找区域,新建区域

image-20250722162647154

  1. 选择主要区域并下一步

image-20250722162728785

  1. 输入域名,下一步

image-20250722162809338

  1. 一路下一步,右键新建的域名选择新建主机(A或AAAA)

image-20250722162937500

  1. 输入二级域名以及主机名,重复操作即可。

image-20250722163102969

  1. 最后显示

image-20250722163210119

  1. 至此已添加所有需要使用到的解析

2. 客户端配置DNS服务器

1. windows客户端

  1. 控制面板-网络和共享中心-选择联网的以太网连接

image-20250722163419857

  1. 点击属性后双击IPv4

image-20250722163445352

  1. 选择DNS服务器并输入

image-20250722163610973

  1. 至此已添加好DNS解析服务器,。
  2. 测试一下是否是正确的IP。

​ 第一次是未添加解析之前的结果,后面的为添加解析后的结果。至于为什么两次结果不一样,与DNS解析过程有关,最终结果是我们内网的解析结果即可。

image-20250722163732245

2. Linux客户端或服务端

1. 临时修改

1
sudo bash -c 'echo "nameserver 192.168.99.250" > /etc/resolv.conf'

2. 永久修改

  1. 首先查看上网用的网卡
1
ip a

image-20250722164112282

  1. 这里可以发现我的是ens33,然后去网卡的修改配置文件。
1
vim /etc/sysconfig/network-scripts/ifcfg-ens33

增加DNS服务器IP地址即可

1
DNS1 192.168.99.205

image-20250722164255588

  1. 重启网卡即可
1
systemctl restart NetworkManager
  1. 测试解析
1
ping jira.suitbim.com

image-20250722164633137

没有问题

  1. 至此已配置好DNS服务器

3. 配置为内部用户正常登录并取消crowd登录

1. 修改各个软件的数据库root密码

因为后续需要改各个数据库中的管理员密码,所以这里改掉root便于后续查询修改。

通过各类手段确定数据库信息:

1
mysql --version

如果没直接显示则可能docker容器中运行的。

汇总一下信息:

192.168.99.251 mysql Ver 14.14 Distrib 5.7.24, for Linux (x86_64) using EditLine wrapper

192.168.99.252 mysql Ver 15.1 Distrib 5.5.60-MariaDB, for Linux (x86_64) using readline 5.1

192.168.99.253 mysql Ver 14.14 Distrib 5.7.20, for Linux (x86_64) using EditLine wrapper

修改数据库流程

  1. 停止数据库服务
1
2
3
sudo systemctl stop mysql
# 或
sudo systemctl stop mariadb
  1. “跳过授权表”方式启动(安全模式
1
mysqld_safe --skip-grant-tables &
  1. root 用户无密码登录
1
mysql -u root
  1. 修改 root 密码
  • MySQL 5.7+ / 8.0 / MariaDB 新版本
1
2
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
  • 旧版本
1
2
3
FLUSH PRIVILEGES;
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('新密码');

  1. 退出并重启数据库
1
2
3
4
5
6
7
8
9
10
exit

sudo systemctl stop mysql
# 或
sudo systemctl stop mariadb

sudo systemctl start mysql
# 或
sudo systemctl start mariadb

  1. 用新密码验证
1
mysql -u root -p

2. 查看以及确认各个软件配置的数据库信息

jira

1
vim /home/atlassian/application-data/jira/dbconfig.xml

image-20250721171451445

经数据库连接测试后无问题

confluence

1
vim /home/confluence_data/confluence.cfg.xml

image-20250721171323721

经数据库连接测试后无问题

bitbucket

1
vim /data/atlassian/application-data/bitbucket/shared/bitbucket.properties

image-20250721171616776

经数据库连接测试后无问题

这里的plugin.auth-crowd.sso.enabled=true无影响

crowd

1
vim /var/crowd-home/shared/crowd.cfg.xml

image-20250721170204578

经数据库连接测试后无问题

3. 查看以及修改各个软件的SSO配置

jira

1. 修改认证配置文件seraph-config.xml
1
vim /home/atlassian/jira/atlassian-jira/WEB-INF/classes/seraph-config.xml

找到

1
2
3
4
5
6
7
8
9
10
11
<!-- 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 -->

改为

1
2
3
4
5
6
7
8
9
10
<!-- 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 -->
3. 重启jira
1
2
3
cd /home/atlassian/jira/bin
./stop-jira.sh
./start-jira.sh

confluence

1. 修改认证配置文件seraph-config.xml
1
vim /opt/atlassian/confluence/confluence/WEB-INF/classes/seraph-config.xml

这里已经修改好。

找到

1
2
3
4
5
6
7
8
9
10
<!-- 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"/>

改为

1
2
3
4
5
6
7
8
9
10
    <!-- 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"/>
-->
3. 重启confluence
1
2
3
cd /opt/atlassian/confluence/bin
./stop-confluence.sh
./start-confluence.sh

bitbucket

1. 修改bitbucket.properties

在数据目录中找到bitbucket.properties,一般在/var下,也可能被移动或修改,可通过find查找

1
vim  /data/atlassian/application-data/bitbucket/shared/bitbucket.properties

增加一行plugin.auth-crowd.sso.enabled=false

1
2
3
4
5
6
7
8
9
10
11
#>*******************************************************
#> Migrated to database at jdbc:mysql://192.168.99.114:3306/bitbucket?characterEncoding=utf8&useUnicode=true
#> Updated on 2025-07-10T14:31:05.562+08:00
#>*******************************************************
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://192.168.99.114:3306/bitbucket?characterEncoding=utf8&useUnicode=true
jdbc.user=bitbucket
jdbc.password=bitbucket

# 增加以下项目
plugin.auth-crowd.sso.enabled=false
2. 重启
1
2
3
cd /opt/atlassian/bitbucket/7.0.0/bin
./stop-bitbucket.sh
./start-bitbucket.sh

4. 使用初始管理员登录

改密码方式在另一篇中有介绍jira、confluence、bitbucket、基于crowd实现sso | Regen

登录成功则可进行下一步配置。

4. 各个web平台配置SSO

  1. 在各个应用内设置好允许访问的IP和域名

    这里只放jira的配置

    image-20250718111839304

jira 集成crowd

  1. 测试服务器连接

image-20250718112040564

  1. 测试用户

image-20250718112135649

image-20250718112208967

confluence集成crowd

​ 与jira集成crowd操作基本一致

bitbucket集成crowd

​ 与jira集成crowd操作基本一致

Crowd的SSO设置

这一步设置了能够通过SSO登录的二级域名,子域名通过该域名来实现SSO

  1. 进入crowd general 设置

image-20250721145301659

  1. 设置子域名、cookie名字以及base url,确保都是域名而不是IP。

image-20250721145619726

5. 实现SSO

在我使用的版本中,如果允许sso登录,则会停用jira、confluence、bitbucket的管理员账户,因此在实现SSO之前建议给Crowd中的某个用户增加所有的权限便于管理。否则将失去管理员账号。如果忘记添加可以看文末解决方式

配置方法有两种,一种是直接在各个平台为该用户增加最大权限,一种是在各个平台增加一个最大权限用户组,并将该用户添加到该组。

  • 第一种方式(直接在各个平台为该用户增加最大权限)实现方式:

    这里仅以jira为例,其余过程基本一致。

  1. 打开用户管理
  2. 搜索crowd用户并且添加到对应权限组
  • 第二种方式(最大权限用户组,添加该用户)实现方式:

jira实现SSO的配置过程

1. 修改认证配置文件seraph-config.xml

1
vim /home/atlassian/jira/atlassian-jira/WEB-INF/classes/seraph-config.xml

找到

1
2
3
4
5
6
7
8
9
10
11
<!-- 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 -->

将以下内容取消注释

1
2
3
<!-- 
<authenticator class="com.atlassian.jira.security.login.SSOSeraphAuthenticator"/>
-->

改为

1
<authenticator class="com.atlassian.jira.security.login.SSOSeraphAuthenticator"/>

并注释

1
2
3
    <!-- 
<authenticator class="com.atlassian.jira.security.login.JiraSeraphAuthenticator"/>
-->

2. 重启jira

1
2
3
cd /home/atlassian/jira/bin
./stop-jira.sh
./start-jira.sh

confluence实现SSO的配置过程、与jira类似

1. 修改认证配置文件seraph-config.xml

1
vim /opt/atlassian/confluence/confluence/WEB-INF/classes/seraph-config.xml

这里已经修改好。

找到

1
2
3
4
5
6
7
8
9
<!-- 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"/>

将以下内容取消注释

1
2
3
<!-- 
<authenticator class="com.atlassian.confluence.user.ConfluenceCrowdSSOAuthenticator"/>
-->

改为

1
<authenticator class="com.atlassian.confluence.user.ConfluenceCrowdSSOAuthenticator"/>

并注释

1
2
3
     <!-- 
<authenticator class="com.atlassian.confluence.user.ConfluenceAuthenticator"/>
-->

2. 重启confluence

1
2
3
cd /opt/atlassian/confluence/bin
./stop-confluence.sh
./start-confluence.sh

Bitbucket实现SSO的配置过程

1. 修改bitbucket.properties

在数据目录中找到bitbucket.properties,一般在/var下,也可能被移动或修改,可通过find查找

1
vim  /data/atlassian/application-data/bitbucket/shared/bitbucket.properties

增加一行plugin.auth-crowd.sso.enabled=true

1
2
3
4
5
6
7
8
9
10
11
#>*******************************************************
#> Migrated to database at jdbc:mysql://192.168.99.114:3306/bitbucket?characterEncoding=utf8&useUnicode=true
#> Updated on 2025-07-10T14:31:05.562+08:00
#>*******************************************************
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://192.168.99.114:3306/bitbucket?characterEncoding=utf8&useUnicode=true
jdbc.user=bitbucket
jdbc.password=bitbucket

# 增加以下项目
plugin.auth-crowd.sso.enabled=true

2. 重启

1
2
3
cd /opt/atlassian/bitbucket/7.0.0/bin
./stop-bitbucket.sh
./start-bitbucket.sh

6. 验证SSO

  • 分别使用具有admin权限的用户和普通用户登录

1. 测试具有admin权限的用户

  1. 退出已经登录的所有账号

image-20250722134654584

  1. 登录具有admin权限的用户

image-20250722134734142

  1. 测试confluence、bitbucket

image-20250722134814486image-20250722135011804

至此已实现了基于Crowd的jira、confluence、bitbucket三平台SSO。

问题解决

jira、confluence、bitbucket、基于crowd实现sso | Regen