.net - permisos - usuario para unir a dominio



¿Cómo puedo determinar si un grupo de AD contiene un DirectoryEntry dado de otro dominio(de confianza)? (1)

Bueno. Lo encontré. Aquí está el truco.

Estoy tratando de reforzar mi código que determina si un usuario es miembro de un determinado grupo de AD. Funciona esencialmente, excepto cuando el miembro del grupo pasa a ser de otro dominio (de confianza) porque se almacena como un perfil de seguridad exterior.

(Ejemplo de código VB.NET)

Dim ContainerGroup as DirectoryEntry = ... Code to get Group
Dim UserToCheckFor as DirectoryEntry = ... Code to get User

DSearcher = New DirectorySearcher
Dim DSearcher As New DirectorySearcher(ContainerGroup, getLDAPQueryStringUsingSID(containedGroup), New String() {"member;Range=0-5000"}, SearchScope.Base)

Return (DSearcher.FindOne() IsNot Nothing) 


** Helper Methods **

Private Function getLDAPQueryStringUsingSID(ByVal DEObject As DirectoryEntry) As String            
  Return "(objectSid=" + getSDDLSidForDirectoryEntry(DEObject) + ")"
End Function

Private Function getSDDLSidForDirectoryEntry(ByVal DEObject As DirectoryEntry) As String
      Dim bytes As Byte() = CType(DEObject.Properties("objectSid").Value, Byte())
      Dim sid As New System.Security.Principal.SecurityIdentifier(bytes, 0)
      Return sid.ToString
End Function

Estoy tratando de reforzar mi código que determina si un usuario es miembro de un determinado grupo de AD. Funciona esencialmente, excepto cuando el miembro del grupo pasa a ser de otro dominio (de confianza) porque se almacena como un perfil de seguridad exterior.

Dado que tengo un objeto DirectoryEntry válido tanto para el grupo que quiero probar como para la cuenta que deseo verificar, necesito una cadena de filtro de DirectorySearcher que me permita confirmar que la cuenta está en ese grupo, incluso si la cuenta es unprincipal de seguridadexterna.

(Código VB.NET Muestra que demuestra el problema)

Dim ContainerGroup as DirectoryEntry = ... Code to get Group
Dim UserToCheckFor as DirectoryEntry = ... Code to get User

DSearcher = New DirectorySearcher(ContainerGroup, "(WHATCANIPUTINHERE)", New String() {"member;Range=0-5000"}, SearchScope.Base)
DSearcher.AttributeScopeQuery = "member"

'If an object is found, the account was in the group
Return (DSearcher.FindOne() IsNot Nothing)  




adsi