7
votes

Trouver si l'utilisateur est membre du groupe Active Directory GROUP ASP.NET VB?

J'utilise Active Directory pour authentifier les utilisateurs d'un site intranet. Je souhaite affiner les utilisateurs authentifiés basé sur le groupe qu'ils figurent dans Active Directory. Quelqu'un peut-il me montrer ou signifier moi-même à des directions sur la manière de trouver les groupes Un utilisateur dans ASP.NET 4.0 (VB)?


0 commentaires

5 Réponses :


3
votes

J'ai trouvé ce ici . XXX


0 commentaires

4
votes

Pour ceux qui peuvent être intéressés, voici comment j'ai fini par coder:

Dim ID As FormsIdentity = DirectCast(User.Identity, FormsIdentity)
    Dim ticket As FormsAuthenticationTicket = ID.Ticket
    Dim adTicketID As String = ticket.Name
    Dim adSearch As New DirectorySearcher
    adSearch.Filter = ("(userPrincipalName=" & adTicketID & ")")
    Dim adResults = adSearch.FindOne.Path
    Dim adResultsDirectory As New DirectoryEntry(adResults)
    Dim found As Boolean = False
    For Each entry In adResultsDirectory.Properties("memberOf")
        Response.Write(entry)
        Response.Write("<br/>")
        If entry = "CN=GroupName,CN=UserGroup,DC=my,DC=domain,DC=com" Then
            found = True
        End If

    Next
    If Not (found) Then
        Response.Redirect("login.aspx")
    End If


0 commentaires

11
votes

Je réalise que ce post est assez vieux mais je pensais que je pourrais le mettre à jour avec des processus que j'utilise. (ASP.NET 4.0, VB)

Si vous utilisez la sécurité Windows intégrée, sur un domaine. P>

page.user.isinrole ("domaine \ groupname") code> vérifiera Voyez si l'utilisateur authentifié est membre du groupe spécifié. P>

Si vous souhaitez vérifier une appartenance à un autre groupe d'utilisateurs autre que l'utilisateur authentifié. p>

deux étapes pour vérifier plusieurs groupes avec le même utilisateur principal: P>

Dim blnValid2 As Boolean = New System.Security.Principal.WindowsPrincipal _
     (New System.Security.Principal.WindowsIdentity("userID")).IsInRole("domain\GroupName")


0 commentaires

5
votes

Je pense que j'ai la fonction ultime pour obtenir tous les groupes d'annonces d'un utilisateur incluaient des groupes imbriqués sans récursion explicite:

Importations System.Security.Principal P>

Private Function GetGroups(userName As String) As List(Of String)
    Dim result As New List(Of String)
    Dim wi As WindowsIdentity = New WindowsIdentity(userName)

    For Each group As IdentityReference In wi.Groups
        Try
            result.Add(group.Translate(GetType(NTAccount)).ToString())
        Catch ex As Exception
        End Try
    Next

    result.Sort()
    Return result
End Function


0 commentaires

0
votes

Pour vérifier simplement si un utilisateur est membre d'un groupe comprenant des sous-groupes, utilisez simplement:

    Public Function IsInGroup(ByVal objectName As String, groupName As String) As Boolean
        Try
            return New WindowsPrincipal(New WindowsIdentity(objectName)).IsInRole(groupName))
        Catch ex As Exception
        End Try

        Return False
    End Function


0 commentaires