jira、confluence、bitbucket、基于crowd实现sso的案例
jira、confluence、bitbucket、基于crowd实现sso的案例
案例简介
这是旧生产环境备份案例:
版本信息
- jira:7.13
- confluence:6.10.0
- bitbucket:7.0.0
- crowd:3.2.1
- mysql:5.7
- jira位于一台服务器
192.168.99.253
数据库也在此服务器,端口为8080- crowd和confluence位于同一台服务器
192.168.99.252
它们的数据库也在此服务器,crowd端口为8095,confluence端口为8090- bitbucket位于一台服务9器
192.168.99.251
数据库也在此服务器,端口为7990整个项目是旧的项目迁移而来。
参考文章jira、confluence、bitbucket、基于crowd实现sso | Regen
思路
因为是新的环境,而且基础信息也已经全部丢失,例如各种账号密码,所以思路是:
- 先满足每个软件能够正常使用内部账户登录使用
- 再连接crowd进行测试
- 最后实现SSO
图:
- 操作目标
- 实现三平台(jira、confluence、bitbucket)的单点登录。
1. 准备工作:
1. 找到各个软件的安装目录和数据目录
jira
- 安装目录
- 数据目录
confluence
- 安装目录
- 数据目录
bibucket
- 安装目录
- 数据目录
crowd
- 安装目录
- 数据目录
2. 停掉还在运行的服务
到对应的bin目录下运行对应脚本即可。
2. 使用内网DNS解析
服务器为Winserver2016,安装DNS服务。
1. 搭建与配置DNS服务器
1. 搭建DNS服务器
- 打开服务器管理器
- 点击添加角色和功能
- 点击下一步-基于角色或基于功能的安装-下一步,选择主机,选择DNS服务器
- 一路下一步最后安装
可能会重启几次
2. 配置DNS解析
- 进入DNS管理器
- 选择正向查找区域,新建区域
- 选择主要区域并下一步
- 输入域名,下一步
- 一路下一步,右键新建的域名选择新建主机(A或AAAA)
- 输入二级域名以及主机名,重复操作即可。
- 最后显示
- 至此已添加所有需要使用到的解析
2. 客户端配置DNS服务器
1. windows客户端
- 控制面板-网络和共享中心-选择联网的以太网连接
- 点击属性后双击IPv4
- 选择DNS服务器并输入
- 至此已添加好DNS解析服务器,。
- 测试一下是否是正确的IP。
第一次是未添加解析之前的结果,后面的为添加解析后的结果。至于为什么两次结果不一样,与DNS解析过程有关,最终结果是我们内网的解析结果即可。
2. Linux客户端或服务端
1. 临时修改
1 | sudo bash -c 'echo "nameserver 192.168.99.250" > /etc/resolv.conf' |
2. 永久修改
- 首先查看上网用的网卡
1 | ip a |
- 这里可以发现我的是ens33,然后去网卡的修改配置文件。
1 | vim /etc/sysconfig/network-scripts/ifcfg-ens33 |
增加DNS服务器IP地址即可
1 | DNS1 192.168.99.205 |
- 重启网卡即可
1 | systemctl restart NetworkManager |
- 测试解析
1 | ping jira.suitbim.com |
没有问题
- 至此已配置好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 | sudo systemctl stop mysql |
- “跳过授权表”方式启动(安全模式
1 | mysqld_safe --skip-grant-tables & |
- root 用户无密码登录
1 | mysql -u root |
- 修改 root 密码
- MySQL 5.7+ / 8.0 / MariaDB 新版本
1 | FLUSH PRIVILEGES; |
- 旧版本
1 | FLUSH PRIVILEGES; |
- 退出并重启数据库
1 | exit |
- 用新密码验证
1 | mysql -u root -p |
2. 查看以及确认各个软件配置的数据库信息
jira
1 | vim /home/atlassian/application-data/jira/dbconfig.xml |
经数据库连接测试后无问题
confluence
1 | vim /home/confluence_data/confluence.cfg.xml |
经数据库连接测试后无问题
bitbucket
1 | vim /data/atlassian/application-data/bitbucket/shared/bitbucket.properties |
经数据库连接测试后无问题
这里的plugin.auth-crowd.sso.enabled=true
无影响
crowd
1 | vim /var/crowd-home/shared/crowd.cfg.xml |
经数据库连接测试后无问题
3. 查看以及修改各个软件的SSO配置
jira
1. 修改认证配置文件seraph-config.xml
1 | vim /home/atlassian/jira/atlassian-jira/WEB-INF/classes/seraph-config.xml |
找到
1 | <!-- CROWD:START - If enabling Crowd SSO integration uncomment the following SSOSeraphAuthenticator and comment out the JiraSeraphAuthenticator below --> |
改为
1 | <!-- CROWD:START - If enabling Crowd SSO integration uncomment the following SSOSeraphAuthenticator and comment out the JiraSeraphAuthenticator below --> |
3. 重启jira
1 | cd /home/atlassian/jira/bin |
confluence
1. 修改认证配置文件seraph-config.xml
1 | vim /opt/atlassian/confluence/confluence/WEB-INF/classes/seraph-config.xml |
这里已经修改好。
找到
1 | <!-- Default Confluence authenticator, which uses the configured user management for authentication. --> |
改为
1 | <!-- Default Confluence authenticator, which uses the configured user management for authentication. --> |
3. 重启confluence
1 | cd /opt/atlassian/confluence/bin |
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. 重启
1 | cd /opt/atlassian/bitbucket/7.0.0/bin |
4. 使用初始管理员登录
改密码方式在另一篇中有介绍jira、confluence、bitbucket、基于crowd实现sso | Regen
登录成功则可进行下一步配置。
4. 各个web平台配置SSO
在各个应用内设置好允许访问的IP和域名
这里只放jira的配置
jira 集成crowd
- 测试服务器连接
- 测试用户
confluence集成crowd
与jira集成crowd操作基本一致
bitbucket集成crowd
与jira集成crowd操作基本一致
Crowd的SSO设置
这一步设置了能够通过SSO登录的二级域名,子域名通过该域名来实现SSO
- 进入crowd general 设置
- 设置子域名、cookie名字以及base url,确保都是域名而不是IP。
5. 实现SSO
在我使用的版本中,如果允许sso登录,则会停用jira、confluence、bitbucket的管理员账户,因此在实现SSO之前建议给Crowd中的某个用户增加所有的权限便于管理。否则将失去管理员账号。如果忘记添加可以看文末解决方式
配置方法有两种,一种是直接在各个平台为该用户增加最大权限,一种是在各个平台增加一个最大权限用户组,并将该用户添加到该组。
第一种方式(直接在各个平台为该用户增加最大权限)实现方式:
这里仅以jira为例,其余过程基本一致。
- 打开用户管理
- 搜索crowd用户并且添加到对应权限组
- 第二种方式(最大权限用户组,添加该用户)实现方式:
jira实现SSO的配置过程
1. 修改认证配置文件seraph-config.xml
1 | vim /home/atlassian/jira/atlassian-jira/WEB-INF/classes/seraph-config.xml |
找到
1 | <!-- CROWD:START - If enabling Crowd SSO integration uncomment the following SSOSeraphAuthenticator and comment out the JiraSeraphAuthenticator below --> |
将以下内容取消注释
1 | <!-- |
改为
1 | <authenticator class="com.atlassian.jira.security.login.SSOSeraphAuthenticator"/> |
并注释
1 | <!-- |
2. 重启jira
1 | cd /home/atlassian/jira/bin |
confluence实现SSO的配置过程、与jira类似
1. 修改认证配置文件seraph-config.xml
1 | vim /opt/atlassian/confluence/confluence/WEB-INF/classes/seraph-config.xml |
这里已经修改好。
找到
1 | <!-- Default Confluence authenticator, which uses the configured user management for authentication. --> |
将以下内容取消注释
1 | <!-- |
改为
1 | <authenticator class="com.atlassian.confluence.user.ConfluenceCrowdSSOAuthenticator"/> |
并注释
1 | <!-- |
2. 重启confluence
1 | cd /opt/atlassian/confluence/bin |
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. 重启
1 | cd /opt/atlassian/bitbucket/7.0.0/bin |
6. 验证SSO
- 分别使用具有admin权限的用户和普通用户登录
1. 测试具有admin权限的用户
- 退出已经登录的所有账号
- 登录具有admin权限的用户
- 测试confluence、bitbucket
至此已实现了基于Crowd的jira、confluence、bitbucket三平台SSO。