Dns 未连接到域时如何获取Active Directory域组列表
在我的公司,我们有一个定制的人机界面。如果用户愿意,此HMI可以使用计算机域登录。这是我们目前正在尝试解决的情况Dns 未连接到域时如何获取Active Directory域组列表,dns,active-directory,sid,active-directory-group,windows-principal,Dns,Active Directory,Sid,Active Directory Group,Windows Principal,在我的公司,我们有一个定制的人机界面。如果用户愿意,此HMI可以使用计算机域登录。这是我们目前正在尝试解决的情况 当用户以域用户身份登录Windows时,他们使用相同的Windows凭据登录HMI-一切顺利 网络连接中断,用户重新启动计算机 用户可以像以前一样使用相同的域登录登录到Windows(Windows缓存用户允许此操作) 用户尝试登录到我们的HMI,但他们无法登录,因为我还不知道如何访问这些缓存的active directory用户 下面是我现在使用的代码,用于检测用户是否是允许登录H
SERVER\BUILDER
If DuplicateToken(token, 2, tokenDuplicate) <> 0 Then
tempWindowsIdentity = New WindowsIdentity(tokenDuplicate)
AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal)
WinPrincipal = New WindowsPrincipal(tempWindowsIdentity)
End If
If WinPrincipal.IsInRole(user.Group) Then
'Success - obviously there's more code after this
End If
然后我像这样查找组名
If File.Exists(FILEPATH) = True Then
Dim reader As New StreamReader(FILEPATH)
While Not reader.EndOfStream
Dim sTemp() As String = reader.ReadLine.Split(",")
If groupName.Equals(sTemp(0)) Then
Return New SecurityIdentifier(sTemp(1))
End If
End While
End If
当不在网络上时,我无法将组名转换为SID的原因是,IdentityReference.translate
由于无法查看域而引发异常
所以,在所有这些解释之后,我终于找到了我想要的。我认为我必须在某个地方访问才能从组名中获取SID,因为windows必须将其存储在某个地方,否则在未连接到网络时我将无法登录到windows
我已经做了大量的搜索,但我无法找出这些缓存的凭据存储在哪里。任何帮助都将不胜感激,如果我不够清楚,请让我知道,我会尽力解释。我知道它很旧,但对我来说是真实的。 作为一篇熟悉的帖子,我将链接以下内容:
建议的解决方案是将SID存储在本地空间中,这似乎是最好的主意。您知道,我实际上忘记了更新它,但这就是我最终要做的。我加密了我们数据库中的SID,它似乎起作用了。谢谢你的回答。
If File.Exists(FILEPATH) = True Then
Dim reader As New StreamReader(FILEPATH)
While Not reader.EndOfStream
Dim sTemp() As String = reader.ReadLine.Split(",")
If groupName.Equals(sTemp(0)) Then
Return New SecurityIdentifier(sTemp(1))
End If
End While
End If