一、LDAP
LDAP(Lightweight Directory Access Protocol)即轻量目录访问协议,是一个开放、广泛被使用的工业标准(IEFT、RFC),在1993年就被提出。企业级软件也通常具备"支持LDAP"的功能,比如Jira, Confluence, openVPN等,企业也经常采用LDAP服务器来作为企业的认证源和数据源。但是大家比较常见的认识误区是,可以使用LDAP来实现SSO。我们可以先分析一下它的主要功能点或场景:
当LDAP作为数据源时,对外通过LDAP Search以及LDAP Modify协议来进行数据同步;当作为认证源时,通过LDAP Bind协议来进行身份认证。
但是SSO的定义是单次登录(或者只输入一次账号密码)就可以访问多个应用
,本质上是B/S架构的,也就是说需要借助浏览器才能实现SSO功能
,而LDAP更适合于C/S架构的登陆,通过LDAP其实并不能做到SSO,用户必须还得再次输入密码
, LDAP只是提供了统一管理用户/密码的功能(即认证源)
。
所以,LDAP看似适用性比较广,但它真的适合每个企业吗?企业需要先思考几个问题:
使用的应用或系统是否以C/S架构为主?
用LDAP还是其他SSO系统,得取决于对接的应用是B/S架构的还是C/S架构的。比如像OpenVPN这种C/S架构,它本身的登陆是没有浏览器的,所以无法通过SSO协议对接(玉符自己用的VPN、SSH、Wifi等对接的就是LDAP扩展)。因为LDAP是上一个时代的产物,针对典型的C/S软件架构,发明初衷就没有SSO的概念,而是为了存储有层级关系的目录结构,基本不支持现在流行的B/S架构,需要用户重复输入密码。
准备使用什么目录去实现LDAP?开源的还是商业的
实现LDAP协议的服务器有多种选择,例如Active Directory,OpenLDAP,Apache Directory Studio或者其他商业版服务,如果存储的信息量比较大或者对可用性与性能有更高要求,那么是建议用商业版的。
打算投入研发精力去开发新功能吗?
企业人员数量超过50后,很多新的需求就会出现,例如员工自助密码服务(Self-service Password)等,很多LDAP服务器是不自带这些功能的,都需要IT人员找到对应解决方案和实现。
是否有专人去维护?
企业快速增长、组织结构变动,都会带来大量的维护工作量,更不用说这些服务器要的长期维护升级工作。
对安全、加密的需求?
LDAP发明的时候还没有Token的概念,在协议中需要客户端传输明文密码到服务器进行验证,对于现代化的企业部署环境来说,是非常不安全的。
此外,合规、数据可视化等,这些新的企业需求,是LDAP难以达成的。如果只是需要一个类似数据库的多层级存储服务,LDAP则可以充分满足。
二、LDAP如何授权
LDAP存放用户和角色信息,用户和角色之间关系的维护。
不知道你们的授权模块具体是怎么设计的。我们在做的是,ldap存放用户和角色信息,还有用户和角色之间关系的维护。授权是在应用系统中完成的,也就是说应用从LDAP中获取到用户和用户对应的角色,应用系统再根据用户的角色进行授权,比如说用户可以访问的菜单等等。授权无外乎就是一些资源的集合,你能通过用户或者用户的角色获取到这些资源就可以了,至于你怎么运用这些权限资源来控制用户的操作之类的就具体问题具体分析了。
相关文章:
LDAP不等于SSO