拯救 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
项目地址
核心功能
- 基于 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:
- 后端技术栈
-
前端技术栈
- 另外感谢
- go-web-mini:项目基于该项目重构而成,感谢作者的付出。
另外
- 如果觉得项目不错,麻烦动动小手点个⭐️star⭐️!
- 如果你还有其他想法或者需求,欢迎在issue中交流!
- 程序还有很多bug,欢迎各位朋友一起协同共建!
以上是关于拯救 openLDAP 的上古管理界面,我写了一个现代化的 ldap 管理后台 go-ldap-admin的主要内容,如果未能解决你的问题,请参考以下文章