知识就是力量,时间就是生命。这篇文章主要讲述拯救 openLDAP 的上古管理界面,我写了一个现代化的 ldap 管理后台 go-ldap-admin相关的知识,希望能为你提供帮助。
Go-Ldap-Admin基于Go+Vue实现的openLDAP后台管理项目。
目录
- Go-Ldap-Admin
- 缘起
- 在线体验
- 项目地址
- 核心功能
- 快速开始
- 本地开发
- 生产部署
- 感谢
- 另外
但成也萧何败也萧何,给运维省力的同时,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 库的主逻辑交互
- 用户管理
- 用户的增删改查
- 分组管理
- 分组的增删改查
- 分组内成员的管理
快速拉起的容器包括: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_headerX-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:
- 后端技术栈
- Gin-v1.6.3
- Gorm-v1.20.12
- Go-ldap-v3.4.2
- Casbin-v2.22.0
- 前端技术栈
- element-ui
- axios
- 另外感谢
- go-web-mini:项目基于该项目重构而成,感谢作者的付出。
- 如果觉得项目不错,麻烦动动小手点个??star??!
- 如果你还有其他想法或者需求,欢迎在issue中交流!
- 程序还有很多bug,欢迎各位朋友一起协同共建!
推荐阅读
- 自动化运维工具AnsiblePlaybook
- Android中的Firebase数据描述排序
- 调用getText()不在Android应用程序中编译
- 来自Postman的回复显示200,但Android返回403
- Android Google登录失败com.google.android.gms.common.api.ApiException(12500)
- 无法找到com.android.tools.build:gradle:2.3.+的任何匹配项
- 在React App中使用或不使用PouchDB加载预构建的SQlite数据库的正确方法是什么
- upsert方法的Android sqlite语法错误
- 将用户输入编辑文本与SQLite数据库Android Java进行比较