突然收到 LDAP 推荐

Suddenly getting LDAP Referrals

我有两个域,一个是生产域,一个是开发域。我的开发域突然开始出现错误 DirectoryServicesCOMException: A referral was returned from the server.

今天才开始发生这种情况。我昨天确认它正在工作。域控制器或我的应用程序未发现任何更改。

当我的开发服务器执行生产用户配置文件的 LDAP 搜索时。我正在使用一些相当标准的 LDAP 查询代码:

private IUserDetails queryUserBySID(string sid)
{
    DirectoryEntry de = new DirectoryEntry(domainLdap); // "DC=production,DC=local"
    
    var ds = new DirectorySearcher(de);
    ds.Filter = $"(&(objectCategory=User)(objectClass=person)(objectSid={sid}))";
    
    var result = ds.FindOne(); // <-- referral error
    //...
}

但是,这有效(即使在使用 IIS AppPool 凭据时):

PS C:\> Get-ADUser -Server productiondc -Identity testuser

我验证了两个域相互信任。我的任一域可能发生了什么变化导致了这种情况?

编辑 1

问题在 1-2 天后自行解决,然后再次出现。

检查 ExtendedErrorMessage 给出

0000202B: RefErr: DSID-03100835, data 0, 1 access points
    ref 1: 'production.local'

快速 google 显示给 运行 dcdiag

编辑 2

我认为这是与 dcdiag:

相关的错误
An error event occurred.  EventID: 0xC0000010

            Time Generated: 02/22/2022   22:22:22

            Event String:

            While processing a TGS request for the target server <user>/SERVER, the account DevMachine$@DEVELOPMENT.LOCAL did not have a suitable key for generating a Kerberos ticket (the missing key has an ID of 8). The requested etypes were 18  17. The accounts available etypes were 18  17  23  -133  -128  24  -135. Changing or resetting the password of PRODUCTION.LOCAL will generate a proper key.

推荐意味着“我没有你想要的信息,但我知道你可以从哪里得到它。”因此,这是您连接的服务器与数据所在位置之间的不匹配。我不能告诉你发生了什么变化,但我可以告诉你如何获得更多相关信息。

异常抛出后,调用de.Options.GetCurrentServerName()查看在哪个服务器上进行搜索

然后检查异常的 ExtendedErrorMessage 属性 并查看它是否告诉您将您引向哪个服务器。

要绕过异常并自动跟随推荐,您可以使用 DirectorySearcherReferralChasing 属性:

ds.ReferralChasing =  ReferralChasingOption.All;