【问题标题】:Is it possible to expose LDAP "compliant" data through a REST API without an LDAP server?是否可以在没有 LDAP 服务器的情况下通过 REST API 公开 LDAP“兼容”数据?
【发布时间】:2011-09-14 00:00:33
【问题描述】:

首先让我声明一下,我对 LDAP 几乎一无所知,而且这个问题本质上比其他任何问题都更具概念性。由于这是一篇很长的帖子,这里是最简单的问题:

如何以最简单的方式将现有 SQL Server 数据库中的联系人数据公开给 LDAP 客户端?

场景

我工作的组织开发了一个非常简单的内部 CRM 系统 - 实际上它比 CRM 更像是一个美化的联系人管理系统,但仍然包含联系人的信息 - 他们现在希望能够轻松公开所有联系人信息到其他桌面和移动客户端,如 Outlook 和/或 iOS 设备,我已被指派弄清楚如何执行此操作。

我做的第一件事是打开Outlook,看看可以添加什么样的互联网通讯录;在 Outlook 2007 中,我看到的唯一选项是 LDAP。接下来,我查看了一个 iOS 设备,它也支持 LDAP 地址簿。因此,似乎 LDAP 是实现这一目标所需要的......

研究 LDAP

如开头所述,我对 LDAP 几乎一无所知,为此目的进行研究并没有让我走得太远。我当然不想设置整个 LDAP 服务器,也不需要 LDAP 安全等(至少据我了解,我不需要),我需要做的就是从现有 CRM 数据库中公开联系信息“LDAP 方式。”

我似乎在研究中看到的共识是安装 LDAP 服务器,例如 OpenLDAP,并将其配置为使用 SQL Server(即现有 CRM 数据库)作为后备存储,从而有效地将数据库记录暴露给 LDAP 客户端.这似乎过于复杂,我希望有一种更简单的方法可以以 LDAP 形式公开联系人记录。

REST 理念

我的想法 - 看起来像一个失败的原因 - 是通过一个简单的 REST(或类似 REST)API 公开每个用户的联系人,该 API 以 LDAP 形式返回联系人信息,可供 Outlook、iOS 和任何其他支持 LDAP 的客户端/设备。

最终目标是指示我组织中的个人打开 Outlook 或他们的 iOS 设备设置并输入如下简单的 URI:

https://www.ourinternalcrm.com/{username}/contacts

我在浪费时间吗?

这是否可能并值得进一步调查,还是我错过了 LDAP 的全部要点以及以 LDAP 形式公开数据的工作方式?

如果可能的话,有人可以帮我指出正确的方向吗?我需要使用 C# 和(很可能)WCF 来实现所有这些。

【问题讨论】:

    标签: c# wcf ldap


    【解决方案1】:

    LDAP 本身就是一个协议,而不是通过 HTTP 或其他 Web 服务协议。

    如果您想开发比使用现有 LDAP 服务器技术更复杂的 LDAP 服务器。

    您可以实施现在称为 Active Directory 轻量级目录服务 (AD LDS) 的 Active Directory 应用程序模式 (ADAM) 服务器,并构建您的应用程序或同步服务以向其推送联系人详细信息,从而无需创建一个。

    【讨论】:

    • 感谢您的回答。我完全同意滚动我自己的 LDAP 服务器会过于复杂,这不是目标。我将调查 ADLDS,但我试图避免两个数据存储,我猜我最终会走这条路(因此你提到了同步服务)。
    • 谢谢伯尼。你的答案是最接近“否”的答案,不幸的是,这似乎是这个问题的正确答案。
    【解决方案2】:

    LDAP 已经有一个定义良好的 URL 过滤器语法,只需使用它。见RFC 4516

    【讨论】:

    • 感谢您指出这一点。我正在尝试找到一个不需要 LDAP 服务器但可以“伪造”服务器并仅以 LDAP 表单公开现有服务器中的数据的解决方案。
    • @crazyrabian 但是 Outlook 期望将 LDAP 协议与 LDAP 服务通信。为什么它应该对 RESTful URL 有意义?
    • 我发现它没有意义。同样,这个问题是在不了解 LDAP 的情况下提出的,并试图确定是否可以在没有 LDAP 服务器的情况下以 LDAP 形式公开数据。答案似乎是一个简单的“不”,我可以接受,但我想找到一种方法来与客户共享现有的联系人数据,而无需设置和同步 LDAP 服务器(或任何其他服务器)。我不再冒险进入这个兔子洞了。
    【解决方案3】:

    所以澄清一下,您正试图通过 REST 公开驻留在 Apache DS LDAP 服务器上的数据,而 RESTFul API 作为服务器端服务驻留在另一台服务器(Tomcat、Weblogic 等)上?

    我发现有趣的部分是 Apache LDAP 通过其站点上的 JAVA API 具有很好的搜索和检索功能 - 非常直观且易于实现。但我有同样的问题,还没有找到集成 REST API 以吐出数据的解决方案。

    我发现的一些问题是,尝试将 Tomcat 服务器连接到 Apache LDAP 服务器时似乎存在问题,因此可以通过 @GET 方法处理数据。

    如果有人解决了这个问题,我会欢迎发布它,因为网络上没有任何解决方案。

    【讨论】:

      【解决方案4】:

      已经有一个名为DSML 的规范。它基本上是 LDAP 数据模型的 XML 标记,以及 LDAP 操作及其语义。一些 LDAP 服务器开箱即用或通过库支持这一点,因为 XML 也可用作交换格式。

      【讨论】:

      • 如果 DSML 从 REST 服务端点返回,LDAP 客户端是否知道如何处理数据,即,我可以将 Outlook 指向该端点并加载通讯簿吗?
      • DSML 肯定不是普遍存在的,但大多数客户端无论如何都不会通过 Web 与 LDAP 对话。我主要指出,如果您想将 LDAP 映射到某个东西,那么您已经可以采用 XML 表示了。
      • DSML 是基于 SOAP 的服务,因此不是 REST 服务端点。
      猜你喜欢
      • 1970-01-01
      • 2019-06-08
      • 1970-01-01
      • 2018-02-06
      • 2013-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多