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