我需要将 LDAP 凭据传递给 Web 服务以在 C# 中进行身份验证。
我已经完成了所有设置,可以让用户使用 DirectoryEntry,但是,由于显而易见的原因,我无法获得密码。
我通过传递用户名/密码来向 C# 中的第三方 Web 服务进行身份验证,例如:j_username=me%40domain.com&j_password=mypassword%21
我知道获取 LDAP 密码是不可能的,但有没有更好的方法来处理我正在做的事情?
您可以从 Active Directory 中 检索用户密码,但它需要在服务器本身上启用特殊设置,并且在安全实践方面通常被忽视。
您最好为用户提供一个简单的表单,他们可以在其中输入用户名和密码,然后将绑定请求发送到目录服务器。诚然,虽然看起来您当前通过 Web 服务实现的工作正常,但我会根据谁将使用该应用程序采取稍微不同的方法:
如果这是您组织内的内部应用程序,您可以强制通过 IIS 进行网络登录,这样就不需要 Web 服务。您可以在此处查看此链接以获取一般概述,或者查看此链接以获取带有代码示例的更详细说明。
如果此应用程序是外部可用的,那么您在针对 Active Directory 授权用户方面有很多选择 - 但是,您仍然需要包含用户名和密码字段的表单。我已经写了一些关于这个主题的答案(在 C# 中),并且代码本身以System.DirectoryServices
命名空间为中心。这个线程上有一个例子,这个也 有。
我希望这会有所帮助 - 但如果您有任何其他问题,请随时给我发消息。
我会说你的问题不是很清楚。您说您无法获取密码,但是您正在传递密码,那么我们不是在谈论相同的密码,您说的是LDAP管理员密码吗?但问题是什么?请提供更多信息。我会冒险告诉你,如果你的应用程序有一个应用程序服务器,你还可以从服务器配置对 LDAP 目录的访问,这样你就可以直接针对应用程序服务器而不是 LDAP 服务进行身份验证。它有帮助吗?请提供更多信息。