Delphi 脱机时需要给定用户的Active Directory组列表

Delphi 脱机时需要给定用户的Active Directory组列表,delphi,authentication,winapi,active-directory,ldap,Delphi,Authentication,Winapi,Active Directory,Ldap,我在一个应用程序中工作,该应用程序通过LDAP根据Active Directory验证用户名/密码,并检索用户所属的所有组的列表。这些组确定其在应用程序中的权限级别。当Active Directory可用时,此功能可以正常工作 如果网络关闭和/或Active Directory不可用,我需要同时执行以下两项操作: 验证用户名/密码 检索与用户关联的广告组列表 我可以通过使用LogonUser Windows API调用来完成#1。我搞不懂的是如何为用户获取广告组列表。我甚至不确定当用户登录到计算

我在一个应用程序中工作,该应用程序通过LDAP根据Active Directory验证用户名/密码,并检索用户所属的所有组的列表。这些组确定其在应用程序中的权限级别。当Active Directory可用时,此功能可以正常工作

如果网络关闭和/或Active Directory不可用,我需要同时执行以下两项操作:

  • 验证用户名/密码
  • 检索与用户关联的广告组列表
  • 我可以通过使用LogonUser Windows API调用来完成#1。我搞不懂的是如何为用户获取广告组列表。我甚至不确定当用户登录到计算机并缓存其凭据时是否存储了这些信息。因此,我的问题是:

  • 用户的AD组是否存储在windows本地凭据缓存中
  • 如果它们已存储,如何以编程方式从Windows凭据缓存中提取它们

  • 当用户登录到域时,会为其分配一个安全令牌,其中包含有关其组成员身份的信息。当他们注销时,它将被丢弃。因此#1的答案是否定的。如果网络不可用,您无法验证用户名/密码。如果用户登录到他们上次登录的同一台机器,他们可能可以使用缓存的凭据登录到机器本身,但仅此而已。不过,您无法检索该用户的广告组成员列表;如果网络不存在,则无法从中检索该列表,并且它们不会被缓存,因为它们可能随时更改,并且成员资格被吊销,因此在登录时读取,在注销时完全丢弃。