Docker 创建 Crowd3.3.2 以及打通 Jira Software7.12.3和Confluence6.12.2 SSO 单点登录
目录
- 目录
- 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
Docker 创建 Crowd3.3.2 以及打通 Jira Software7.12.3和Confluence6.12.2 SSO 单点登录的更多相关文章
- Docker 创建 Bamboo6.7.1 以及与 Crowd3.3.2 实现 SSO 单点登录
目录 目录 1.介绍 1.1.什么是 Bamboo? 2.Bamboo 的官网在哪里? 3.如何下载安装? 4.对 Bamboo 进行配置 4.1.获取授权许可 4.2.一般配置 4.3.数据库配置 ...
- GitLab11.3.9 使用 Crowd3.3.2 的帐号实现 SSO 单点登录,以及GitLab配置腾讯企业邮箱
GitLab11.3.9 的安装方法: 点击查看. Crowd3.3.2 的安装方法:点击查看. 需要先在 Crowd 创建应用程序,参考 <Docker 创建 Crowd3.3.2 以 ...
- Docker 创建 Crucible4.6.1 以及与 Crowd3.3.2 实现 SSO 单点登录
目录 目录 1.介绍 1.1.什么是 Crucible? 2.Crucible 的官网在哪里? 3.如何下载安装? 4.对 Crucible 进行配置 4.1.破解 Crucible 第一步 4.2. ...
- Docker 创建 Jira Core(Jira SoftWare) 7.12.3 中文版
目录 目录 1.介绍 1.1.什么是 JIRA Core? 1.2.什么是 JIRA SoftWare 2.JIRA 的官网在哪里? 3.如何下载安装? 4.对 JIRA 进行配置 4.1.JIRA ...
- Docker创建JIRA 7.2.4中文破解版
目录 目录 1.介绍 1.1.什么是JIRA? 2.JIRA的官网在哪里? 3.如何下载安装? 4.对JIRA进行配置 4.1.打开浏览器:http://localhost:20012 4.2.JIR ...
- docker创建私有仓库
由于网速和大中华局域网效果,使得我们在DockerHub下载镜像的速度很慢,甚至一些国内的镜像仓库,也感觉速度不是很好.所以,很有必要在本地或者一个我们访问很快速的地方(自己的云服务器)搭建一套镜像仓 ...
- [工具] 分布式系统下批量创建用户及分发公钥打通ssh通道的脚本
在分布式系统下偶尔会有这样的需求,要增加一个服务时,需要在集群的所有节点上创建同一个用户,然后打通ssh通道,再分发软件包.配置.执行命令.启动服务... 这个问题的根源是如何集中配置和管理系统,专业 ...
- Docker创建支持ssh服务的容器和镜像
原文链接:Docker创建支持ssh服务的容器和镜像 1. 这里使用的centos作为容器,所以首先下载centos的images # sudo docker pull centos 2. 下载后执行 ...
- Docker创建MySQL集装箱
原文链接:Docker创建MySQL集装箱 这样做的目的是创建一个MySQL的image,出来的容器里自己主动启动MySQL服务接受外部连接 步骤: 1. 首先创建一个文件夹并在文件夹下创建一个Doc ...
随机推荐
- PAT1093: Count PAT's
1093. Count PAT's (25) 时间限制 120 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CAO, Peng The strin ...
- ActiveMQ的使用
ActiveMQ使用分为两大块:生产者和消费者 一.准备 项目导入jar包:activemq-all-5.15.3.jar 并buildpath 二.生产者 创建连接工厂 ActiveMQCon ...
- SSL WSS HTTPS
SSLSSL(Secure Socket Layer,安全套接层) 简单来说是一种加密技术, 通过它, 我们可以在通信的双方上建立一个安全的通信链路, 因此数据交互的双方可以安全地通信, 而不需要担心 ...
- Spring Cloud authentication with JWT service
@RequestMapping(value = "/authenticate", method = RequestMethod.POST) public ResponseEntit ...
- SpringBoot编写自定义的starter 专题
What’s in a name All official starters follow a similar naming pattern; spring-boot-starter-*, where ...
- PuTTY/终端使用复制、粘贴
Putty鼠标按钮选项 通过鼠标按钮选项可以控制鼠标来进行复制.粘贴操作,选项包括: 1.Windows选项: 2.混合模式(系统默认选项): 3.Xterm模式. 以上是三种模式选项的简单介绍,下面 ...
- latex中长公式换行,很好的办法
今天在编辑公式时,有一个公式很长,写到一行就出去了.当时之前换行都是方程组或者在括号完之后换,都没有问题.但是今天我也换行的是在括号中间断开.这样出现问题,编辑的时候会出错误提醒.上网查了一些论坛,也 ...
- 教小朋友学Linux
Linux最基础之<小朋友也能学会Linux>... 1.Linux 知识积累: Linux 英文解释为 Linux is not Unix.学习Linux必须要熟练使用的操作系统是Cen ...
- Linux下*.tar.gz/.tar.bz2 文件解压缩安装命令
1. .tar.gz压缩命令: 命令格式: tar -zcvf 压缩文件名.tar.gz 被压缩文件名 可先切换到当前目录下.压缩文件名和被压缩文件名都可加入路径. 2. .tar.gz解压缩命令: ...
- Oracle中的decode()函数
一.decode()函数 1.语法 DECODE(control_value,value1,result1[,value2,result2-][,default_result]); control _ ...