Guía paso a paso para implementar AccessPoint en su entorno de Microsoft 365 y Azure
Last updated: July 12, 2026 by Steve
Guía de implementación
AccessPoint utiliza un modelo de implementación dividido: un elemento web SPFx ligero en SharePoint, una aplicación de Teams que aloja el mismo elemento web como una pestaña personal y un backend de Azure que ejecuta la API y almacena todos los datos. Cada componente se instala en su propio inquilino de Microsoft 365 y suscripción de Azure: nada está alojado por el publicador y ningún dato de cliente sale de su entorno.
Descripción general
| Componente | Obténgalo de | Se instala en |
|---|---|---|
Elemento web SPFx (accesspoint.sppkg) |
Microsoft AppSource o carga directa a su catálogo de aplicaciones | Su inquilino de SharePoint Online |
Aplicación de Teams (accesspoint-teams.zip) |
Microsoft AppSource o carga al Centro de administración de Teams | Su catálogo de aplicaciones de Teams |
| Backend de Azure (App Service, SQL, Blob Storage, Application Insights) | Plantilla Bicep/ARM con un solo clic desde el portal de Azure (recomendado) o Bicep con scripts + PowerShell | Su suscripción de Azure |
Para nubes soberanas o gubernamentales, fijación de versiones o implementaciones con scripts, todos los artefactos también se publican en https://get.realizer.io/public/accesspoint/latest/.
El orden de instalación importa. Instale la solución de SharePoint antes de que cualquier usuario abra la pestaña personal de Teams. La aplicación de Teams carga el elemento web SPFx desde SharePoint en un iframe: sin ella, los usuarios verán un error 404 de SharePoint dentro de Teams.
Requisitos previos
- Una suscripción activa de AccessPoint y una clave de API de licencia (obtenga AccessPoint)
- Una suscripción de Azure con derechos de Colaborador (o superiores) sobre el grupo de recursos de destino
- Un catálogo de aplicaciones de SharePoint aprovisionado en su inquilino, además de derechos de Administrador de SharePoint
- Administrador global o Administrador de aplicaciones en Entra ID para las concesiones de permisos de Graph y el consentimiento del administrador
- Administrador de Teams (o Administrador global) para publicar la aplicación de Teams
- Para implementaciones con scripts o manuales: Azure CLI (con sesión iniciada mediante
az logincomo usuario, no como entidad de servicio) y el módulo PnP.PowerShell
No existe ninguna dependencia de nivel de licencia de Microsoft 365, Power Platform ni Dataverse: cualquier usuario con acceso a SharePoint o Teams puede usar AccessPoint.
Paso 1: Implementar los recursos de Azure
Este paso aprovisiona el backend: un App Service de Linux (la API), Azure SQL Database, Blob Storage y Application Insights con Log Analytics. Los recursos se nombran {type}-accesspoint-{tenantName} (por ejemplo, app-accesspoint-contoso) y están reforzados de forma predeterminada (TLS 1.3, autenticación SQL solo con Entra, FTPS y autenticación básica deshabilitados).
Opción A: Portal de Azure (recomendado). Implemente la plantilla Bicep/ARM de AccessPoint con un solo clic desde el portal de Azure (el botón Implementar en Azure). El formulario de implementación recopila su suscripción y grupo de recursos, el nombre del inquilino (p. ej., contoso de contoso.sharepoint.com), la clave de API de licencia, la SKU del App Service (B1 para evaluación, S1 para producción estándar, P1v3 predeterminada), un correo electrónico de alerta opcional y un conmutador Conceder permisos de Graph (activado de forma predeterminada; requiere Administrador de aplicaciones). El paquete de la API se implementa automáticamente en el App Service: tras la implementación, no existe ninguna dependencia en tiempo de ejecución de servicios externos.

Opción B: Bicep + PowerShell. Para canalizaciones personalizadas o un control de cambios estricto, ejecute el script de implementación contra la plantilla ARM publicada:
Invoke-WebRequest -Uri "https://get.realizer.io/public/accesspoint/latest/Deploy-AccessPoint.ps1" -OutFile "Deploy-AccessPoint.ps1"
# End-to-end: infrastructure, configuration, and both apps
.\Deploy-AccessPoint.ps1 `
-SharePointSiteUrl "https://contoso.sharepoint.com/sites/accesspoint" `
-TemplateUri "https://get.realizer.io/public/accesspoint/latest/main.json" `
-DeploySharePointApp -DeployTeamsApp
El script ejecuta hasta siete pasos: infraestructura, autenticación SQL solo con Entra, concesiones de permisos de Graph, un ciclo de detención/inicio del App Service, la entidad de almacenamiento de SharePoint (URL de la API), aprobaciones de permisos de la API de SPFx e instalaciones opcionales de aplicaciones. Cada uno se puede omitir de forma independiente (-SkipInfrastructure, -SkipGraphPermissions, -SkipSharePoint). Fije una versión con -ArtifactBaseUrl "https://get.realizer.io/public/accesspoint/1.0.0" para obtener implementaciones reproducibles y con integridad verificada (el script comprueba el SHA-256 publicado y se cancela si no coinciden).
Para ejecutar usted mismo las partes de la infraestructura en su lugar:
$TenantName = "contoso"
$ResourceGroup = "rg-accesspoint-$TenantName"
az group create --name $ResourceGroup --location "canadacentral"
$deployment = az deployment group create `
--resource-group $ResourceGroup `
--template-uri "https://get.realizer.io/public/accesspoint/latest/main.json" `
--parameters tenantName=$TenantName appServiceSku=P1v3 `
--output json | ConvertFrom-Json
$appName = $deployment.properties.outputs.appServiceName.value
$apiUrl = $deployment.properties.outputs.appServiceUrl.value
$principalId = $deployment.properties.outputs.appServicePrincipalId.value
# Disable SQL password auth — Entra ID (managed identity) only
az sql server ad-only-auth enable --resource-group $ResourceGroup `
--server-name $deployment.properties.outputs.sqlServerName.value
Concesiones de permisos de Graph. La identidad administrada del App Service necesita cinco permisos de aplicación de Microsoft Graph: Mail.Send, User.ReadBasic.All, TeamsAppInstallation.ReadForUser.All, Application.Read.All y AppCatalog.Read.All. La plantilla los concede automáticamente (grantGraphPermissions=true, el valor predeterminado) cuando el usuario que realiza la implementación tiene el rol de Administrador de aplicaciones o AppRoleAssignment.ReadWrite.All. De lo contrario, concédalos posteriormente:
$graphSpId = az ad sp show --id "00000003-0000-0000-c000-000000000000" --query id -o tsv
$permissions = @(
@{ Name = "Mail.Send"; Id = "b633e1c5-b582-4048-a93e-9f11b44c7e96" }
@{ Name = "User.ReadBasic.All"; Id = "97235f07-e226-4f63-ace3-39588e11d3a1" }
@{ Name = "TeamsAppInstallation.ReadForUser.All"; Id = "9ce09611-f4f7-4abd-a629-a05450422a97" }
@{ Name = "Application.Read.All"; Id = "9a5d68dd-52b0-4cc2-bd40-abcf44ac3a30" }
@{ Name = "AppCatalog.Read.All"; Id = "e12dae10-5a57-4817-b79d-dfbec5348930" }
)
foreach ($perm in $permissions) {
$bodyFile = [System.IO.Path]::GetTempFileName()
@{ principalId = $principalId; resourceId = $graphSpId; appRoleId = $perm.Id } |
ConvertTo-Json | Set-Content -Path $bodyFile -Encoding utf8
az rest --method POST `
--uri "https://graph.microsoft.com/v1.0/servicePrincipals/$principalId/appRoleAssignments" `
--body "@$bodyFile" --headers "Content-Type=application/json" --output none
Remove-Item $bodyFile
}
# Full stop/start (NOT restart) clears the managed identity token cache
az webapp stop --name $appName --resource-group $ResourceGroup
Start-Sleep -Seconds 10
az webapp start --name $appName --resource-group $ResourceGroup
Verificación: navegue a https://<api-url>/api/health y confirme que la respuesta es correcta.
Paso 2: Instalar las aplicaciones de AccessPoint
Instale primero la solución de SharePoint y, a continuación, la aplicación de Teams.
Solución de SharePoint. En la ficha de AppSource, haga clic en Obtenerlo ahora y apruébela en su catálogo de aplicaciones de SharePoint, implementada en todo el inquilino. Como alternativa, cárguela manualmente (Centro de administración de SharePoint > Más características > Aplicaciones > Cargar, marque «Hacer que esta solución esté disponible en todos los sitios») o deje que el script lo haga.

Aplicación de Teams. En la ficha de AppSource, haga clic en Obtenerlo ahora y apruébela en el Centro de administración de Teams, o instale ambas aplicaciones mediante el script (el usuario que ha iniciado sesión debe ser administrador de SharePoint y, además, administrador de Teams o administrador global):
.\Deploy-AccessPoint.ps1 `
-SharePointSiteUrl "https://contoso.sharepoint.com/sites/accesspoint" `
-SkipInfrastructure -SkipGraphPermissions `
-DeploySharePointApp -DeployTeamsApp
NO use la función «Sincronizar con Teams» de SharePoint. Anula de forma silenciosa el valor
webApplicationInfo.iddel manifiesto, lo que rompe las notificaciones de la fuente de actividad de Teams. Cargue la aplicación de Teams directamente en el Centro de administración de Teams.
Verificación: la solución aparece en el catálogo de aplicaciones sin errores y AccessPoint se muestra como Permitida en Centro de administración de Teams > Administrar aplicaciones.
Paso 3: Aprobar los permisos de la API
El paquete SPFx solicita permisos delegados que un administrador de SharePoint debe aprobar. En el Centro de administración de SharePoint, vaya a Avanzado > Acceso a API y apruebe cada solicitud pendiente de AccessPoint (access_as_user en la API de AccessPoint más ámbitos de Graph como User.Read.All, Sites.Read.All, Files.Read.All, Mail.Read).

O bien apruébelos mediante PnP PowerShell:
Connect-PnPOnline -Url "https://contoso-admin.sharepoint.com" -Interactive
$spfxPermissions = @(
@{ Resource = "ed19c96c-a7c5-4dca-8b47-0899c406329f"; Scope = "access_as_user" }
@{ Resource = "Microsoft Graph"; Scope = "User.Read.All" }
@{ Resource = "Microsoft Graph"; Scope = "Sites.Read.All" }
@{ Resource = "Microsoft Graph"; Scope = "Files.Read.All" }
@{ Resource = "Microsoft Graph"; Scope = "Mail.Read" }
)
foreach ($perm in $spfxPermissions) {
Grant-PnPTenantServicePrincipalPermission -Scope $perm.Scope -Resource $perm.Resource
}
Por último, un Administrador global concede el consentimiento del administrador para la aplicación multiinquilino del publicador abriendo https://login.microsoftonline.com/common/adminconsent?client_id=ed19c96c-a7c5-4dca-8b47-0899c406329f en un navegador.
Verificación: la página de acceso a API no muestra ninguna solicitud pendiente de AccessPoint.
Paso 4: Usar AccessPoint en SharePoint o Teams
SharePoint: edite o cree una página, haga clic en +, busque AccessPoint, agregue el elemento web y publique.
Teams: los usuarios encuentran AccessPoint en Aplicaciones > Creado para su organización (la indexación de búsqueda puede tardar entre 15 minutos y varias horas después de la primera instalación). De forma opcional, ánclelo para todos mediante Centro de administración de Teams > Directivas de instalación de aplicaciones, agregando AccessPoint a Aplicaciones instaladas y Aplicaciones ancladas.
Paso 5: Configurar la URL de la API
Abra el elemento web y vaya a Configuración > Instalación. Escriba la URL de la API (la URL del App Service del Paso 1, p. ej., https://app-accesspoint-contoso.azurewebsites.net) y el Id. de cliente del registro de aplicación de Entra ID de la API; a continuación, haga clic en Guardar. El panel valida HTTPS y el formato GUID antes de guardar.

El script de implementación establece por usted la entidad de almacenamiento subyacente de SharePoint. Para establecerla manualmente:
Connect-PnPOnline -Url "https://contoso.sharepoint.com" -Interactive
$appCatalogUrl = Get-PnPTenantAppCatalogUrl
Connect-PnPOnline -Url $appCatalogUrl -Interactive # storage entities live on the App Catalog site
Set-PnPStorageEntity -Key "AccessPoint_ApiUrl" -Value $apiUrl -Description "AccessPoint API base URL"
Get-PnPStorageEntity -Key "AccessPoint_ApiUrl" # verify
Verificación: vuelva a cargar el elemento web: se carga el panel en lugar del aviso de instalación.
Paso 6: Importar un paquete de configuración
Vaya a Configuración > Paquetes de configuración, elija el paquete para su jurisdicción (ATIA de Canadá, FOIA de EE. UU., GDPR de la UE, entre otros) y haga clic en Importar. El paquete crea tipos de solicitud, motivos de prórroga, campos de opción, plantillas de notificación y traducciones. Revise y personalice los elementos importados posteriormente.
Paso 7: Asignar roles de usuario
Al primer usuario que abre AccessPoint se le conceden automáticamente los roles de Administrador y SAO. Vaya a Configuración > Administrar usuarios, haga clic en Agregar usuario, busque en su directorio y asigne roles: al menos un Administrador y un SAO, además de los roles de Custodio, Colaborador, Revisor y Lector según sea necesario.
AccessPoint ya está listo para su uso.
Implementación multiinquilino
Use este patrón cuando el backend de Azure resida en un inquilino de Entra ID diferente del de su inquilino de Microsoft 365: un equipo de servicios compartidos que atiende a varias unidades de negocio, un MSP que aloja para clientes, o inquilinos de Azure y M365 separados por motivos de gobernanza. Una única implementación puede servir a varios inquilinos de M365: la API aísla los datos según el id. de inquilino incluido en el token de cada usuario, con filtros de consulta de base de datos limitados por inquilino y rutas de blob con prefijo de inquilino. Cada inquilino de M365 sigue necesitando su propia licencia, su propia implementación de SPFx y aprobaciones de permisos de la API, y sus propias credenciales de Graph y buzón de notificaciones.
Registro de aplicación de Graph. Una identidad administrada solo funciona en su inquilino de origen, por lo que debe crear un registro de aplicación de un solo inquilino en el inquilino de M365 (p. ej., AccessPoint Graph Connector), concederle los mismos cinco permisos de aplicación de Graph enumerados en el Paso 1 con el consentimiento del administrador y, a continuación, crear un secreto de cliente y conectarlo al App Service a través de Key Vault:
# In the M365 tenant: create the client secret
$secret = az ad app credential reset --id $appId --display-name "AccessPoint" --years 2 --query password -o tsv
# In the Azure subscription: store the secret and reference it from the App Service
az keyvault secret set --vault-name $vaultName --name "GraphClientSecret" --value $secret
az webapp config appsettings set --resource-group $ResourceGroup --name $appName --settings `
"Graph__TenantId=$m365TenantId" `
"Graph__ClientId=$appId" `
"Graph__ClientSecret=@Microsoft.KeyVault(SecretUri=https://$vaultName.vault.azure.net/secrets/GraphClientSecret)"
az webapp restart --resource-group $ResourceGroup --name $appName
Nunca almacene el secreto directamente en la configuración del App Service; la identidad administrada del App Service necesita el rol Usuario de secretos de Key Vault sobre el almacén. Cuando están presentes las tres configuraciones Graph__*, la API usa el registro de aplicación; cuando faltan, recurre a la identidad administrada para las implementaciones en el mismo inquilino.
Buzón compartido y directiva de acceso a aplicaciones. Cree un buzón compartido sin licencia en el inquilino de M365 para las notificaciones por correo electrónico y limite el ámbito de Mail.Send para que la aplicación solo pueda enviar desde ese único buzón:
Connect-ExchangeOnline -Organization "contoso.onmicrosoft.com"
New-Mailbox -Name "AccessPoint Notifications" -Alias "accesspoint-noreply" -Shared
New-DistributionGroup -Name "AccessPoint Mail Senders" -Type Security -ManagedBy "admin@contoso.com"
Add-DistributionGroupMember -Identity "AccessPoint Mail Senders" -Member "accesspoint-noreply@contoso.com"
New-ApplicationAccessPolicy -AppId $appId -PolicyScopeGroupId "AccessPoint Mail Senders" `
-AccessRight RestrictAccess -Description "AccessPoint may send only from the shared mailbox"
# Verify (propagation can take up to 30 minutes)
Test-ApplicationAccessPolicy -AppId $appId -Identity "accesspoint-noreply@contoso.com" # expect: Granted
Test-ApplicationAccessPolicy -AppId $appId -Identity "someother@contoso.com" # expect: Denied
Después, cada inquilino de M365 repite los Pasos 2 a 5 (aplicaciones, aprobaciones, URL de la API: la misma URL de la API sirve a todos los inquilinos). Las notificaciones de la fuente de actividad de Teams requieren además el consentimiento del administrador para la aplicación empresarial de Realizer y que la aplicación de Teams esté instalada para los usuarios; consulte Configuración inicial para más detalles.
Reversión y operaciones
Los mecanismos estándar de Azure cubren la reversión: vuelva a implementar un paquete de API anterior desde el historial del Centro de implementación del App Service, restaure Azure SQL con la restauración a un momento dado (hasta 35 días) y vuelva a cargar una versión anterior del .sppkg en el catálogo de aplicaciones. Las importaciones de paquetes de configuración son aditivas y se revierten mediante la restauración de la base de datos. Para obtener el manual de operaciones completo (procedimientos detallados de reversión, supervisión y tareas de mantenimiento), póngase en contacto con nuestro equipo de soporte.