如何为我的Web应用程序构建LDAP集成?

chi*_*pum 34 ldap saas single-sign-on

我公司开发和销售拥有数百名客户的SaaS应用程序.我们的一些客户要求我们支持LDAP集成,以便根据现有系统对用户帐户进行身份验证,而不必为每个员工创建另一个登录帐户.这似乎在很多地方被称为单点登录(SSO)?当然,我们的系统已经有一种机制来维护用户帐户配置文件并从我们的登录页面验证这些用户帐户.

我们对LDAP有点无知,对一些事情感到困惑.请原谅可能使用错误的术语(记住,我们对此有点无知).

我们认为我们了解这可能如何工作的基础知识:

  • 我们的客户将其帐户配置为"开启"其帐户的"远程身份验证"功能.它们提供将对其用户进行身份验证的远程URL.
  • 用户进入我们的登录页面并尝试使用其公司的LDAP系统提供的用户名和密码进行登录.
  • 我们的登录页面将安全地将登录凭证(可能是加密的并以某些商定的格式进行散列)转发到我们客户提供的"远程验证"URL.
  • 客户的脚本将对用户进行身份验证,然后使用"身份验证状态"将其重定向回我们的站点.
  • 我们的页面将分析"身份验证状态",并接受用户登录与否.

假设上述信息甚至是半正确的,我们仍然需要每个用户在我们的系统中拥有一个帐户.我们不需要某种方式将我们的用户帐户配置文件与LDAP目录中的用户配置文件同步吗?这只是一个引用LDAP系统中用户ID的"外部ID"吗?那么是否需要客户的"远程认证"脚本必须向我们的系统提供该ID,以便我们知道系统中哪个用户帐户将登录与?相关联?

我们缺少什么?

顺便说一句,我们的平台是IIS,ASP.Net 2.0和SQL Server 2005.

ser*_*ist 12

有几种选择.如果您真的是指LDAP,而不仅仅是Active Directory,我可能会考虑使用System.DirectoryServices.Protocols通过安全通道使用提供的凭据执行LDAP绑定.

严格来说,这不是单点登录.SSO意味着您只需在首次登录时提交一次.这只是通过只有一个ID来降低用户的复杂性.通常,对于混合使用平台和技术的企业环境中的Windows客户端,SSO是通过添加到桌面的客户端实现的,该客户端管理对各种系统的身份验证.在仅限MS的环境中,如果您的所有Web应用程序都在IIS上,则可以实现SSO,使用IE并使用集成Windows身份验证,模拟和所有这些内容.

您可以考虑将经过身份验证的用户自动注册到系统中,除非您需要预配置配置文件类型的数据.如果确实需要预先配置用户,则可以考虑定期从LDAP目录导入(全部或已过滤的子集)用户并使其处于未配置状态,以便管理员从现有列表中选择不 - 配置用户而不是键入ID.否则,您可能会冒管理员输入错误的用户ID并出现不匹配的风险.

您可以提供一个API,使身份和访问管理解决方案(给定您的Microsoft倾斜,请参阅ILM2 007作为一个示例)可以与您的系统集成并为您执行所有用户帐户管理.


geo*_*ffc 5

与往常一样,请记住验证身份验证测试,以确保发送的密码不是空白。

根据标准,具有用户名且没有密码的绑定被视为匿名绑定,并且看起来已经成功!实际上,实际上没有。

这是应用程序要处理的一个问题,因为LDAP服务器仅遵循该标准,这是一个令人讨厌的标准,但是仍然是一个标准。