作为开发人员,我们有时需要查询 LDAP。你知道这个任务的有用工具吗?
编辑:我的意思不是在代码中,我的意思是实用程序/工具(命令行或 gui,主要是 gui)只是为了查看/确认数据,或者如果可能的话改变......
在过去的几天里,我设置了一些带有 LDAP 身份验证的 Linux 系统,一切正常,但是经过大量研究,我仍然无法真正理解 NSS 和 PAM。
引用:
NSS 允许管理员指定将存储和搜索身份验证文件、主机名和其他信息的源列表
和
PAM 是一组库,为应用程序和底层操作系统提供可配置的身份验证平台
我不明白的是 PAM 和 NSS 如何一起工作和交互。在这本书的架构是解释得很好:我PAM配置为使用pam_ldapLDAP的帐户和pam_unix本地帐户,然后我配置nsswitch.conf来从本地文件和LDAP信息。
如果我理解正确,LDAP 使用了两次:首先pam_ldap由 NSS使用,然后由 NSS 调用,它本身从pam_unix. 那正确吗?LDAP 真的使用了两次吗?但是为什么我需要同时配置 NSS 和 PAM?我的解释是 PAM 执行与 NSS 不同的任务,它被其他程序使用。但是,正如我在本页中所读到的那样,应该可以仅使用 NSS 或仅使用 PAM 。
所以我进行了一些试验,我首先尝试从nsswitch.conf(并且身份验证停止工作,好像只有 pam_ldap 不足以完成这项工作)中删除 LDAP 。然后我在 NSS 中重新启用了 LDAP,并从 PAM 配置中删除了它(这次一切正常,好像pam_ldap没用一样,而且 NSS 足以验证用户的身份)。
有没有人可以帮我澄清一下?提前谢谢了。
我现在刚刚尝试了一些东西。我再次删除了所有pam_ldappam 配置字段中的所有条目,并且还shadow: ldap从 …
我是与 LDAP 集成以进行身份验证的产品的开发人员。我需要设置一个可以测试的目录。
我不是 LDAP 专家。为了帮助缓解学习曲线,拥有一个真实世界的示例目录会很有用。
是否有任何资源可以帮助我设置演示目录,随时可用?例如,VMware 设备?
我有一个 .net Web 应用程序,它需要获取用户在 Active Directory 中所属的组。
为此,我在用户记录上使用 memberOf 属性。
我需要知道在所有用户记录上读取此属性所需的权限。
目前,我在尝试读取此属性时得到不一致的结果。例如,我在同一 OU 路径中有一个由 30 个用户组成的用户组。使用我自己的凭据查询 AD - 我可以读取某些用户的 memberOf 属性,但不能读取其他用户的属性。我知道所有用户都设置了 memberOf 属性,因为我在使用域管理员帐户登录时进行了检查。
我已经使用以下设置进行 LDAP 身份验证
AuthName "whatever"
AuthType Basic
AuthBasicProvider ldap
AuthLDAPUrl "ldap://server/OU=SBSUsers,OU=Users,OU=MyBusiness,DC=company,DC=local?sAMAccountName?sub?(objectClass=*)"
Require ldap-group CN=MySpecificGroup,OU=Security Groups,OU=MyBusiness,DC=company,DC=local
Run Code Online (Sandbox Code Playgroud)
这有效,但是我必须将所有要进行身份验证的用户放入MySpecificGroup. 但是在我配置的 LDAP 服务器上,MySpecificGroup它还包含MyOtherGroup具有另一个用户列表的组。
但是那些用户MyOtherGroup没有经过身份验证,我必须手动将它们全部添加到MySpecificGroup并且基本上不能使用嵌套分组。我使用的是 Windows SBS 2003。
有没有办法配置 Apache LDAP 来做到这一点?或者是否存在可能无限递归的问题,因此不允许?
我应该如何传递密码以ldapsearch使用该-y <password file>选项?
如果我以纯文本形式在密码文件中写入密码,则会出现此错误:
ldap_bind: Invalid credentials (49)
additional info: 80090308: LdapErr: DSID-0C0903AA, comment: AcceptSecurityContext error, data 52e, v1772
Run Code Online (Sandbox Code Playgroud)
如果我使用该-w <password>选项,也会发生同样的情况。
编辑:
我正在运行的命令是
ldapsearch -x -D <my dn> -y .pass.txt -h server.x.x -b "dc=x,dc=y" "cn=*"
Run Code Online (Sandbox Code Playgroud)
文件.pass.txt包含我的密码的地方,以纯文本形式。DN 和密码都正确。如果我使用该-W选项运行命令并在提示符下键入密码,则该命令会成功运行,但我想以某种方式存储密码以制作脚本。
我对 LDAP 比较陌生,已经看到了两种如何设置结构的示例。
一种方法是使用基础是:dc=example,dc=com而其他示例的基础是o=Example。继续下去,您可以拥有一个如下所示的组:
dn: cn=team,ou=Group,dc=example,dc=com
cn:团队
对象类:posixGroup
成员标识:user1
成员标识:user2
...或使用“O”样式:
dn:cn=团队,o=示例
对象类:posixGroup
成员标识:user1
成员标识:user2
我的问题是:
到目前为止,我已经采用了这种dc=example,dc=com风格。社区可以就此事提供的任何建议将不胜感激。
我目前正在将 LDAP 身份验证集成到系统中,我想限制基于 LDAP 组的访问。做到这一点的唯一方法是通过搜索过滤器,因此我相信我唯一的选择是在我的搜索过滤器中使用“memberOf”属性。我的理解是“memberOf”属性是一个操作属性,可以由服务器为我创建任何时候为服务器上的任何“groupOfNames”条目创建新的“成员”属性。我的主要目标是能够将“成员”属性添加到现有的“groupOfNames”条目,并将匹配的“memberOf”属性添加到我提供的 DN。
到目前为止我已经成功实现了:
我对 LDAP 管理还是很陌生,但根据我在 openldap 管理员指南中的发现,反向组成员身份维护(也称为“成员覆盖”)似乎可以达到我正在寻找的效果。
我的服务器当前正在运行 openldap 2.4.15 的软件包安装(在 ubuntu 上为 slapd),它使用“cn=config”样式的运行时配置。我发现的大多数示例仍然引用了旧的“slapd.conf”静态配置方法,并且我已尽力使配置适应新的基于目录的模型。
我添加了以下条目以启用 memberof 覆盖模块:
使用 olcModuleLoad 启用模块
cn=config/cn\=module\{0\}.ldif
dn: cn=module{0}
objectClass: olcModuleList
cn: module{0}
olcModulePath: /usr/lib/ldap
olcModuleLoad: {0}back_hdb
olcModuleLoad: {1}memberof.la
structuralObjectClass: olcModuleList
entryUUID: a410ce98-3fdf-102e-82cf-59ccb6b4d60d
creatorsName: cn=config
createTimestamp: 20090927183056Z
entryCSN: 20091009174548.503911Z#000000#000#000000
modifiersName: cn=admin,cn=config
modifyTimestamp: 20091009174548Z
Run Code Online (Sandbox Code Playgroud)
为数据库启用覆盖并允许它使用它的默认设置(groupOfNames、member、memberOf 等)
cn=config/olcDatabase={1}hdb/olcOverlay\=\{0\}memberof
dn: olcOverlay={0}memberof
objectClass: olcMemberOf
objectClass: olcOverlayConfig
objectClass: olcConfig
objectClass: top
olcOverlay: {0}memberof
structuralObjectClass: olcMemberOf
entryUUID: 6d599084-490c-102e-80f6-f1a5d50be388
creatorsName: cn=admin,cn=config
createTimestamp: …Run Code Online (Sandbox Code Playgroud) 我正在评估将我的组织转移到 Mercurial 的可能性,但是我遇到了两个基本要求,我找不到合适的指针。
我如何设置 Mercurial 的中央存储库以使用中央 Active Directory 对用户进行身份验证,并且只允许他们在拥有正确凭据的情况下进行推送或拉取?
如何设置 Mercurial 项目存储库以仅允许属于特定组的用户推送/拉取源代码?我们需要这个来获得每个项目的授权。
在哪些 HTTP 服务器(IIS 或 Apache 等)上支持上述两个要求?
如果我问的是一些明显的问题,或者我遗漏了有关身份验证和授权工作原理的一些基本知识,我深表歉意。
曾几何时,南美洲有一个美丽温暖的虚拟丛林,那里住着一个鱿鱼服务员。这是网络的感知图像:
<the Internet>
|
|
A | B
Users <---------> [squid-Server] <---> [LDAP-Server]
Run Code Online (Sandbox Code Playgroud)
当Users请求访问 Internet 时,squid询问他们的姓名和护照,通过对他们进行身份验证LDAP,如果 ldap 批准了他们,那么他就授予了他们。
每个人都很高兴,直到一些嗅探器在用户和鱿鱼 [路径 A] 之间的路径中偷走了护照。这场灾难的发生是因为鱿鱼使用了Basic-Authentication方法。
丛林中的人们聚集在一起解决问题。一些兔子提供了使用NTLM方法。蛇更喜欢,Digest-Authentication而Kerberos树木则推荐。
毕竟,丛林人和所有人提供的许多解决方案都令人困惑!狮子决定结束这种局面。他喊出解决规则:
然后,一只猴子提供了一个非常合理、全面、聪明的解决方案,让他成为了新的丛林之王!
你能猜出解决方案是什么吗?
提示:squid和
之间的路径LDAP由狮子保护,因此解决方案不必固定它。
注意:对不起,如果故事无聊和混乱,但大部分都是真实的!=)
Run Code Online (Sandbox Code Playgroud)/~\/~\/~\ /\~/~\/~\/~\/~\ ((/~\/~\/~\/~\/~\)) (/~\/~\/~\/~\/~\/~\/~\) (//// ~ ~ \\\\) (\\\\( (0) (0) )////) (\\\\( __\-/__ )////) (\\\( /-\ )///) (\\\( (""""") )///) (\\\( \^^^/ )///) (\\\( )///) …