Jiang LiHeng Good is good, but better carries it.

Nexus3 集成 crowd 插件

2020-04-05
jiangliheng
本文 2824 字,阅读全文约需 9 分钟

公司使用的软件开发和协作工具为 Atlassian 系列软件,所以统一使用 crowd 来实现统一登录(SSO)。

crowd 配置

具体操作细节见我之前写的 Atlassian 系列软件安装(Crowd+JIRA+Confluence+Bitbucket+Bamboo)

添加 nexus 用户组

此处的 nx-admin 组为 nexus 默认的管理组。

-w854

添加 nexus 应用

-w1049

注意:“groups” 和 “Remote addresses” 的设置。

安装 nexus3-crowd-plugin 插件

Available in Nexus Repository Manager Pro only

官方 Nexus Pro 直接集成了 Atlassian Crowd 支持,但社区版不支持,需要自己集成开源插件。

插件地址:https://github.com/pingunaut/nexus3-crowd-plugin

插件安装问题

在插件部署过程中,我碰见如下问题:

2020-04-05 16:33:00,792+0800 ERROR [FelixDispatchQueue]  *SYSTEM nexus3-crowd-plugin - FrameworkEvent ERROR - nexus3-crowd-plugin
org.osgi.framework.BundleException: Unable to resolve nexus3-crowd-plugin [49](R 49.0): missing requirement [nexus3-crowd-plugin [49](R 49.0)] osgi.wiring.package; (&(osgi.wiring.package=org.sonatype.nexus.security.authz)(version>=3.20.0)) Unresolved requirements: [[nexus3-crowd-plugin [49](R 49.0)] osgi.wiring.package; (&(osgi.wiring.package=org.sonatype.nexus.security.authz)(version>=3.20.0))]
	at org.apache.felix.framework.Felix.resolveBundleRevision(Felix.java:4132)
	at org.apache.felix.framework.Felix.startBundle(Felix.java:2117)
	at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1371)
	at org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:308)
	at java.lang.Thread.run(Thread.java:748)

解决方法

# 下载插件代码到本地
$ git clone https://github.com/pingunaut/nexus3-crowd-plugin.git

# 修改 pom.xml 内容
$ vi pom.xml
......
<parent>
    <groupId>org.sonatype.nexus.plugins</groupId>
    <artifactId>nexus-plugins</artifactId>
    <!-- 修改 parent 的版本与 nexus3 的版本一致 -->
    <version>3.12.1-01</version>
</parent>
......
<dependency>
    <groupId>org.sonatype.nexus</groupId>
    <artifactId>nexus-plugin-api</artifactId>
    <!-- 注释掉下面这行,把依赖包打入到插件 jar 中 -->
    <!--<scope>provided</scope>-->
</dependency>
......

# 重新编译打包
$ mvn clean package

前提条件

  • JDK 8 is installed
  • Sonatype Nexus OSS 3.x is installed

下载 nexus3-crowd-plugin 插件

$ cd /home/nexus/nexus3/nexus-3.12.1-01/system
$ wget https://github.com/pingunaut/nexus3-crowd-plugin/releases/download/nexus3-crowd-plugin-3.4.2/nexus3-crowd-plugin-3.4.2.jar

将绑定添加到 startup.properties

$ echo "reference\:file\:nexus3-crowd-plugin-3.4.2.jar = 200" >> /home/nexus/nexus3/nexus-3.12.1-01/etc/karaf/startup.properties

配置 crowd.properties

$ echo "# 配置 crowd 的地址
crowd.server.url=http://localhost:8095/crowd/
# 配置 crowd 里该 Application 的名称
application.name=nexus
# 配置 crowd 里该 Application 的密码
application.password=nexus
cache.authentication=false

# optional:
timeout.connect=15000
timeout.socket=15000
timeout.connectionrequest=15000" > /home/nexus/nexus3/nexus-3.12.1-01/etc/crowd.properties

# 重启验证
$ sh /home/nexus/nexus3/nexus-3.12.1-01/bin/nexus restart

nexus 设置

激活插件

-w965

使用 crowd 用户登录

查看 crowd 的用户信息。 -w1381

查看 crowd 的用户详细: -w1045

微信公众号:daodaotest


作者:Jiang LiHeng
原文链接:https://jiangliheng.github.io/2020/04/05/maven-nexus-integration-crowd/
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。


Comments

Content