首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从LDAP目录中提取TNSNames

如何从LDAP目录中提取TNSNames
EN

Stack Overflow用户
提问于 2011-05-13 08:09:16
回答 1查看 976关注 0票数 3

我一直试图查询LDAP目录服务器以检索tnsname条目。我有下面的代码工作,但它闻起来不对。这是因为它是错误的,还是因为查询ldap涉及几个级别的间接。

代码语言:javascript
复制
   let identifier = LdapDirectoryIdentifier(server, port)
   use connection = new LdapConnection (identifier)
   connection.AuthType <- AuthType.Anonymous
   let request = System.DirectoryServices.Protocols.SearchRequest(defaultAdminContext, "cn=" + sid, SearchScope.OneLevel, "orclnetdescstring")
   let response = connection.SendRequest request :?> SearchResponse

   Seq.init response.Entries.Count (fun i -> response.Entries.[i])
   |> Seq.collect (fun entry ->
       let value = entry.Attributes.["orclnetdescstring"]
       Seq.init value.Count (fun i -> value.[i])
       |> Seq.map (fun v -> Some (v :?> string))
       )

我本来希望有一个简单的调用,基本上可以“查询目录并返回结果”,但为了读取真正的值,我似乎需要做很多“事情”。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-06-23 13:17:59

一旦客户端连接到目录服务器,客户机就可以发出请求并读取响应。请求采取LDAP操作的形式,如绑定、搜索、添加、修改、删除等。

当目录服务器接受连接时,该连接(如果您愿意的话)具有匿名标识(RFC4513)。根据目录服务器的配置和请求的类型,客户端可能需要将连接绑定到授权标识--这是通过绑定请求完成的,该请求可以是“简单”类型,也可以是SASL类型。与目录服务器管理员进行对话,以确定客户端是否必须将连接绑定到授权标识--管理员可能不需要身份验证就允许某些请求,尽管这通常是一种不好的做法,也是不寻常的。

搜索数据需要下列参数:

  • “搜索基”,或基对象
  • “搜索范围”,它仅是基的,在基对象下的一个级别,或基对象下面的整个子树。
  • “搜索筛选器”,目录服务器用于从候选条目列表中选择要返回客户端的匹配项。
  • 要返回的属性列表(客户端可以使用特殊属性'1.1‘来获取条目可分辨名称,这对于确定条目是否存在非常有用)

还有其他参数是可选的,例如,大小限制(要返回的条目数量的限制)和时间限制(对搜索时间的限制),是否只返回属性,还是属性和值,以及其他一些参数。一般来说,所有搜索请求都应该提供一个时间限制,以确保搜索将超时--因为目录服务器可能不会配置来自客户端的LDAP请求的时间限制。

目录服务器对搜索请求的响应将始终包含结果代码。如果搜索成功,则此结果代码应为零(0),或者它可能是一段代码,指示可能返回的条目数超过允许返回的条目数(允许返回的条目数以搜索请求中的大小限制或服务器限制为上限),也可能是指示发生错误的结果代码。

假设错误代码为零,然后是一个SearchResultEntries或SearchResultReferences序列,最后是一个SearchResultDone --一个好的SearchResultDone将为客户端管理这个部分,并将返回的条目简单地表示为数组或列表。

最后,你的问题的答案是“是的,还有一些事情要做”才能读到条目。一个好的API将减少“东西”的数量,使之成为一种沉闷的咆哮。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5989051

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档