2008-11-05 7 views
5

Je développe une application intranet dans ASP.NET qui utilise l'authentification Windows. J'ai créé une classe AD qui obtient des informations du contrôleur de domaine Active Directory. C'est ce que j'utilise pour obtenir des choses comme des groupes d'utilisateurs dans lesquels se trouve l'utilisateur actuellement connecté. Le problème est dans les rôles ASP.NET dans lesquels se trouve l'utilisateur. Cela semble amusant, mais la liste des groupes AD dans lesquels se trouve l'utilisateur est totalement différent de la liste des rôles que l'utilisateur a.AspNetWindowsTokenRoleProvider ne fonctionne pas correctement pour l'authentification Windows dans ASP.NET

Voici ce que je reçois:

Liste des groupes AD pour un utilisateur certian

  1. Développeurs
  2. Opérateurs de compte
  3. Domain Admins
  4. IS_IUSRS
  5. Administrateurs

Liste du même Rôles de l'utilisateur

  1. PUDDOM \ Utilisateurs du domaine
  2. Tout le monde
  3. BUILTIN \ Users
  4. BUILTIN \ Administrateurs
  5. NT AUTHORITY \ INTERACTIVE
  6. NT AUTHORITY \ Utilisateurs authentifiés
  7. NT AUTHORITY \ Cette organisation
  8. LOCAL
  9. PUDDOM \ Domain Admins
  10. PUDDOM \ Refusé mot de passe RODC groupe de réplication
  11. PUDDOM \ DnsAdmins

AUTRES INFORMATIONS:

  1. mon site web utiliser l'authentification Windows intégrée de IIS7 .
  2. Une partie de mon web.config ressemble

ceci:

<authentication mode="Windows" /> 
<authorization> 
    <deny users="?" /> 

</authorization> 

<roleManager defaultProvider="AspNetWindowsTokenRoleProvider" enabled="true"> 
     <providers> 
      <remove name="AspNetSqlRoleProvider" /> 
     </providers> 
</roleManager> 

Comment concilier la liste?

Je dois faire en sorte que ma liste de rôles reflète les mêmes données que ma liste de groupes AD car j'utiliserai le découpage de rôle dans mon plan du site et d'autres éléments.

Répondre

0

Vous devrez peut-être attribuer les autorisations de site Web spécifiquement aux groupes que vous souhaitez énumérer.

+0

Veuillez préciser comment procéder. Je pense que c'est mon problème et je veux vous voter si cela résout. – Jan

4

Une partie de votre résultat provient du fait que certains groupes auxquels l'utilisateur appartient appartiennent à d'autres groupes. La liste complète des groupes d'un utilisateur inclura tous les groupes auxquels l'utilisateur appartient, à la fois directement et via l'appartenance à d'autres groupes qui sont également membres.

La liste comprendra également des groupes intégrés qui sont normalement masqués par défaut dans les outils d'administration natifs. Le mieux est de faire en sorte que l'application stocke une liste principale des groupes que vous souhaitez voir afficher par votre application ou une liste de groupes que vous souhaitez ignorer (application ou liste d'exclusion). Ensuite, lorsque vous annulez les rôles d'un utilisateur spécifique, comparez-le à la liste d'exclusion ou d'inclusion configurée et filtrez les résultats indésirables.

Si vous voulez un moyen plus facile, il existe un open source AD role provider over at codeproject qui prend déjà en charge les listes d'exclusion et d'inclusion. Il a également d'autres fonctionnalités intéressantes comme la mise en cache optionnelle qui va vraiment accélérer votre application. Le fournisseur de rôle AD build-in fonctionne très mal.

Questions connexes