Tag: 活动目录

如何在NodeJS中使用ldapjs连接LDAP

过去几天一直在使用NodeJS,并使用ldapjs模块运行LDAP连接。 我尝试连接的背景故事Active-Directory服务器支持LDAPv3。 以下是我用来连接到LDAP服务器的代码: var ldapClient = ldap.createClient({url: 'ldap://ldap.myhost.com.au:389'}, function (err){ if (err) { console.log('Failed'); process.exit(1); } else console.log('Through'); }); 在给定的例子中 ,它不包括最后一个callback函数,我尝试了它,因为大多数操作都包含callback的常见模式,所以我想我可以有一点运气,我没有。 我也尝试过和没有callback,仍然没有工作。 即使将url更改为无效URL,ldapClient容器也将始终返回true。 – 到目前为止,詹姆斯·托马斯的答案已经在下面解释了这一点 – 编辑: 我尝试绑定到LDAP的用户,并执行search查询作为下面的代码片段: ldapClient.bind('cn=drupal,ou=SystemAccount,dc=myhost,dc=com,dc=au', '', function (err) { if (err) { console.log('LDAP binding failed… disconnecting'); process.exit(1); } }); var opts = { scope: 'sub' }; var result = ldapClient.search('ou=Users,dc=myhost,dc=com,dc=au', opts, […]

NodeJS – 使用Active Directory进行身份validation

我正在构build一个nodejs服务器,并决定通过活动目录执行身份validation。 所以我的第一个问题是:是否有可能与nodejs? 如果是这样,有人可以指引我的相关文章/文档/插件? 我的第二个问题是关于authentication本身。 我的服务器是宁静的,所以我基本上必须提供某种forms的标识每次我从服务器请求的东西。 我虽然关于下一个stream程: 在客户端的login页面,我发送用户名和密码到服务器。 在服务器上,我使用客户端发送的凭证对Active Directory进行身份validation。 一旦我收到来自Active Directory的响应,我检查它是否是有效的响应,如果login成功,我还检查用户是否在Active Directory中具有适当的权限来使用我的服务。 一旦所有的validation,我为用户创build一个令牌。 来自客户端的每个请求都必须包含有效的令牌。 这似乎是解决这个问题的最为标准的方法,它比每个请求发送用户名/密码和每次激活方向validation要简单得多。 但有些事情打扰我。 例如:如果系统pipe理员决定从活动目录中删除用户或删除他的权限以使用我的服务,该怎么办? 该用户仍然有一个令牌,允许他访问我的服务。 我可以为令牌设置一个到期日,但除非这个到期日是一秒钟,否则服务器将不会真正与活动目录同步。 你认为这个标记是解决这个问题的方法吗? 或者我应该通过发送用户名和密码每个请求来做到这一点? 另一种方法是给客户端一个令牌,但在服务器上,将该令牌与活动目录的用户名和密码相关联。 每一个请求,服务器将与活动目录进行身份validation? 这是一个好方法吗? 谢谢,Arik

我需要什么来连接到LDAP,并绑定到更“一般”的DN来search用户?

我遇到了一个我从未真正遇到过的问题,即从NodeJS应用程序连接到LDAP。 到现在为止,我甚至不知道有一个LDAP这样的东西,所以我一直在学习。 这就是为什么这可能是一个愚蠢的问题,但我还没有find任何简洁的答案。 这个要求是: “用你的应用程序login到你的应用程序中,用户和你的login屏幕上提供的通行证” 。 客户端有一个LDAP,并且想要使用它来validation我们的应用程序的用户,所以用户login屏幕上input的用户名和密码用于尝试login到LDAP。 我知道我需要三件东西来连接到LDAP: 服务器的URL 用户(通过) 和一个DN绑定 我目前使用ldapjs从ldapjs进行连接。 我需要用来validation用户的操作,我知道, 这是bind操作 。 为此,我需要创build服务器(已经完成,没有问题),并通过DN和密码。 我假设DN包含用户。 就像是 CN=myuser,OU=MyOrg,OU=Users,DN=MyLdapServer,DN=com 哪些工作… 只要用户属于同一个“分支” 。 也就是说,如果他们都在,比如OU=MyOrg 。 这就是为什么我能够在bind()对DN进行“硬编码”,只需要用replace来改变用户。 问题是,并不是所有的人都属于同一个“分支”(我不知道这个技术名称)。 说,我有一些在OU=MyOrg ,一些在OU=MyOtherOrg … 所以我不知道用户的组织是什么,所以我不能让他绑定到LDAP客户端,因为我缺lessDN。 客户端仅向我们提供了一个例子,使用ASP.NET和ADO.NET这样的另一个应用程序,使用类似于SQL命令的方式获取LDAP信息。 事情是,相当于DN是一个更通用的。 就像是 ldap://MyLdapServer.com/CN=[the_user_provided] 这显然是有效的。 如果我尝试做同样的事情,使用更多的“通用”DN路由(我假设它是LDAP树上的一个更高的节点),提供其中一个用户的密码,我得到一个authentication错误。 那么,怎么样? 我错过了什么? 只需使用“CN = [username]”DNlogin用户到LDAP,我需要什么? 那是只有ADO.NET可以使用的东西吗? 谢谢,抱歉,如果这是一个太普通的问题。

在Node.js Web应用程序中使用用户名和密码在Azure AD上进行身份validation

我使用Azure AD身份validation构build了一个托pipe在Azure上的Node.js Web应用程序。 如何从客户端的会话中获取不记名标记,以将已authentication的请求发送到同一Azure AD所保护的Azure中的另一个应用程序服务?

Active Directoryauthentication与ldap.js

我一直在尝试使用ldap.js对Active Directory Windows 2008服务器进行身份validation。 唯一的目标是对服务器进行身份validation,而我正在使用客户端的东西(不是创build新的服务器,这就是所有文档的内容)。 我完全不熟悉LDAP,因此,使用用户名“MYDOMAIN \ myuser”进行身份validation在ldap.js中不起作用,但在ldapsearch中执行: ldapsearch -H ldap://192.168.1.212:389 -x -D 'MYDOMAIN\myuser' -w pa33w0rd -LLL -b "dc=mydomain" '(sAMAccountName=myuser)' ,它authentication成功但是吐出了Referral (10) 。 在client.bind client.bind("MYDOMAIN\myuser", 'pa33w0rd', function(err) { … } ); 失败, 49 InvalidCredentialsError 80090308: LdapErr: DSID-0C0903A9, comment: AcceptSecurityContext error, … 尝试将MYDOMAIN \ myuser重写为Distingushed Name dn:cn = myuser,dc = mydomain也会在ldapsearch中失败并发生身份validation错误。 将DOMAIN \ USER(域反斜杠用户格式)转换为DN的正确方法是什么?

LDAP – 仅按名称查找用户

我对LDAP不太熟悉,但是我正在使用Node.js应用程序进行身份validation,并且Web应用程序的用户凭据将从组织的Windows域中获取。 我有LDAP查找工作(使用Passport.js节点模块),但是为了使其工作,我必须把用户的完整的DN到节点。 例如,让我们说: 我的FQDN是mydomain.private.net 。 我的用户存储在一个组织单位,比方说staff 。 现在,如果我想查找用户joe ,我必须把这个string放入Node: var username = 'CN=joe,OU=staff,DC=mydomain,DC=private,DC=net'; 我真的必须跟踪所有这一切吗? 如果我的用户在两个不同的组织单位呢? 客户端浏览器不知道! 它只知道: username = 'joe'; password = 'xxxxx'; 如果您尝试以pipe理员身份login,该怎么办? pipe理员默认情况下总是处于完全不同的OU。 有没有一种方法来引用一个LDAP对象的名字,而不是别的?

Node.Js – 获取当前的Windows用户名

我有一个ASP.Net MVC项目,我正在尝试获取客户端Windows用户名(客户端始终在Windows机器上运行),并使用Node.JS将Windows用户名传递给服务器端。 如何使用node.js获取当前的Windows用户名? 我试图find类似于WindowsIdentity.GetCurrent()的东西。在C#中为node.js命名,或者在CMD中whoamI命令。

Passport Active Directory node.js

我已成功地将oauth1和oauth2令牌与六种护照策略(facebook,twitter,linkedin,instagram,tumblr,google,youtube)交换帐户信息,并将其集成到一个单独的auth服务器中,以保存Mongo会话并创build活动configuration文件,使用Tedious.js在令牌/会话/代码/ ID字段和SQL服务器中的许多标准化的属性字段。 这些护照工具非常好,谢谢。 我对这个项目的最后一个挑战是,把用户名和密码放到一个活动的目录仓库里,以同样的方式查找和authentication。 我一直在尝试一遍又一遍passport-ldap,passport-ldapauth(基于ldapauth-gfork,基于ldapjs),护照-windowsuth和passport-kerberos,似乎正在获取相关的凭证错误(深入代码,添加控制台.logs来试图找出我得到的语法错误)。 是否有任何其他资源和文档使用任何Passport策略访问Node.js中的LDAP / AD? DN与ou语法以及存储库相对于您正在查找的帐户用户的账户访问用户(具有专门设置为访问AD的服务账户)的位置以及filter使得很难找出任何与找出相关的错误我哪里错了。 你匹配到sAMAccountName或uid? 我始终保持“未经授权”的错误。 与其他70个护照战略不同的是,doc和示例清晰且正常,而不是广告/ ldap护照。 任何人都可以指向我一个很好的testing,文档或设置,特别是Passport.js和活动目录?

ldap nodejs主动目录authentication

我目前正在使用node.js中的一个Web应用程序,用户需要login才能访问这些信息。 我想检查用户login名和密码与外部活动目录服务器。 我曾尝试使用node-ldapauth,但我无法得到它的工作(我不知道它是否适用于活动目录,也许只是openLdap)。 有什么build议么?