Procédure : obtenir la liste de contrôle d'accès pour un objet de métadonnées
Dans la hiérarchie des objets de métadonnées du catalogue de données métiers, chaque objet (Application, Entity, Method, MethodInstance, Parameter, TypeDescriptor, etc.) possède une liste de contrôle d'accès (ACL). Cette liste spécifie quelles entités de sécurité ont des droits sur l'objet, et lesquels. Parmi les 13 objets de métadonnées, seuls LobSystem, Entity, Method et MethodInstance possèdent des listes de contrôle d'accès qui peuvent être contrôlées individuellement. Ces objets sont désignés comme des objets de métadonnées sécurisables individuellement. Les autres objets de métadonnées héritent des listes de contrôle d'accès de leur parent immédiat et sont désignés comme des objets de métadonnées à accès contrôlé.
Les clients de données métiers tels que les composants WebPart Liste de données métiers et Données métiers sont pilotés par les autorisations du catalogue de données métiers. L'autorisation minimale requise sur une entité afin qu'elle puisse être utilisée dans les clients est l'autorisation Sélectionnable dans les clients.
Notes
Étant donné que le catalogue de données métiers est un service partagé dans les collections de site, les paramètres de sécurité des niveaux de collection de sites ne peuvent pas y être appliqués. Par conséquent, les paramètres de sites ont peu de relation avec les autorisations du catalogue de données métiers.
Le tableau suivant montre les droits de l'administrateur, ou de la personne possédant le droit Gérer les autorisations, définis sur une application de catalogue de données métiers.
Droit | S'applique à | Description |
---|---|---|
Editer |
Objets de métadonnées à accès contrôlé |
|
Gérer les autorisations |
Objets de métadonnées sécurisables individuellement |
|
Exécuter (Afficher) |
MethodInstance |
|
Sélectionnable dans les clients |
Application et entité |
|
Exemple
Le code exemple suivant montre comment extraire la liste de contrôle d'accès pour une instance LobSystem enregistrée dans le catalogue de données métiers.
Prérequis
Assurez-vous qu'un fournisseur de services partagés est déjà créé.
Créez une instance LobSystem et définissez les paramètres de connexion comme indiqué dans Procédure : créer un objet LobSystem à l'aide du modèle objet Administration.
Créez l'entité ProductModel comme indiqué dans Procédure : créer une entité à l'aide du modèle objet Administration.
Créez une méthode Finder comme indiqué dans Procédure : créer une méthode et des filtres à l'aide du modèle d'objet d'administration.
Remplacez la valeur de constante EnterYourSSPNameHere dans le code par le nom du fournisseur de ressources partagées.
Références de projet
Ajoutez les références de projet suivantes dans le projet de code de votre application console avant d'exécuter ce code exemple :
Microsoft.SharePoint
Microsoft.SharePoint.Portal
Microsoft.Office.Server
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Office.Server.ApplicationRegistry.Administration;
using Microsoft.Office.Server.ApplicationRegistry.Infrastructure;
using WSSAdmin = Microsoft.SharePoint.Administration;
using OSSAdmin = Microsoft.Office.Server.Administration;
namespace Microsoft.SDK.SharePointServer.Samples
{
class GetStartedAndCreateSystem
{
const string yourSSPName ="EnterYourSSPNameHere";
static void Main(string[] args)
{
SetupBDC();
GetAccessControlList();
Console.WriteLine("Press any key to exit...");
Console.Read();
}
static void SetupBDC()
{
SqlSessionProvider.Instance().SetSharedResourceProviderToUse(yourSSPName);
}
public static void GetAccessControlList()
{
LobSystemInstance mySysInstance = null;
LobSystemInstanceCollection sysInsCollection = ApplicationRegistry.Instance.GetLobSystemInstancesLikeName("AdventureWorksSampleFromCode");
foreach (LobSystemInstance sysInstance in sysInsCollection)
{
if (sysInstance.Name == "AdventureWorksSampleFromCode")
{
mySysInstance = sysInstance;
break;
}
}
LobSystem ls = mySysInstance.LobSystem;
IAccessControlList acl = ls.GetAccessControlList();
foreach (IAccessControlEntry ace in acl)
{
Console.WriteLine(ace.IdentityName);
Console.WriteLine(ace.Rights);
}
}
}
}