nexus配置ldap

配置nexus

        登录nexus在设置页,点击ldap,

img
参数介绍:

  • Name: 随便写
  • LDAP server address: 支持ldaps和ldap,而端口则取决于配置。 如果没有特殊配置,ldap默认端口是389
  • Search base: 只需要填DC即可,比如DC=example,DC=com。 其它内容,比如CN、OU等,不需要填写
  • Authentication method有以下选项:
    • Simple Authentication
    • Anonymous Authentication
    • DIGEST-MD5
    • CRAM-MD5
              通常选择Simple Authentication即可。Username or DN、Password里填写账户、密码,而 Connection rules无需修改。填写完毕后,点击【Verify connection】按钮,可以验证信息。 如果成功,即可保存。

Choose Users and Groups

        这项故名思义就是配置用户和组的,在最开头的Configuration template中,有四种模板可选:

  • Active Directory
  • Generic Ldap Server
  • Posix with Dynamic Groups
  • Posix with Static Groups

这里选择Generic Ldap Server

  • Base DN 在LDAP中找到用户的基本位置。这是相对于搜索基础的(例如ou = people)。
  • User subtree通常需要勾选。 如果把LDAP的Tree比作目录的话,勾选以后相当于递归查找子目录。
  • User filter通过过滤规则,减少搜索信息,用于提升性能。 仅仅只是提升性能,所以,如果不懂它特殊的匹配规则,也可以不填。
  • 之前选择了Generic Ldap Server模版后,User ID attribute默认为uid,Real name attribute默认为cn、Email attribute默认为mail、Password attribute为空。
  • Map LDAP groups as roles如果不勾选,就不会同步用户组信息。 如果勾选,则可以选择Group type和Group member of attribute。 若无必要,保持默认即可,默认是勾选的。
    img
  • 填写完成后,通过【Verify user mapping】可以验证查询结果
    img
    点击创建
    img

测试

        新起一个窗口利用ldap里面的账号进行登录,可以登录,没有问题,但是登录之后用户没有任何权限,这对于研发来说又是一个不可接受的事情。接下来配置权限

禁止匿名访问

        在实际应用中,是不允许匿名用户不可以登录就能访问的,这样我们ldap就没有任何意义了
img

  • 禁止匿名用户
    img
创建角色

        在Security——>Roles——>Create role,这里创建角色有两种。一种是nexus relos本地角色,一种是External roles mapping外部映射的形式。为了满足我们ldap账户登录进来有浏览库的权限,研发又可以上传第三方依赖库的权限,但是不能删除和私下增加库Repositories。所以这里我们需要单独建立一个本地的relos,然后在映射外部的ldap到这个本地的roles,这样ldap账户登录进来就能实现日常的基本操作。

  • 创建nexus relos本地角色
    img
            创建完成后,我们需要对他赋予权限,对用户进行权限控制,没有权限控制,就没办法达成我们上面的目标。下面是我赋予的权限,可以结合实际需求来进行赋予。

  • 权限介绍:

    • ng-component-upload: 有上传的权限,比如java依赖的一些第三方库,研发可以自己进行上传
    • ng-repository-admin---browse: 浏览所有的repository
    • ng-repository-admin---read: 可以所有读取repository的配置信息
    • ng-repository-view-maven2-maven-central-browse: 具有浏览maven-central内容
    • ng-repository-view-maven2-maven-central-read: 读取maven-central内容,在maven编译的时候具有下载的权限,(后面不一一介绍)
    • ng-repository-view-maven2-maven-public-browse
    • ng-repository-view-maven2-maven-public-read
    • ng-repository-view-maven2-maven-releases-browse
    • ng-repository-view-maven2-maven-releases-read
    • ng-repository-view-maven2-maven-snapshots-browse
    • ng-repository-view-maven2-maven-snapshots-read
    • ng-repository-view-npm-npm-kxl-all-browse: 以下是自己做的npm代理缓存,可以参考之前的nexus3搭建npm私服
    • ng-repository-view-npm-npm-kxl-all-read
    • ng-repository-view-npm-npm-external-browse
    • ng-repository-view-npm-npm-external-read
    • ng-repository-view-npm-npm-internal-browse
    • ng-repository-view-npm-npm-internal-read
    • ng-search-read: 让用户具有所有权限,没有此权限,研发查找一个包,估计会死
  • 创建是External roles mapping外部映射
    img
    img
            在进行Roles ID 这栏目,需要填写的是Users,这个Users会在ldap上同步Users的一个用户组。根据自己的ldap账户组设置来进行填写。下图是ldap的组设置
    img

: 其实在这里我们也可以进行Privileges的权限赋予,但是我选择的是先创建一个本地的nexus relos。然后我们在Roles栏关联之前创建的Developer,完成以后通过ldap账户登录进行测试

测试

        这里主要是从四个方面来测试ldap账户。分别是: 登录默认的权限、浏览所有库的权限、Browse的浏览、Browse库的上传

  • 登录默认的权限
    img

  • 浏览所有库的权限
    img

  • Browse的浏
    img
    img

  • Browse库的上传
    img
    img

坚持原创技术分享,您的支持将鼓励我继续创作!
0%