拯救 openLDAP 的上古管理界面,我写了一个现代化的 ldap 管理后台 go-ldap-admin

Posted eryajf

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了拯救 openLDAP 的上古管理界面,我写了一个现代化的 ldap 管理后台 go-ldap-admin相关的知识,希望对你有一定的参考价值。

Go-Ldap-Admin

基于Go+Vue实现的openLDAP后台管理项目。

目录

缘起

我曾经经历的公司强依赖openLDAP来作为企业内部员工管理的平台,并通过openLDAP进行各平台的认证打通工作。

但成也萧何败也萧何,给运维省力的同时,ldap又是维护不够友好的。

godap项目中,作者这样描述对ldap的感受:

他说他对ldap又爱又恨,因为ldap出现的最早,许多的三方软件都兼容支持它,它成了这方面的一个标准。但问题在于,它对于维护者而言,又是复杂麻烦的。就算是有phpldapadmin这样的平台能够在浏览器维护,但看到那样上古的界面,以及复杂的交互逻辑,仍旧能够把不少人劝退。

鉴于此,我开发了这个现代化的openLDAP管理后台。

在线体验

演示地址:http://demo-go-ldap-admin.eryajf.net

项目地址

分类 GitHub Gitee
后端 https://github.com/eryajf-world/go-ldap-admin.git https://gitee.com/eryajf-world/go-ldap-admin.git
前端 https://github.com/eryajf-world/go-ldap-admin-ui.git https://gitee.com/eryajf-world/go-ldap-admin-ui.git

核心功能

  • 基于 GIN WEB API 框架,基于Casbin的 RBAC 访问控制模型,JWT 认证,Validator 参数校验
  • 基于 GORM 的数据库存储
  • 基于 go-ldap 库的主逻辑交互
  • 用户管理
    • 用户的增删改查
  • 分组管理
    • 分组的增删改查
    • 分组内成员的管理

快速开始

你可以通过docker-compose在本地快速拉起进行体验。

快速拉起的容器包括:mysql-5.7,openLDAP-1.4.0,phpldapadmin-0.9.0,go-ldap-admin。

服务端口映射如下:

Service Port
MySQL 3307:3306
openLDAP 389:389
phpldapadmin 8091:80
go-ldap-admin 8090:80,8888:8888

拉起之前确认是否有与本地端口冲突的情况。

$ git clone https://github.com/eryajf-world/go-ldap-admin.git

$ cd docs/docker-compose

$ docker-compose up -d

当看到容器都正常运行之后,可以在本地访问:http://localhost:8090,用户名/密码:admin/123456

登录页:

首页:

用户管理:

分组管理:

分组内成员管理:

本地开发

前言准备

前提是已准备好MySQL与openLDAP,本地开发建议直接通过docker拉起即可,可参考文档:https://wiki.eryajf.net/pages/3a0d5f

拉取代码

# 后端代码
$ git clone https://github.com/eryajf-world/go-ldap-admin.git

# 前端代码
$ git clone https://github.com/eryajf-world/go-ldap-admin-ui.git

后端目录结构:

├─config     # viper读取配置
├─controller # controller层,响应路由请求的方法
├─docs       # 一些物料信息
├─logic      # 主要的处理逻辑
├─middleware # 中间件
├─model      # 结构体模型
├─public     # 一些公共的,工具类的放在这里
├─routes     # 所有路由
├─service    # 整合与底层存储交互的方法
├─svc        # 定义入参出参的结构体
└─test       # 跑测试用的

更改配置

# 修改后端配置
$ cd go-ldap-admin
# 文件路径 config.yml
$ vim config.yml

# 根据自己本地的情况,调整数据库以及openLDAP的配置信息。

启动服务

# 启动后端
$ cd go-ldap-admin
$ go mod tidy
$ go run main.go
$ make run

# 启动前端
$ cd go-ldap-admin-ui
$ yarn
$ yarn dev

本地访问:http://localhost:8090,用户名/密码:admin/密码是配置文件中openLDAP中admin的密码

生产部署

生产环境单独部署,通过nginx代理服务,配置如下:

server 
    listen 80;
    server_name go-ldap-admin.eryajf.net;

    root /data/www/web/dist;

    location / 
        try_files $uri $uri/ /index.html;
        add_header Cache-Control no-store;
    

    location /api/ 
        proxy_set_header Host $http_host;
        proxy_set_header  X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass http://127.0.0.1:8888;
    

感谢

感谢如下优秀的项目,没有这些项目,不可能会有go-ldap-admin:

另外

  • 如果觉得项目不错,麻烦动动小手点个⭐️star⭐️!
  • 如果你还有其他想法或者需求,欢迎在issue中交流!
  • 程序还有很多bug,欢迎各位朋友一起协同共建!

以上是关于拯救 openLDAP 的上古管理界面,我写了一个现代化的 ldap 管理后台 go-ldap-admin的主要内容,如果未能解决你的问题,请参考以下文章

上古神器——Vim使用技巧

蚂蚁森林拯救能量之AutoJs实现

蚂蚁森林拯救能量之AutoJs实现

蚂蚁森林拯救能量之AutoJs实现

Centos7 搭建openldap完整详细教程(真实可用)

联想拯救者安装不了quicktime