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)? P>
5 Réponses :
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
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>
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> page.user.isinrole ("domaine \ groupname") code> vérifiera Voyez si l'utilisateur authentifié est membre du groupe spécifié. P> Dim blnValid2 As Boolean = New System.Security.Principal.WindowsPrincipal _
(New System.Security.Principal.WindowsIdentity("userID")).IsInRole("domain\GroupName")
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
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