Passport Active Directory node.js
我已经成功地将超过六个passport策略(facebook、twitter、linkedin、instagram、tumblr、google、youtube)与oauth1和oauth2令牌交换帐户信息,整合到一个单独的身份验证服务器中,该服务器在Mongo中保存会话并创建活动配置文件,在SQL server中使用token/session/code/id字段和许多标准化的atribute字段,并使用Tedious.js。这些护照工具非常好,谢谢 我对这个项目的最后一个挑战也不是,用户名和密码进入active directory存储库,以同样的方式进行查找和身份验证。我一次又一次地尝试passport ldap、passport ldapauth(基于ldapauth gfork、基于ldapjs)、passport windowsauth和passport kerberos,似乎发现了相关的凭据错误(深入代码,添加console.logs以尝试找出语法错误) 使用Passport的任何策略访问Node.js中的LDAP/AD是否还有其他资源和文档?DN与ou的语法以及存储库的帐户访问用户(专门设置了一个服务帐户来访问AD)与您正在查找的帐户用户之间的位置,以及过滤器使得很难找到任何与找出我的错误位置相关的错误。您与sAMAccountName或uid匹配吗?我不断地犯“未经授权”的错误Passport Active Directory node.js,node.js,active-directory,passport.js,Node.js,Active Directory,Passport.js,我已经成功地将超过六个passport策略(facebook、twitter、linkedin、instagram、tumblr、google、youtube)与oauth1和oauth2令牌交换帐户信息,整合到一个单独的身份验证服务器中,该服务器在Mongo中保存会话并创建活动配置文件,在SQL server中使用token/session/code/id字段和许多标准化的atribute字段,并使用Tedious.js。这些护照工具非常好,谢谢 我对这个项目的最后一个挑战也不是,用户名和密码
与其他70种passport策略不同,后者的文档和示例都很清楚,而且只起作用,而对于ad/ldap passport则没有这么多。有谁能告诉我一个好的测试、文档或安装程序,它特别适用于Passport.js和Active Directory吗?我能够通过Passport ldapauth向AD进行身份验证。 一个关键是知道如何使用服务器选项,这与一些LDAP在线示例不同
searchBase: 'ou=Accounts,dc=mydomain,dc=com'
searchFilter: '(sAMAccountName={{username}})' // {{username}} comes from the html form.
您还需要知道是否需要LDAP和TLS。(我没有)我花了大量时间在ldapjs.org上挖掘。我不确定您的需求有多灵活,但我在研究同一主题时,偶然发现了微软的一个特定解决方案,它使用AD FS作为Oauth提供商 粗略的阅读表明,web客户端与AD联系以获取JWT令牌,然后将该令牌发送到您的服务器,然后服务器向AD服务器验证该令牌
需要将AD服务器配置为接受您的服务器作为需要其标识服务的依赖方。Microsoft为此发布了一个官方库: 直接从npm添加到您的项目:
npm install passport-azure-ad
或者OAuth2流的Auth0。虽然这是一个老问题,但作为
passport ldapauth
的维护者,我应该稍微澄清一下LDAP身份验证
LDAP身份验证不同于您以前使用的那些策略。这些OAuth策略实际上只能通过一种方式进行配置——提供所需的选项,然后就可以工作了。这一部分与LDAP相同,但选项的实际值因服务器而异。您要问的问题,如您是否匹配sAMAccountName或uid,实际上取决于您和LDAP服务器
在RFCs中已经广泛地定义了一些通用的东西,比如DN看起来像什么,搜索基础是什么,或者搜索过滤器的语法是什么。如果不熟悉基本知识,则很难让身份验证工作。通常需要AD/LDAP服务器维护者输入以进行适当的设置,例如,什么样的搜索库允许查找所有必需的用户,但不会在LDAP服务器上造成不必要的负载
LDAP身份验证通常分为三个步骤:
passport ldapauth
、bindDn
和bindCredentials
中)对LDAP服务器进行绑定DN
,以及用户提供的密码,并针对LDAP服务器进行绑定。这将验证密码如果您希望用户使用其
SAMAccountName
登录,您的搜索筛选器可以是(SAMAccountName={{username}})
。如果您希望用户使用uid
,那么过滤器可以是(uid={{username}})
。如果要同时启用这两个选项,请使用(|(sAMAccountName={{username})(uid={{username}))
。RFC 4515中指定了搜索筛选器语法。我是一名顾问。我为之工作的那家公司给了我对几台服务器的有限访问权。我没有登录ldap服务器的权限
我使用以下命令绑定:
(sAMAccountName={{username}})
如果我无法实际登录到ldap服务器,我是否无法通过ldap进行身份验证
如果他们允许我登录服务器,ldapauth就可以工作
Gina简单地看一下passport ldap模块,确保将authMode设置为0(对于Active Directory)和1(对于标准ldap)。如果不这样做,用户名将与baseDN混淆,但这是不对的。此外,ldap服务器通常会返回描述实际问题的错误代码-如果您有错误代码,请用它更新您的问题。最后,如果您发布其中一个模块的完整配置,包括用户名(您可以设置密码:)。我还建议将searchBase保留为域树的根,即dc=mydomain,dc=com-在许多公司,用户帐户根据组织结构而不是对象类型分散在不同的OU中。如果不是默认的,您还应该确保使用ldap v3。这可能是一个很长的目标,但我有一个问题。如果我在AWS上托管我的应用程序,是否仍然可以使用Active directory作为身份验证方法?鉴于我的公司网络上有广告