go-ldap-admin

现代化管理后台
授权协议 GPL
开发语言 Google Go
所属分类 Web应用开发、 后台管理系统(模板)
软件类型 开源软件
地区 不详
投 递 者 邢曦
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

go-ldap-admin 旨在为 openLDAP 服务端提供一个简单易用,清晰美观的现代化管理后台。

在完成针对openLDAP的管理能力之下,我们希望平台能够成为企业IM与应用之间的桥梁,亦即,对钉钉,企业微信,飞书的集成,用户可以选择手动或者自动同步组织架构以及员工信息到平台中,让go-ldap-admin项目成为打通企业IM与企业内网应用之间的桥梁。

官方文档:http://ldapdoc.eryajf.net

架构简图如下:

  • 用户可以手动在go-ldap-admin平台上维护员工以及部门分组数据。
  • 用户可以选择通过钉钉,飞书,企业微信自动将企业IM的组织架构以及员工信息同步到平台上。
  • 平台上的数据呈现均来自于MySQL,如有数据添加或者修改,则会先操作MySQL,再操作openLDAP,平台将保障二者数据的一致性。
  • 企业内网应用基于openLDAP进行认证,可以通过人员这个ou,也可以通过具体的某个分组,具体实践根据场景自行定制。

在线体验

提供在线体验地址如下:

分类 地址 用户名 密码
go-ldap-admin http://demo-go-ldap-admin.eryajf.net admin 123456
phpLdapAdmin http://demo-go-ldap-admin.eryajf.net:8091/ cn=admin,dc=eryajf,dc=net 123456

在线环境可能不稳,如果遇到访问异常,或者数据错乱,请联系我进行修复。

代码托管

分类 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

快速搭建

可参考:docker-compose在本地快速拉起测试环境

为什么有这个项目

我曾经经历的公司强依赖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管理后台。

基本概念

用户管理

提供用户员工层面基础信息的增删改查的维护。

默认情况下,我们提供的是类似如下dn的用户:

uid=zhangsan,ou=people,dc=eryajf,dc=net

这也是标准的用户维度管理信息的方式,看到网上也有同学将用户以cn的方式进行维护,此处并不苟同,因此也暂不会支持多维度。

分组管理

提供组织架构部门,分组等维度的增删改查的维护。部门属于分组内的一个维度,不再单独拆表实现。

目前部门支持如下两种dn:

ou=jenkins,dc=eryajf,dc=net
cn=prod-admin,ou=jenkins,dc=eryajf,dc=net

通常第一层级的ou来区分不同功能方向的分组,注意ou属性的分组下不能添加人员。

第二层级或者更深层级的分组,则建议统一使用cn表示,以便于组内成员的维护。

主要功能

功能介绍部分我将从基础功能与核心功能两方面来介绍。

基础功能

基础功能,包括如下能力:

  • 接口管理:提供接口动态增删改查管理的能力。
  • 菜单管理:提供菜单动态增删改查管理的能力。前端菜单通过后端接口返回进行渲染。
  • 角色管理:基于Casbin的 RBAC 访问控制模型,实现用户与角色绑定的权限隔离。
  • 操作日志:提供平台操作记录审计的能力。

核心功能

当下达到v0.1.0版本,主要核心功能如下:

  • 用户管理
    • 用户的增删改查
    • 用户密码修改的两种方式
      • 在个人中心通过原密码新密码进行重置
      • 在首页忘记密码处通过邮箱由系统生成一个随机密码。
    • 员工离职一键从平台禁用,并保留用户信息,如果二次入职公司,还可以一键将用户恢复。
  • 分组管理
    • 分组的增删改查
    • 分组内成员的管理
  • 同步管理
    • 钉钉组织架构以及员工信息的同步能力

功能概览

登陆页

  • 登录页背景图秉持go-ldap-admin项目定位,以一座抽象的高架桥梁作为背景。

  • 注意红框中的忘记密码,此处是普通用户在忘记密码的情况下,可通过输入邮箱对密码进行重置,重置成功之后,系统会自动生成密码,并发送到用户邮箱。

    • 部分公司的企业邮箱也是基于ldap进行认证的,那么这里可能会是个死循环,目前暂时不兼容考虑这种情况,后续如果这个场景的需求比较多,可以考虑再集成其他收信方式。

    以上方式是用户忘记密码之后的自助修改密码方式,还有一种修改密码方式,是用户登录个人账号之后,在个人中心,通过输入原密码以及新密码进行密码重置。

首页

目前首页中红框部分内容仅作为占位,并无实际数据含义。

用户管理

分组管理

  • 今天在这里写一些Golang怎么连接ldap golang的ldap包有一些,我使用的是 go get -u "gopkg.in/ldap.v2" 我的ldap环境:    rootdn:  uid=admin,dc=wjq,dc=com     password: openldap dn: dc=wjq,dc=com dc: wjq objectClass: top objectClass: d

  • If you want to use PHP with ldap. You have to add the extension lib.(ldap.so) Go to the install file of PHP. $ cd /opt/php-5.4.5/ext/ldap/ $ /usr/local/bin/phpize $ ./configure --with-php-config=/usr/

  •    网上找了好多关于LDAP统一账户管理的文件,好多都是粘贴复制,能用得上的少之又少,正好最近又用到这个,于是着手看了郭老师的视频,顺便把自己学习的过程记录下来,供大家学习参考。 1、实验环境: [root@localhost ~]# cat /etc/redhat-release  CentOS Linux release 7.2.1511 (Core) [root@localhost ~]#

  • FTP 协议 FTP(File Transfer Protocol,文件传输协议) 是 TCP/IP协议组中的协议之一。 FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端。 其中FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源。 在开发网站的时候,通常利用FTP协议把网页或程序传到Web服务器上。 此外,由于FTP传输效率非常

  • javax.naming.AuthenticationException: [LDAP: error code 49 - Invalid Credentials] at com.sun.jndi.ldap.LdapCtx.mapErrorCode(LdapCtx.java:3154) at com.sun.jndi

  • 简介 场景:写了个定时任务,每天下午5点根据HR数据对全量LDAP用户作更新,因为LDAP协议是一种可以快速读但修改操作慢的协议,因此定时任务执行时间会很长。于是决定并发地对全量用户进行更新,假设并发数是20,那么一次性会开始创建20个LDAP连接,因为LDAP连接速度较慢,会报错LDAP Result Code 200 \"Network Error\": ldap: connection is

 相关资料
  • 如何优雅的写代码,我想是每位程序员的心声。自从15年初第一次接触 Laravel 4.2 开始,我就迷上使用 Laravel 框架了。我一直都想找个时间好好写写有关 Laravel 的使用文章,由浅入深的介绍 Laravel 框架。 今天通过使用 laravel-admin 插件,来简单说说怎么优雅的写 Laravel 代码。 创建 Laravel 项目 只要跟着官方文档走,创建一个 Larave

  • Django 提供了基于 web 的管理工具。 Django 自动管理工具是 django.contrib 的一部分。你可以在项目的 settings.py 中的 INSTALLED_APPS 看到它: /HelloWorld/HelloWorld/settings.py 文件代码:INSTALLED_APPS = ( 'django.contrib.admin', 'django.contrib

  • vue-go-admin 是一款 vue3+gin 构建的后台管理系统。 介绍 前端使用vue3,后端使用gin构建 使用最新技术栈构建,保持更新 在线预览地址: 地址 账号: test 密码: test 完成 用户管理 <> 关联角色 角色管理 <> 关联菜单 菜单管理 部门管理 动态路由 - 按钮权限 未来计划 nodejs版本 后台

  • 在本章中,我们将研究Grav中的Administrative Panel Dashboard 。 仪表板充当Grav管理面板插件的信息神经中枢。 您可以检查traffic statistics , create new backups , Grav updates , maintenance information ,查看最新页面更新,还可以借助此单页清除Grav缓存。 Step 1 - 您可以指

  • 概要设计 1、创建、发送、停止同步任务; 2、创建、抓取同步工作节点; 3、抓取、整合节点统计数据与实时数据并做页面展示; 4、抓取、整合任务统计数据与实施数据并做页面展示; 5、抓取告警日志并做页面展示; 6、收集、整合数据推送到中间件。 名词须知 数据源:数据存储位置,现启用kafka、jdbc、canal三种类型; 数据表组:

  • 本文向大家介绍django admin 后台实现三级联动的示例代码,包括了django admin 后台实现三级联动的示例代码的使用技巧和注意事项,需要的朋友参考一下 在刚进公司的时候,要写一个需求,使用django的admin站点管理,实现一个二级联动的功能,因为要用到django自带的页面,因为不是自定义的,不能直接添加js代码。根据我自己的研究简单的记录一下大概步骤。 项目创建流程略过,这里