- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的开发机器上,我必须安装一个 AD-LDS。原则上它工作正常,但是第一次通过 PrincipalContext-class 连接到 AD-LDS 非常慢(30 秒以上)。在我看来,它首先尝试连接到某个不存在的主机或目录,然后在超时(30 秒)后连接到我的 AD-LDS 并执行它应该执行的操作。
我在连接 LDP.exe 和 SSL 时观察到的相同行为。但是,使用 ADSI-Edit,通过 SSL 连接的速度非常快。通过非 SSL 连接也是如此。
我看看我是否能在 fiddler 中看到什么,但什么也没有。同样在事件日志中我什么也找不到。也许它与证书查找有关?它是用 makecert 自签名的。
更新
与此同时,我观察到一件小事,可能会给出一个提示:在系统事件日志中,第一次建立到 AD-LDS 的 SSL 连接时,会出现以下消息:
名称 _ldap._tcp.[ machineName
的名称解析] 在没有配置的 DNS 服务器响应后超时
但是,该消息仅注册一次,但每次连接到服务器都需要 30 秒以上。我还尝试在主机文件中输入相应的条目,但没有任何改变。
附加信息
可能这不是证书的问题,但可能有助于解决问题。因此,这里是我创建证书的方式(或多或少的 cargo 代码):
根权限
makecert -pe -n "CN=MyDevRootAuthority" -ss my -sr LocalMachine -a sha1 -sky signature -r "MyDevRootAuthority.cer"
makecert -pe -n "CN=[MyComputerName]" -ss my -sr LocalMachine -a sha1 -sky exchange -eku 1.3.6.1.5.5.7.3.1 -in "MyDevRootAuthority" -is MY -ir LocalMachine -sp "Microsoft RSA SChannel Cryptographic Provider" -sy 12 "MyTestCertificate.cer"
最佳答案
更新
最近遇到这个问题后,我深入挖掘了一下,发现,使用ContextOption
ServerBind
在构建 PrincipalContext
时可靠地解决了问题,除了ValidateCredentials
- 上下文中的方法。
使用 SDS.P 的替代方法
附加信息:使用 SDS 和 SDS.AM 对我来说总是很复杂。由于其组件提供的通常不相关且不准确的错误信息(由于所用系统组件 (ADSI) 的复杂内部层次结构),它花费了大量时间。
最终,我将一些代码移到了 SDS.P 命名空间,虽然互联网上关于如何使用的信息很少,但它似乎更合适和更好。我不能代表每个人或每个领域,但从基于 ADSI 的组件迁移到 SDS.P(基于 wldap32.dll)对我来说已经简化和澄清了很多。它甚至在大部分部分都是异步工作的。作为奖励,它非常快。
一个好的起点在这里:
https://msdn.microsoft.com/en-us/library/bb332056.aspx
旧解决方案
问题来自于我的开发计算机不属于域的情况。我们在域集成机器上尝试了同样的事情后,我看到了这一点,但没有出现问题。
解决方案(适用于非 AD 嵌入式计算机)
代码
在代码中,与 DirectoryContext
连接,主机名必须使用 dns 后缀“.local”指定。
[machinename].local
网卡
关于adam - 通过 SSL 中的 LDAP 与 PrincipalContext 类的慢速 AD-LDS 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33985216/
我有一个带有 Windows 身份验证的 Web 应用程序。当我调试线路时 var domainContext = new PrincipalContext(ContextType.Domain, "
我正在开发一个 C# .NET Framework 库来访问事件目录。 我必须做的一件事是获取所有 AD 用户,我看到了: PrincipalContext principalContext =
我正在尝试使用 PrincipalContext 检查远程计算机上是否存在本地用户组。 我在使用 PrincipalContext 时遇到问题: PrincipalContext ctx = new
我正在尝试将 PrincipalContext 用于我正在开发的网络服务。我已经在不同应用程序的 Web 服务器上使用表单例份验证,并且工作正常。 我收到的错误是: System.DirectoryS
using (PrincipalContext ctx = new PrincipalContext(ContextType.Domain, Domain, UserName, Password))
首先,我查看了关于 SO 的大多数问题,但似乎都不是完全相同的问题。 Here是一个类似的问题,但并不完全相同。在我的情况下,我正在创建一个 PrincipalContext : Dim pctx A
我正在尝试使用 PrincipalContext 通过 Active Directory 服务找出域组件。 我使用很少的参数创建了 PrincipalContext: PrincipalContext
我正在尝试使用 PrincipalContext 通过 Active Directory 服务找出域组件。 我使用很少的参数创建了 PrincipalContext: PrincipalContext
每当调用此方法时,我都会崩溃。 public bool findSAMAccountByName(string environmentUserName) { try
应用程序能否创建一次 PrincipalContext,然后在应用程序的整个生命周期内重复使用它?这将避免在每次调用 Active Directory 之前使用相同的详细信息重新创建 Principa
我们有一个应用程序使用 LDAP 通过 IP 地址通过 VPN 隧道对远程 AD 进行身份验证,使用以下代码: using (PrincipalContext pc = new PrincipalCo
我知道这有一个简单的解决方案,但我似乎无法让它工作... 使用其他 Stack Overflow answers和 Microsoft's Documentation ,我知道 PrincipalCo
我正在为 asp.net 创建一个自定义登录功能,它根据事件目录进行验证。用户必须能够仅使用他的用户名或他的用户名和域(以及两种情况下的密码)登录。 代码: AuthUser user = Authe
我有一个返回 PrincipalServer 的方法 CreateContextForGlobalCatalog连接到全局目录: PrincipalContext = new PrincipalCon
我有一个包含很多属性的 UserPrincipal 对象,但我找不到密码过期日期的属性。 如何做到这一点? 最佳答案 这是我能想到的最简单的方法... using System.DirectorySe
有没有办法强制 PrincipalContext 连接到特定的域 Controller ?我正在为我的应用程序枚举锁定帐户列表,我希望能够查询多个服务器并从所有 DC 返回列表。 目前我得到我的 Pr
我正在尝试将域帐户添加到远程计算机的管理员组。我遇到的问题是,当我尝试实际连接到远程机器 PrincipleContext 时,它给了我一条访问被拒绝的消息,但我是以远程机器本地管理员的身份连接的。当
我有以下两个使用 LDAP 和 LDAPS 对用户进行身份验证的实现,我想知道哪个更好/更正确。作为记录,这两种方法都适用于 SSL 和非 SSL 连接。 我也很好奇,因为在 Non-SSL Prin
我正在尝试通过 Active Directory 中的用户名查找用户。 这个有效: const string Domain = "SLO1.Foo.Bar.biz"; const string Use
我正在创建一个 PrincipalContext 对象,用于从我们的 AD 数据库中检索用户的组(然后我们使用这些对象对站点的各个部分进行身份验证)。 这过去是使用表单例份验证完成的,所以代码看起来像
我是一名优秀的程序员,十分优秀!