31
2024
01
22:11:31

什么情况适合使用LDAP?



推荐点击下面图片,通过本站淘宝优惠价购买:

image.png

为什么很多大公司使用LDAP而不是关系型数据库进行用户管理?什么情况下使用LDAP比使用关系型数据库更好?


你基于 SQL 数据库也要重新发明一套从 SQL 映射出树形结构并进行查询的方式你基于 Web 也好 HTTP 也好还是需要重新定义一套 API 去查询树形的层级数据LDAP 是一个被广泛支持的、用于存储和查询树形结构的协议,它的价值就是「广泛接受的标准」在一个没有闭源商业系统必须通过 LDAP (以及 Kerberos、Radius 等等等等)整合的理想环境里你当然可以全部走 web 协议,比如全套 Google Apps + OAuth 认证连接 GitHub 的 web IDE 什么的——楼上某位要是活在这样的环境请允许我羡慕一下。


统—身份认证单点登录

单点登录: (Single Sign On),简称为SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。


单点登录网络生活中随处可见,比如登录了QQ客户端,然后你可以打开腾讯微博,QQ空间,QQ邮箱,校友录等等一系列的应用,这时候我们不需要在一个个再输入用户名和密码了,作为受信任的站点,就可以直接登录了。这些我们都已经习以为常了,其实这就是单点登录的例子,离我们一点都不遥远。但作为一个开发者,不只是要使用其功能,更要明白其原理并开发出支持单点登录的应用出来。


需求

从个人的角度

入职后每个人会接触多个系统,项目管理系统,需求管理系统,代码仓库,持续集成,文件服务器,有八个系统就有八个密码,每个系统用一个密码安全隐患较大,每个系统都用不同的密码也不容易记住。


从管理角度

公司需要一个统一认证系统,自助分配权限系统,定期审计,集中分配与追踪所有权限,便于记录。没有的后果,操作与安全问题无法追溯,工作效率低。会占用大量人力去添加账户。建议建立统一认证系统与自助分配权限的系统。人员复杂与传统公司不同我们人员不固定流动性较大更需要整体把握与权限,而且需要定期审计。多项目情况下人员变动更为复杂。解决方案通过openldap或者ad进行权限划分配合一定的二次开发,为什么不建议分组分散到各个系统,添加人员与迁移成本非常高。


单点登录(Sso)

为用户提供一组用户名和密码来登录需要访问的所有应用,让他们的生活更加轻松。无缝集成Nginx,Ftp,Gitlab,Jenkins,Jira、Confluence和 Bitbucket等所有产品,为用户提供单点登录(SSO)体验。


集中多个目录

如果公司属于集团或者已有统一认证,windowsad或ldap需要集成多个已有目录,将任意目录组合映射到单个应用(非常适用于管理不在主目录中的用户),然后在同一位置管理身份验证权限。开始使用适用于AD、LDAP、Microsoft Azure AD、Novell eDirectory等的连接器。您甚至可以创建自己的自定义连接器。


Ldap协议

市面上只要你能够想像得到的所有工具软件,全部都支持LDAP协议。比如说你公司要安装一个项目管理工具,那么这个工具几乎必然支持LDAP协议,你公司要安装一个bug管理工具,这工具必然也支持LDAP协议,你公司要安装一套软件版本管理工具,这工具也必然支持LDAP协议。


LDAP协议的好处就是你公司的所有员工在所有这些工具里共享同一套用户名和密码,来人的时候新增一个用户就能自动访问所有系统,走人的时候一键删除就取消了他对所有系统的访问权限,这就是LDAP。


LdapServer方案

公司搭建LDAP Server的几个方案。crowd3


什么是Crowd?


以下是来自官网的介绍:


为什么考虑crowd3?


Atlassian产品中最知名的就是confluence和jira。confluence和jira易用性和专业性。收费较高,公司使用不建议使用破解版本。有webui易用性较强。


Freeipa


FreelPA是一款集成的安全信息管理解决方案。FreelPA包含Linux (Fedora),389 Directory ServerMIT Kerberos,NTP, DNS,Dogtag (Certificate System)等等身份,认证和策略功能。搭建可以用Redhat,Fedora,Centos搭建。有webui但是专业性较强,配置复杂。


Openldap


openLDAP,这个比较著名,yum可以直接安装。openIldap开发用c和c++实现的。配置较为复杂为命令式的配置。可以采用docker搭建。无webui使用复杂。可以采用docker搭建,apt搭建,yum搭建,编译搭建。


Appacheds


Appacheds提供客户端与server端。Appacheds为java实现。


WindowsAD


WindowsAD是一个常见方案,Windows Server也是一个常见方案。Windows Ad可以快速通过windows Server搭建统─认证还可以同时管理笔记本。


ldap客户端方案


PhpLDAPAdmin


是web版本的ldap客户端用web管理较为方便。


Apache Directory Studio

java版本客户端。


LDAP Admin


LdapAdmin是一个常用的客户端界面较为简单。


选型对比后的结果


crowd3收费,openIdap过于简陋,freeipa过于复杂。WindowsAD管理windows电脑,Appacheds管理openldap相关认证。


能够管理来自多个目录(Active Directory、LDAP、OpenLDAP 或 Microsoft Azure AD)的用户,并在一个位置控制应用身份验证权限。


第一个原因是LDAP是x500标准协议,商业数据库的驱动要复杂的多,在过去没有webservice之类的东西,异构访问兼容是个问题。你用mysql,那个用oracle,到底用谁,我用的开发语言要是没有相应的数据库驱动是不是就废了?


ldap不只是提供数据访问,更重要的是提供了标准数据模型schema,这使得异构复杂系统共享数据更加方便,当然少数情况当标准schema不满足你也可以根据业务需要扩展schema。而传统数据库要自己建表,怎么建,什么结构,存什么,没有统一的标准可以参考。


ldap是树形数据模型的,可以满足复杂的数据访问更简单快速。sql数据库是二维表结构,无法满足这种情况。


ldap本身就是索引结构,访问速度非常快,开销也很小,更新较慢。数据库你要自己建立索引,没索引就超慢。


ldap没有事务,对外只提供查询,管理者可以进行更新,因此集群部署非常简单,数据库有事务支持,集群部署和数据同步有非常复杂的要求。


最典型的ldap应用就是整合异构认证系统,存组织机构内的账号权限之类的东西,为其他各种软硬件提供统一数据访问入口。

————————————————



本文链接:https://hqyman.cn/post/4972.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

分享到:





休息一下,本站随机推荐观看栏目:


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

您的IP地址是: