Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Passport Active Directory node.js_Node.js_Active Directory_Passport.js - Fatal编程技术网

Passport Active Directory node.js

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。这些护照工具非常好,谢谢 我对这个项目的最后一个挑战也不是,用户名和密码

我已经成功地将超过六个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匹配吗?我不断地犯“未经授权”的错误


与其他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服务器进行绑定
  • 绑定后,执行配置的搜索,用用户提供的用户名替换占位符。这将确定是否从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作为身份验证方法?鉴于我的公司网络上有广告