我已经成功地将六个护照策略(facebook、twitter、linkedin、instagram、tumblr、google、youtube)与 oauth1 和 oauth2 令牌交换帐户信息组装到一个独立的身份验证服务器中,该服务器在 Mongo 中保存会话并创建活动配置文件,使用 Tedious.js 在 SQL Server 中包含 token/session/code/id 字段以及许多标准化属性字段。这些护照工具非常好,谢谢。
我对该项目的最后一个挑战也不是将用户名和密码放入活动目录存储库中,以相同的方式进行查找和身份验证。我一直在一遍又一遍地尝试passport-ldap,passport-ldapauth(基于ldapauth-gfork,基于ldapjs),passport-windowsauth和passport-kerberos,并且似乎遇到了相关的凭证错误(在代码深处,添加控制台.logs 尝试找出我在语法上出错的地方)。
是否有其他资源和文档可以使用 Passport 策略访问 Node.js 中的 LDAP/AD? DN 与 ou 语法以及存储库的帐户访问用户(有专门设置来访问 AD 的服务帐户)与您正在查找的帐户用户的位置以及过滤器使得很难找到与找出相关的任何错误我哪里出错了。您与 sAMAccountName 或 uid 匹配吗?我不断收到“未经授权”的错误。
与其他 70 个护照策略不同,其中的文档和示例清晰且有效,而对于 ad/ldap 护照则不然。谁能给我指出一个专门与 Passport.js 和 Active Directory 配合使用的良好测试、文档或设置?
虽然这是我认为的一个老问题,但作为维护者passport-ldapauth
,我应该稍微澄清一下 LDAP 身份验证。
LDAP 身份验证与您之前使用过的策略不同。这些 OAuth 策略实际上只能通过一种方式进行配置 - 提供所需的选项,然后它就可以工作。这部分与 LDAP 相同,但选项的实际值因一台服务器而异。您提出的问题(例如是否与 sAMAccountName 或 uid 匹配)实际上取决于您和 LDAP 服务器。
RFC 中广泛定义了诸如 DN 的外观、搜索库是什么或搜索过滤器的语法是什么等一般内容。如果不熟悉基础知识,则可能很难进行身份验证。通常需要 AD/LDAP 服务器维护人员输入才能进行正确的设置,例如。什么搜索库允许查找所有必需的用户,但不会在 LDAP 服务器上造成不必要的负载。
LDAP 身份验证通常分三个步骤进行:
- 使用服务帐户(在
passport-ldapauth
, bindDn
and bindCredentials
),绑定 LDAP 服务器。
- 绑定后,执行配置的搜索,用用户提供的用户名替换占位符。这确定是否可以从 LDAP 服务器找到给定的用户名。
- Use the
DN
搜索结果以及用户提供的密码,并绑定到 LDAP 服务器。这将验证密码。
如果您希望用户使用他们的登录SAMAccountName
,您的搜索过滤器可以是例如。(sAMAccountName={{username}})
。如果您希望用户使用uid
,过滤器可能只是(uid={{username}})
。如果您想同时启用两者,请使用(|(sAMAccountName={{username}})(uid={{username}}))
。搜索过滤器语法在 RFC 4515 中指定。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)