C# LDAP身份验证传递凭据

C# LDAP身份验证传递凭据,c#,.net,wcf,ldap,C#,.net,Wcf,Ldap,我需要将LDAP凭据传递给web服务以在C#中进行身份验证 我已经做了一切设置,可以让用户使用DirectoryEntry,但是,由于明显的原因,我无法获得密码 我通过传递用户名/密码(如:j_username=me%40domain.com&j_password=mypassword%21)向C#中的第三方web服务进行身份验证 我知道获取LDAP密码是不可能的,但有没有更好的方法来完成我的工作?我想说,您的问题不太清楚。您说您无法获取密码,但您正在传递一个密码,那么我们谈论的不是同一个密码,

我需要将LDAP凭据传递给web服务以在C#中进行身份验证

我已经做了一切设置,可以让用户使用DirectoryEntry,但是,由于明显的原因,我无法获得密码

我通过传递用户名/密码(如:
j_username=me%40domain.com&j_password=mypassword%21)向C#中的第三方web服务进行身份验证


我知道获取LDAP密码是不可能的,但有没有更好的方法来完成我的工作?

我想说,您的问题不太清楚。您说您无法获取密码,但您正在传递一个密码,那么我们谈论的不是同一个密码,您谈论的是LDAP管理员密码吗?但问题是什么?请提供更多信息。 我将大胆地告诉您,如果您的应用程序有一个应用程序服务器,您还可以从服务器配置对LDAP目录的访问,这样您就可以通过应用程序服务器而不是直接使用LDAP服务进行身份验证。有帮助吗?请提供更多信息。

您可以从Active Directory访问,但它需要在服务器本身上启用一个特殊的设置,并且通常在安全实践中会受到轻视

最好向用户提供一个简单的表单,用户可以在其中输入用户名和密码,然后将绑定请求发送到目录服务器。诚然,虽然您当前通过web服务的实现看起来很有效,但我会根据使用该应用程序的用户采取稍微不同的方法:

  • 如果这是组织内的内部应用程序,则可以通过IIS强制网络登录,这将消除对web服务的需求。您可以在这里查看一般概述,或者查看带有代码示例的更详细解释

  • 如果此应用程序是一个外部可用的应用程序,那么您可以根据Active Directory对用户进行授权,但是,您仍然需要带有用户名和密码字段的表单。我已经写了一些关于这个主题的答案(用C#),代码本身以
    System.DirectoryServices
    名称空间为中心。有一个例子,也是如此


我希望这会有所帮助,但如果您有任何其他问题,请随时给我发消息。

基本上,我需要从LDAP获取用户密码,以便将其传递给我的第三方服务。这有帮助吗?那么,LDAP目录管理员必须允许您获取数据才能继续。我建议你首先申请许可。想想看,如果任何应用程序能够从LDAP目录中的所有用户检索密码,那将是一个安全漏洞。你不这么认为吗?在明确要求之前,与同行进行一些内部研究。