gpt4 book ai didi

.net - 如何从 LDAP 目录中提取 TNSNames

转载 作者:行者123 更新时间:2023-12-01 14:05:35 25 4
gpt4 key购买 nike

我一直在尝试查询 LDAP 目录服务器以检索 tnsnames 条目。我有以下代码工作,但它闻起来不对。是因为错了,还是因为查询ldap涉及到几级间接

   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))
)

我希望有一个简单的调用,基本上是“查询目录并返回结果”,但似乎有很多“东西”我必须做才能读取实际值。

最佳答案

一旦客户端连接到目录服务器,客户端就可以发出请求并读取响应。请求采用 LDAP 操作的形式,例如绑定(bind)、搜索、添加、修改、删除等。
当目录服务器接受一个连接时,该连接(或 LDAP session ,如果您愿意)具有匿名身份( RFC4513 )。根据目录服务器的配置和请求的类型,客户端可能需要将连接绑定(bind)到授权身份——这是通过可以是“简单”类型或 SASL 类型的绑定(bind)请求来完成的。与目录服务器管理员对话以确定您的客户端是否必须将连接绑定(bind)到授权身份 - 管理员可能允许某些请求无需身份验证,尽管这通常是一种不好的做法并且不寻常。
搜索数据需要以下参数:

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

  • 还有其他参数是可选的,例如,大小限制(对要返回的条目数量的限制)和时间限制(对搜索可以花费的时间的限制),是否只返回属性,或者属性和值(value)观,以及其他一些。一般来说,所有搜索请求都应该提供时间限制以确保搜索超时 - 因为目录服务器可能没有为来自客户端的 LDAP 请求配置时间限制。
    目录服务器对搜索请求的响应将始终包含结果代码。如果搜索成功,则此结果代码应为零 (0),或者它可能是一个代码,表明可能已返回的条目数超过了允许返回的条目数(可返回的条目数)允许返回的上限是搜索请求中的大小限制或服务器的限制),或者它可能是指示发生错误的结果代码。
    假设错误代码为零,然后是一系列 SearchResultEntries 或 SearchResultReferences,最后是 SearchResultDone - 一个好的 API 将为客户端管理这部分,并将返回的条目简单地呈现为数组或列表。
    最后,您的问题的答案是“是的,有一些事情要做”,然后才能阅读条目。一个好的 API 会将“东西”的数量减少到沉闷的咆哮。

    关于.net - 如何从 LDAP 目录中提取 TNSNames,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5989051/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com