Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Nota
El nuevo y mejorado centro de administración de Power Platform ya está en versión preliminar pública. Hemos diseñado el nuevo centro de administración para que sea más fácil de usar, con una navegación orientada a tareas que le ayuda a lograr resultados específicos más rápido. Iremos publicando documentación nueva y actualizada a medida que el nuevo centro de administración de Power Platform pase a estar disponible de forma general.
El uso de la tabla Documentos de SharePoint en un entorno Dynamics 365 fuera de la cuadrícula de documentos en una aplicación basada en modelos requiere una aplicación Azure para conceder acceso. Entre los ejemplos de este acceso se incluyen el uso dentro de Power Automate o mediante llamadas a la API Dataverse. La instalación usa las Identidades Administradas de Power Platform con Azure para conceder acceso.
A partir de marzo de 2025, se elimina el acceso actual para mejorar la protección del sistema. Para garantizar el acceso continuado, siga estos pasos para crear una aplicación Azure con los permisos necesarios SharePoint, configurar identidades administradas en Dataverse y configurar credenciales federadas.
Crear una aplicación de Azure con permisos SharePoint
Cree un registro de la aplicación con permiso API a SharePoint. Obtenga más información sobre cómo registrar una aplicación y acceder a SharePoint en Inicio rápido de registro de aplicación de Azure y Acceso a SharePoint mediante solo la aplicación Azure AD.
Abra el Azure Portal.
En Servicios Azure, seleccione Registros de aplicaciones.
Seleccione Nuevo registro.
Escriba un Nombre para la aplicación.
En Tipos de cuenta compatibles, seleccione Cuentas solo en este directorio organizativo.
Nota
Otros tipos no son compatibles en este momento.
Seleccione Registrar para crear el Registro de aplicación.
Anote los valores de ID de la aplicación (cliente) e ID del directorio (inquilino):
En la lista de navegación, seleccione Descripción general.
En Essentials, copie los valores de Id. de aplicación (cliente) e Id. de directorio (inquilino) para usarlos en la siguiente sección.
En la lista de navegación, seleccione Administrar>Permisos de API.
En Permisos configurados, seleccione Agregar un permiso para abrir el panel Solicitar permisos de API.
Seleccione SharePoint.
En ¿Qué tipo de permisos requiere la aplicación?, seleccione Permisos de la aplicación.
En Seleccionar permisos, seleccione Sites.FullControl.All.
Seleccione Agregar permisos para crear el permiso de SharePoint.
Seleccione Conceder consentimiento de administrador para
<tenant name>
.
Crear identidades administradas en Dataverse
Crear registros de identidad administrado en Dataverse. Obtenga más información sobre las identidades administradas en Configuración de identidades administradas de Dataverse.
Agregue un registro en la tabla de Identidades administradas
Inserte una fila en la tabla managedidentities
utilizando valores de la siguiente tabla.
Campo tabla | valor |
---|---|
applicationid |
Use el valor del ID de la aplicación (cliente) de la primera sección |
tenantid |
Use el valor del ID de directorio (inquilino) de la primera sección |
managedidentityid |
Crear nuevo GUID |
credentialsource |
2 |
subjectscope |
1 |
Un ejemplo usando POST:
Solicitud:
https://contoso.crm.dynamics.com/api/data/v9.0/managedidentities
Cuerpo:
{ "applicationid": "<appId>", "managedidentityid": "<newGuid>", "credentialsource": 2, "subjectscope": 1, "tenantid": "<tenantId>" }
Agregue un registro en la tabla de Identidades administradas de SharePoint
Inserte una fila en la tabla sharepointmanagedidentity
utilizando valores de la siguiente tabla.
Campo tabla | valor |
---|---|
sharepointmanagedidentityid |
Crear nuevo GUID |
uniquename |
"msft_ppmiforsharepointauth" |
name |
"Identidad administrada para autor de SharePoint" |
ManagedIdentity@odata.bind |
/managedidentities(<managedidentityid>) reemplazando <managedidentityid> con el valor de la sección anterior |
Un ejemplo usando POST:
Solicitud:
https://contoso.crm.dynamics.com/api/data/v9.0/sharepointmanagedidentities
Cuerpo:
{ "sharepointmanagedidentityid": "<newGuid>", "uniquename": "msft_ppmiforsharepointauth", "name": "Managed Identity For SharePoint Auth", "ManagedIdentityId@odata.bind": "/managedidentities(<managedIdentityId>)" }
Crear credencial federada
Crear una credencial federada para el registro de aplicación. Obtenga más información sobre las credenciales de identidad federada en Configurar una aplicación para credencial de identidad federada.
Nota
Las credenciales de identidad federada a través de la identidad administrada de Power Platform están disponibles con carácter general y son totalmente compatibles con la integración de documentos de SharePoint. La identidad administrada de Power Platform se usa para muchos escenarios, pero no todos están disponibles con carácter general. Sin embargo, este caso es totalmente compatible.
Abra el Azure Portal.
Seleccione Microsoft Entra ID.
En la lista de navegación, seleccione Administrar>Registros de aplicaciones.
En la lista de aplicaciones, seleccione el nombre de registro de la aplicación creado en la sección anterior.
En la lista de navegación, seleccione Administrar>Certificados y secretos.
Seleccione la pestaña Credenciales federadas.
Seleccione Agregar credencial.
En el campo Escenario de credenciales federadas, seleccione Otro emisor.
En el campo Emisor, introduzca la URL del emisor:
- Valor de formato:
https://login.microsoftonline.com/<tenantId>/v2.0
- Reemplace
<tenantId>
con el valor GUID de ID de directorio (inquilino) de la sección anterior.
- Valor de formato:
En el campo Valor, introduzca el identificador de asunto:
- Valor de formato:
/eid1/c/pub/t/<base64-encoded-tenantId>/a/<base64-encoded-appid>/Env/<orgid>/sharepointmanagedidentity/<sharepointmanagedidentityid>
- Reemplace
<base64-encoded-tenantId>
con el Id. de inquilino codificado en based64. - Reemplace
<base64-encoded-appid>
con el Id. de cliente de aplicación codificado en base64. - Reemplace
<orgid>
por el Id. de la organización. - Sustituya
<sharepointmanagedidentityid>
con el GUID creado anteriormente en el registro sharepointmanagedidentities.
[NOTA!] Use el script en Generar el identificador de asunto para generar el valor del identificador de asunto con los valores codificados en base64.
- Valor de formato:
Seleccione Agregar para crear la credencial.
Siga estos pasos para configurar una aplicación Azure con los permisos necesarios SharePoint, configurar identidades administradas en Dataverse y configurar credenciales federadas.
Genere el identificador de sujeto
Este script genera el valor de identificador de sujeto en función de los valores proporcionados en JavaScript.
Abra la aplicación de Dynamics 365 en un navegador.
Abra las herramientas del explorador en la consola.
Copie el siguiente JavaScript y establezca el valor de la variable sharePointManagedIdentityId.
// Replace with the id for SharePoint Managed Identity that was created attribute name: sharepointmanagedidentityid. // Refer to the following documentation for configuring an aad app for SharePoint access: // https://learn.microsoft.com/en-us/power-platform/admin/configure-azure-app-with-sharepoint-access // For the SharePoint Managed Identity creation, refer to the following documentation: // https://learn.microsoft.com/en-us/power-platform/admin/configure-azure-app-with-sharepoint-access#add-record-in-sharepoint-managed-identities-table const sharePointManagedIdentityId = ""; const prefixForFICIssuer = "https://login.microsoftonline.com/"; const suffixForFICIssuer = "/v2.0"; const prefixForFICSubject = "/eid1/c/pub"; const tenantIdentifierForFICSubject = "/t/"; const appIdentifierForFICSubject = "/a/"; const environmentIdentifierForFICSubject = "/Env/"; const sharePointManagedIdentityIdentifierForFICSubject = "/sharepointmanagedidentity/"; // This is the AAD App Id to be used for Power Platform Managed Identity: 58e835ab-2e39-46a9-b797-accce6633447 const powerPlatformManagedIdentityAppId = "58e835ab-2e39-46a9-b797-accce6633447"; /** * Represents a request for retrieving the current organization. * @param {number} accessType - The access type (0 for Default, 1 for Internet, 2 for Intranet). */ var RetrieveCurrentOrganizationRequest = function (accessType) { this.AccessType = accessType; }; /** * Gets metadata for the request. * @returns {Object} The metadata for the request. */ RetrieveCurrentOrganizationRequest.prototype.getMetadata = function() { return { boundParameter: null, parameterTypes: { "AccessType": { "typeName": "Microsoft.Dynamics.CRM.EndpointAccessType", "structuralProperty": 3, // Enum Type "enumProperties": [ { "name": "Default", "value": 0 }, { "name": "Internet", "value": 1 }, { "name": "Intranet", "value": 2 } ] } }, operationType: 1, // This is a function operationName: "RetrieveCurrentOrganization" }; }; /** * Encodes a GUID to a Base64 URL-safe string. * * @param {string} guid - The GUID to encode. * @returns {string} The Base64 URL-safe encoded string. * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/btoa} */ function encodeToBase64Url(guid) { const buffer = []; const regex = /.{1,2}/g; guid.split('-').forEach((number, index) => { const bytesInChar = number.match(regex); if (index < 3) bytesInChar.reverse(); bytesInChar.forEach(byte => buffer.push(parseInt(byte, 16))); }); const base64String = btoa(String.fromCharCode.apply(null, new Uint8Array(buffer))); // Make the Base64 string URL-safe by replacing '+' with '-' and '/' with '_' // Remove any trailing '=' characters return base64String.slice(0, 22).replace(/=+$/, '').replace(/\+/g, '-').replace(/\//g, '_'); } /** * Construct the issuer URL using the tenant ID. * This is needed for the issuer url in FIC configuration. * @param {string} tenantId - The tenant ID. * @returns {string} The constructed issuer URL. * @example * // Example for output * // https://login.microsoftonline.com/your-tenant-id/v2.0 */ function constructIssuerUrlForFIC(tenantId) { return `${prefixForFICIssuer}${tenantId}${suffixForFICIssuer}`; } /** * Constructs the subject url using the encoded tenant ID, encoded app ID, environment ID, and SharePoint managed identity ID. * This is needed for the subject url in FIC configuration. * @param {string} encodedTenantId - The encoded tenant ID. * @param {string} encodedAppId - The encoded app ID. * @param {string} environmentId - The environment ID. * @param {string} sharePointManagedIdentityId - The SharePoint managed identity ID. * @returns {string} The constructed subject string. * @example * // Example output: /eid1/c/pub/t/<EncodedTenantId>/a/<EncodedDV1PAppId>/Env/<EnvironmentId>/sharepointmanagedidentity/<sharePointManagedIdentityId> */ function constructSubjectUrlForFIC(encodedTenantId, encodedAppId, environmentId, sharePointManagedIdentityId) { return `${prefixForFICSubject}${tenantIdentifierForFICSubject}${encodedTenantId}${appIdentifierForFICSubject}${encodedAppId}${environmentIdentifierForFICSubject}${environmentId}${sharePointManagedIdentityIdentifierForFICSubject}${sharePointManagedIdentityId}`; } (async () => { try { // Check if sharePointManagedIdentityId is null or undefined if (!sharePointManagedIdentityId) { console.error("SharePoint Managed Identity ID is null or undefined. Please ensure that the SharePoint Managed Identity ID is set."); return; } const accessType = 0; const retrieveCurrentOrganizationRequest = new RetrieveCurrentOrganizationRequest(accessType); // Execute the request to retrieve the current organization details // https://docs.microsoft.com/en-us/powerapps/developer/model-driven-apps/clientapi/reference/xrm-webapi/online/execute // https://learn.microsoft.com/en-us/power-apps/developer/data-platform/webapi/web-api-functions-actions-sample#section-4-unbound-function-retrievecurrentorganization const response = await Xrm.WebApi.online.execute(retrieveCurrentOrganizationRequest); const result = await response.json(); if (result.Detail) { const { EnvironmentId: environmentId, TenantId: tenantId } = result.Detail; const encodedTenantId = encodeToBase64Url(tenantId); const encodedPowerPlatformManagedIdentityAppId = encodeToBase64Url(powerPlatformManagedIdentityAppId); const issuerUrlForFederatedCredentialConfig = constructIssuerUrlForFIC(tenantId); const subjectUrlForFederatedCredentialConfig = constructSubjectUrlForFIC(encodedTenantId, encodedPowerPlatformManagedIdentityAppId, environmentId, sharePointManagedIdentityId); console.log(`SharePoint Managed Identity ID: ${sharePointManagedIdentityId}, Tenant ID: ${tenantId}, Encoded Tenant ID: ${encodedTenantId}, Power Platform Managed Identity App ID: ${powerPlatformManagedIdentityAppId}, Encoded App ID: ${encodedPowerPlatformManagedIdentityAppId}, Issuer URL for Federated Credential Configuration: ${issuerUrlForFederatedCredentialConfig}, Subject URL for Federated Credential Configuration: ${subjectUrlForFederatedCredentialConfig}`); } else { console.error("RetrieveCurrentOrganization response is missing detail."); } } catch (error) { console.error(`Error executing request: ${error.message}`); } })();
Pegue en la consola para ejecutar.
Copie el identificador de asunto y péguelo en el campo Valor de Agregar credencial.