ldap-1-backend
Go to file Use this template
eryajf 8698850a5a Merge branch 'main' of https://github.com/eryajf/go-ldap-admin 2022-05-29 17:49:16 +08:00
.github/workflows 添加仓库地址以及TOC自动生成 2022-05-18 20:43:02 +08:00
config 1、分组添加OU和CN模式,CN模式调整为:ObjectClasses:groupOfUniqueNames,uniqueMember:uid={username},ou=people,dc={dc},dc={dc} 2022-05-28 22:22:36 +08:00
controller 对齐修复一些错漏内容 2022-05-29 10:06:21 +08:00
docs 对齐修复一些错漏内容 2022-05-29 10:06:21 +08:00
logic 对齐修复一些错漏内容 2022-05-29 10:06:21 +08:00
middleware 对齐修复一些错漏内容 2022-05-29 10:06:21 +08:00
model 1、分组添加OU和CN模式,CN模式调整为:ObjectClasses:groupOfUniqueNames,uniqueMember:uid={username},ou=people,dc={dc},dc={dc} 2022-05-28 22:22:36 +08:00
public 对齐修复一些错漏内容 2022-05-29 10:06:21 +08:00
routes 对齐修复一些错漏内容 2022-05-29 10:06:21 +08:00
service 对齐修复一些错漏内容 2022-05-29 10:06:21 +08:00
svc 对齐修复一些错漏内容 2022-05-29 10:06:21 +08:00
test 对齐修复一些错漏内容 2022-05-29 10:06:21 +08:00
.gitignore 初始提交 2022-05-18 17:57:03 +08:00
LICENSE Initial commit 2022-05-18 17:49:56 +08:00
Makefile 初始提交 2022-05-18 17:57:03 +08:00
README.md chore(docs): update TOC 2022-05-29 02:06:35 +00:00
config.yml 对齐修复一些错漏内容 2022-05-29 10:06:21 +08:00
go-ldap-admin-priv.pem 对齐修复一些错漏内容 2022-05-29 10:06:21 +08:00
go-ldap-admin-pub.pem 对齐修复一些错漏内容 2022-05-29 10:06:21 +08:00
go.mod 对齐修复一些错漏内容 2022-05-29 10:06:21 +08:00
go.sum 初始提交 2022-05-18 17:57:03 +08:00
main.go 对齐修复一些错漏内容 2022-05-29 10:06:21 +08:00
rbac_model.conf 初始提交 2022-05-18 17:57:03 +08:00

README.md

Go-Ldap-Admin

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

Go version Gin version Gorm version License

目录

在线体验

admin / 123456

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

项目地址

分类 GitHub Gitee
后端 https://github.com/eryajf/go-ldap-admin.git https://gitee.com/eryajf-world/go-ldap-admin.git
前端 https://github.com/eryajf/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.7openLDAP-1.4.0phpldapadmin-0.9.0go-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/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/go-ldap-admin.git

# 前端代码
$ git clone https://github.com/eryajf/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欢迎各位朋友一起协同共建

加群

如果你对go-ldap-admin项目感兴趣希望与大家一起交流欢迎添加微信群

如果二维码过期,可通过搜索 eryajf 添加我的微信,备注 ldap 拉你进群。

为什么有这个项目

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

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

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

The short version of the story goes like this: I hate LDAP. I used to love it. But I loved it for all the wrong reasons. LDAP is supported as an authentication solution by many different pieces of software. Aside from its de jure standard status, its wide deployment cements it as a de facto standard as well.

However, just because it is a standard doesn't mean it is a great idea.

I'll admit that given its age LDAP has had a good run. I'm sure its authors carefully considered how to construct the protocol and chose ASN.1 and its encoding with all of wellest of well meaning intentions.

The trouble is that with today's Internet, LDAP is just a pain in the ass. You can't call it from your browser. It's not human readable or easy to debug. Tooling is often arcane and confusing. It's way more complicated than what is needed for most simple authentication-only uses. (Yes, I know there are many other uses than authentication - but it's often too complicated for those too.)

Likely owing to the complexity of the protocol, there seems to be virtually no easy to use library to implement the server side of the LDAP protocol that isn't tied in with some complete directory server system; and certainly not in a language as easy to "make it work" as Go.

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

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