简短形式:我是否应该使用一些众所周知的 uid 来验证 ldap 客户端,然后在该客户端中使用其他方法来验证用户输入的 uid 和 pw?
长格式:我们有一个基于 .net 的商业 Web 产品,在许多客户站点中实施,目前使用内部用户身份验证。
我正在研究使用 LDAP 对目录进行身份验证。由于我们的产品在各种环境中实施,我希望它能够在尽可能广泛的 LDAP 兼容目录服务和配置范围内兼容,包括但不限于 Active Directory。
除了身份验证之外,我还想使用用户的目录属性来确定他们是否有权使用该应用程序。我希望这将由用户在特定组中的成员身份来指示。该组的名称将成为应用程序的配置点。
目录服务仅用于确认用户标识、密码和组成员身份。在处理来自用户的后续请求时,应用程序不会假定用户的身份。所以,没有 FormsAuthenticationTicket。
我的第一个问题来自我审查过的身份验证示例,例如http://tldp.org/HOWTO/LDAP-HOWTO/authentication.html和http://msdn.microsoft.com/en-us/library /ff649227.aspx. 它们使用用户输入的 ID 和密码来验证 LDAP 客户端。我想这是合理的,但在我的例子中,客户端将继续进行其他 LDAP 搜索以确认组成员身份。我是否需要担心最终用户可能没有足够的目录权限来进行成员资格检查?在我看来,更好的做法是使用保留的凭据进行 ldap 客户端身份验证,然后通过其他方式确认用户输入的 uid/pw。或者,也许,绑定两次,一次使用用户凭据来验证它们,第二次使用内置凭据进行搜索。我应该这样做,还是我只是让事情变得比他们需要的更难?