2009-10-16 18 views
1

J'utilise AzMan sur Windows Server 2003 et j'ai écrit une application de gestion qui masque complètement AzMan et la console MMC de l'équipe de sécurité. Cependant, j'ai du mal à mettre en œuvre l'une des fonctionnalités de la console MMC.Affectez un rôle à une étendue dans Microsoft AzMan par programme?

J'ai un rôle appelé Utilisateur et un rôle appelé Utilisateur de branche qui ne contient que le rôle Utilisateur. Je souhaite affecter le rôle Utilisateur au niveau de toutes les données (Attributions de rôle) et le rôle Utilisateur de branche au niveau de l'étendue. Cependant, je ne peux pas trouver un moyen d'affecter par programme le rôle d'utilisateur de branche à une étendue sans perdre sa définition. Je peux assigner le rôle (en appelant CreateRole sur la portée) mais il semble juste créer un nouveau rôle vide. Lorsque je clique avec le bouton droit dans la console MMC, cliquez sur Propriétés, puis sur Afficher la définition, elle n'a rien.

En outre, si j'essaie d'appeler AddTask sur cet objet IAzRole pour y ajouter "User", cela ne fonctionne pas comme prévu. Il ajoutera toutes les tâches du rôle Utilisateur à mon rôle d'utilisateur de branche, mais pas le rôle lui-même.

Existe-t-il un moyen de le faire? Je ne peux pas comprendre.

+0

Alors j'ai juste eu un moment "oh duh". J'appelle par programmation CreateRole ("Branch User", null) puis sur cet objet IAzRole, appelez AddTask ("Branch User", null) et il fait ce que je veux. J'expérimente encore pour voir s'il y a des effets secondaires indésirables à cela ... Je ne suis pas sûr que ce soit la bonne façon, mais c'est logique maintenant que j'y pense avec le modèle AzMan. Quelqu'un sait-il à coup sûr si c'est comme ça que je suis censé le faire? –

Répondre

1

Oui, sur WIN2k3 c'est la bonne façon. Malheureusement, dans les versions d'AzMan antérieures à Vista/Win2k8, une définition de rôle est une tâche avec task.IsRoleDefinition définie sur 1. Elle a sa propre classe bien nommée dans les versions plus récentes.

Fondamentalement CreateRole() crée une attribution de rôle, pas une définition de rôle (Cela ne doit pas forcément avoir le nom "utilisateur de branche", il pourrait être n'importe quoi). Une attribution de rôle contient les liens entre les définitions de rôles/tâches/opérations et les membres/utilisateurs.

Vous ajoutez ensuite le rôle "Utilisateur de la branche" à l'attribution de rôle à l'aide d'app.AddTask(). Pour ce faire, vous devez appeler app.OpenScope (ou app.CreateScope, si nouveau) pour renvoyer un objet IAzScope. Vous pouvez ensuite faire tout ce qui précède sur scope.CreateTask ou scope.CreateRole.

J'espère que cela aide ..