ldap认证
㈠ LDAP是什么
LDAP是轻量目录访问协议,英文全称是Lightweight Directory Access Protocol,一般都简称为LDAP。它是基于X.500标准的,但是简单得多并且可以根据需要定制。
LDAP由互联网工程任务组(IETF)的文档RFC定义,使用了描述语言ASN.1定义。最新的版本是版本3,由RFC 4511所定义。例如,一个用语言描述的LDAP的搜索如:“在公司邮件目录中搜索公司位于那什维尔名字中含有“Jessy”的有邮件地址的所有人。请返回他们的全名,电子邮件,头衔和简述。”
(1)ldap认证扩展阅读:
LDAP-开发方式
如果需要开发一种提供公共信息查询的系统一般的设计方法可能是采用基于WEB的数据库设计方式,即前端使用浏览器而后端使用WEB服务器加上关系数据库。后端在Windows的典型实现可能是Windows NT + IIS + Acess数据库或者是SQL SERVER,IIS和数据库之间通过ASP技术使用ODBC进行连接,达到通过填写表单查询数据的功能;
㈡ 什么是LDAP认证
LDAP是底层数据库,提供用户信息用的,并没有认证功能,认证功能是又Radius完成的,Radius通过查询LDAP数据库,判断用户信息是否匹配。
Ldap是个类似月数据库的东西:
不少LDAP开发人员喜欢把LDAP与关系数据库相比,认为是另一种的存贮方式,然后在读性能上进行比较。实际上,这种对比的基础是错误的。LDAP和关系数据库是两种不同层次的概念,后者是存贮方式(同一层次如网格数据库,对象数据库),前者是存贮模式和访问协议。LDAP是一个比关系数据库抽象层次更高的存贮概念,与关系数据库的查询语言SQL属同一级别。LDAP最基本的形式是一个连接数据库的标准方式。该数据库为读查询作了优化。因此它可以很快地得到查询结果,不过在其它方面,例如更新,就慢得多。
㈢ ldap管理域的验证方式有哪些
要实现如上功能,网上大部分都是用Samba and Winbind结合做的,当然也是可以实现,但是觉得很麻烦,所以不回想采用,答经过努力查找了大量的资料和CU上一高手的指点,终于成功实现了squid通过LDAP来与域认证测试.可以不用windows adam.目前在进一步的研究中.
两种不同的方案实现:
1 使用NTLM或Winbind验证整合Squid及Samba3实现AD域用户认证
2使用Linux LDAP整合Squid 通过Windows AD域进行身份验证
㈣ ldap和kerberos的区别
使用 LDAP 和 Kerberos
在使用 Kerberos 时,在您的本地网络中分发用户信息(如用户 ID、组、主目录)的一种方法就是使用 LDAP。这需要一种强大的身份验证机制来防止包被窃取以及他攻击。一种解决方案是将 Kerberos 也用于 LDAP 通信。
OpenLDAP 通过 SASL(简单身份验证会话层)实现了大部分身份验证功能。SASL 基本上是一种用于身份验证的网络协议。SASL 实施是 cyrus-sasl,它支持许多不同的身份验证方法。Kerberos 身份验证是通过 GSSAPI(通用安全服务 API) 执行的。默认情况下,不安装用于 GSSAPI 的 SASL 插件。请使用 rpm -ivh cyrus-sasl-gssapi-*.rpm 来手动安装它。
为了使 Kerberos 能够绑定到 OpenLDAP 服务器,请创建一个主体 ldap/earth.example.com 并将其添加到 keytab:
默认情况下,LDAP 服务器 slapd 以用户和组 ldap 的身份运行,但只有 root 用户才能读取 keytab 文件。因此,要么更改 LDAP 配置以便使服务器以 root 用户身份运行,要么使组 ldap 可读取 keytab 文件。如果 /etc/sysconfig/openldap 中的 OPENLDAP_KRB5_KEYTAB 变量中指定了 keytab 文件并且 OPENLDAP_CHOWN_DIRS 变量设置成 yes(这是默认设置),则由 OpenLDAP 启动脚本 (/etc/init.d/ldap) 自动执行后一项操作。如果 OPENLDAP_KRB5_KEYTAB 保留为空,则使用 /etc/krb5.keytab 下的默认 keybab 文件,并且您必须如以下描述的那样自己调整优先级。
要以 root 用户身份运行 slapd,请编辑 /etc/sysconfig/openldap。通过在 OPENLDAP_USER 和 OPENLDAP_GROUP 变量前放置一个注释字符来禁用它们。
要使 keytab 对组 LDAP 可读,请执行
chgrp ldap /etc/krb5.keytab
chmod 640 /etc/krb5.keytab
第三个方案(可能是最好的解决方案)是指示 OpenLDAP 使用特殊的 keytab 文件。要完成此操作,启动 kadmin 然后在添加主体 ldap/earth.example.com 后输入以下命令:
ktadd -k /etc/openldap/ldap.keytab ldap/[email protected]
然后,在 shell 上运行:
chown ldap.ldap /etc/openldap/ldap.keytab
chmod 600 /etc/openldap/ldap.keytab
要指示 OpenLDAP 使用不同的 keytab 文件,在 /etc/sysconfig/openldap 中更改以下变量:
OPENLDAP_KRB5_KEYTAB="/etc/openldap/ldap.keytab"
最后,使用 rcldap restart 重启动 LDAP 服务器。
将 Kerberos 身份验证与 LDAP 一起使用
现在应该可以自动将 ldapsearch 等工具与 Kerberos 认证一起使用。
ldapsearch -b ou=people,dc=example,dc=com '(uid=newbie)'
SASL/GSSAPI authentication started
SASL SSF: 56
SASL installing layers
[...]
# newbie, people, example.com
dn: uid=newbie,ou=people,dc=example,dc=com
uid: newbie
cn: Olaf Kirch
[...]
正如您所看到的,ldapsearch 打印一条消息,表示它已经启动 GSSAPI 身份验证。下一条信息无疑颇具隐蔽性,它实际上表明了安全强度系数(缩写为 SSF)是 56(值 56 有些随意,之所以选择这个数字,很可能因为它是 DES 加密密钥中的位数)。这里要告诉您的是 GSSAPI 认证是成功的,并且该加密要用于为 LDAP 连接提供集成保护和机密性。
在 Kerberos 中,身份验证永远是相互的。这意味着不仅您向 LDAP 服务器身份验证自己,而且 LDAP 服务器本身也向您身份验证。这意味着您是与所需的 LDAP 服务器而不是攻击者设置的假冒服务进行通讯。
Kerberos 身份验证和 LDAP 访问控制
现在,允许每个用户修改他们的 LDAP 用户记录的登录壳层属性。假定在您的纲要中 joe 用户的 LDAP 项位于 uid=joe,ou=people,dc=example,dc=com,请在/etc/openldap/slapd.conf 中设置以下访问控制:
# This is required for things to work _at all_
access to dn.base="" by * read
# Let each user change their login shell
access to dn="*,ou=people,dc=example,dc=com" attrs=loginShell
by self write
# Every user can read everything
access to *
by users read
第 2 个语句授予已通过身份验证的用户对他们自己的 LDAP 项的 loginShell 属性进行写访问的权限。第 3 个语句授予所有已通过身份验证的用户对整个 LDAP 目录进行读访问的权限。
这里还有个不太重要的方面未明确,即 LDAP 服务器如何能够得知 Kerberos 用户 [email protected] 与 LDAP 判别名 uid=joe,ou=people,dc=example,dc=com 相对应。这种映射必须使用 saslExpr 指令进行手动配置。在本例中,则是将以下语句添加到 slapd.conf:
authz-regexp
uid=(.*),cn=GSSAPI,cn=auth
uid=$1,ou=people,dc=example,dc=com
要了解它的工作原理,您需要知道,当 SASL 身份验证用户时,OpenLDAP 将使用 SASL 为它指派的名称(如 joe)和 SASL 功能的名称 (GSSAPI) 构成一个判别名。结果是uid=joe,cn=GSSAPI,cn=auth。
如果已经配置了 authz-regexp,它会将第一个参数用作常规表达式来检查从 SASL 信息构成的判别名。如果此常规表达式匹配,就用 authz-regexp 语句的第 2 个参数替换此名称。占位符 $1 被替换为 (.*) 表达式所匹配的子字符串。
可能有更复杂的匹配表达式。如果您的目录结构或纲要更加复杂(其中用户名不是判别名的一部分),则甚至可以使用搜索表达式来将 SASL 判别名映射为用户判别名。
㈤ LDAP认证——如何构造bind DN
binddn需要根据你的数据结构来构造。每个系统都是独特的。
二者之间有一个简单关系,binddn里一定包含basedn
Search Attribute是指你要检索的属性。
㈥ 如何在LDAP中验证用户名的密码
一般用户的属性里面有个userpassword属性,里面存储的是密码,你让用户输入的密码和里面存储的密码进行比对,如果一样就验证过了。不过这个属性里面存储的密码一般都经过散列算法运算,你用同样的散列算法把用户输入的密码也运算一下即可。
㈦ Windows综合认证与LDAP认证有什么区别
LDAP作为一个统一认证的解决方案,主要的优点就在能够快速响应用户的查找需求。比如用户的认证,这可能会有大量的并发。
如果用数据库来实现,由于数据库结构分成了各个表,要满足认证这个非常简单的需求,每次都需要去搜索数据库,合成过滤,效率慢也没有好处。
㈧ 认证系统,如活动目录AD、LDAP、Radius这些,究竟是做什么用的。谢谢你。
AD、LDAP提供目录服务,即类似于企业、人员黄页的东西,用户和组织的信息都被存放在上面,查找起来十分快捷,也可以理解成一种特殊的数据库。
RADIUS是一种C/S结构的协议,它的客户端最初就是NAS(Net Access Server)服务器,现在任何运行RADIUS客户端软件的计算机都可以成为RADIUS的客户端。RADIUS协议认证机制灵活,可以采用PAP、 CHAP或者Unix登录认证等多种方式。RADIUS是一种可扩展的协议,它进行的全部工作都是基于Attribute-Length-Value的向量进行的。RADIUS也支持厂商扩充厂家专有属性。用户接入NAS,NAS向RADIUS服务器使用Access-Require数据包提交用户信息,包括用户名、密码等相关信息,其中用户密码是经过MD5加密的,双方使用共享密钥,这个密钥不经过网络传播;RADIUS服务器对用户名和密码的合法性进行检验,必要时可以提出一个Challenge,要求进一步对用户认证,也可以对NAS进行类似的认证;如果合法,给NAS返回Access-Accept数据包,允许用户进行下一步工作,否则返回Access-Reject数据包,拒绝用户访问;如果允许访问,NAS向RADIUS服务器提出计费请求Account- Require,RADIUS服务器响应Account-Accept,对用户的计费开始,同时用户可以进行自己的相关操作。
㈨ 用LDAP服务器来作用户权限认证有什么优势相比单纯用数据库来存储用户信息。
这就需要说说LDAP的主要优势是什么:
1、查询速度快,贼快,特别是在大数据量的情况下
2、分布式部署方便,远不是数据库所能比的
最大缺点是修改速度慢、不支持事务。
所以需要用数据库做日常管理和存储,用ldap做查询认证
㈩ LDAP到底该怎么验证
Linux类的服务器,都有一个叫ldapclient的程序。设置ldapclient就可以。