Procedimiento para obtener la Lista de control de acceso para el objeto de metadatos
Todos los objetos de la jerarquía del Catálogo de datos profesionales de los objetos de metadatos (Application, Entity, Method, MethodInstance, Parameter, TypeDescriptor, etc.) tienen una lista de control de acceso (ACL) que especifica los derechos que tienen los principales sobre el objeto. De los 13 objetos de metadatos, sólo LobSystem, Entity, Method y MethodInstance tienen listas ACL que se pueden controlar de manera individual. Estos objetos se denominan objetos de metadatos protegibles individualmente. Otros objetos de metadatos heredan las listas ACL de sus objetos primarios inmediatos y se denominan objetos de metadatos con control de acceso.
Los clientes de datos profesionales como los datos profesionales en listas y los elementos web de datos profesionales están controlados por permisos del Catálogo de datos profesionales. Los permisos mínimos necesarios en una entidad para que se puedan usar en clientes es el derecho Seleccionable en clientes.
Nota
Puesto que el Catálogo de datos profesionales es un servicio compartido que se comparte en las colecciones de sitios, la configuración de seguridad del nivel de colección del sitio no se le puede aplicar. Por lo tanto, la configuración del sitio tiene poca relación con los permisos del Catálogo de datos profesionales.
La siguiente tabla muestra los derechos que el administrador, o alguien con el derecho Administrar permisos, puede establecer en una aplicación de Catálogo de datos profesionales.
Derecha | Se aplica a | Descripción |
---|---|---|
Edición |
Objetos de metadatos con control de acceso |
|
Administrar permisos |
Objetos de metadatos protegibles individualmente |
|
Ejecutar (Ver) |
MethodInstance |
|
Seleccionable en clientes |
Aplicación y entidad |
|
Ejemplo
El siguiente ejemplo de código muestra cómo recuperar la lista ACL para una instancia LobSystem que está registrada en el Catálogo de datos profesionales.
Requisitos previos
Asegúrese de que el proveedor de servicios compartidos ya está creado.
Cree una instancia LobSystem y establezca los parámetros de conexión como se muestra en Procedimiento para crear LobSystem mediante el modelo de objetos de administración.
Cree la entidad ProductModel como se muestra en Procedimiento para crear una entidad mediante el modelo de administración de objetos.
Cree un método Finder como se muestra en Procedimiento para crear un método y filtros mediante el modelo de objetos de administración.
Reemplace el valor constante EnterYourSSPNameHere en el código con el nombre del proveedor de recursos compartidos.
Referencias del proyecto
Antes de ejecutar este ejemplo, agregue las siguientes referencias de proyecto al proyecto de código de aplicación de consola:
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);
}
}
}
}