use*_*956 8 active-directory node.js passport.js
我已经成功地将半打护照策略(facebook,twitter,linkedin,instagram,tumblr,google,youtube)与oauth1和oauth2令牌交换成一个独立的auth服务器,在Mongo中保存会话并创建活动配置文件,使用令牌/会话/代码/ id字段以及使用Tedious.js在SQL Server中使用许多标准化的属性字段.这些护照工具非常好,谢谢.
我对该项目的最后一个挑战是将用户名和密码放入活动目录存储库,以同样的方式查找和验证.我一直在尝试了一遍又一遍护照LDAP,护照ldapauth(基于ldapauth-gfork,基于ldapjs),护照windowsauth和护照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和bindCredentials),绑定对LDAP服务器.DN搜索结果和用户提供的密码,并绑定LDAP服务器.这会验证密码.如果您希望用户使用他们登录SAMAccountName,您的搜索过滤器可能是例如.(sAMAccountName={{username}}).如果您希望用户使用uid,过滤器可能只是(uid={{username}}).如果要同时启用两者,请使用(|(sAMAccountName={{username}})(uid={{username}})).搜索过滤器语法在RFC 4515中指定.
我能够通过 Passport-ldapauth 向 AD 进行身份验证。关键是要知道使用与某些在线 LDAP 示例不同的服务器选项
searchBase: 'ou=Accounts,dc=mydomain,dc=com'
searchFilter: '(sAMAccountName={{username}})' // {{username}} comes from the html form.
Run Code Online (Sandbox Code Playgroud)
您还需要知道是否需要 ldaps 和 TLS。(我没有)我花了很多时间挖掘 ldapjs.org。