Aplicación web de Azure: cómo utilizar los permisos delegados y de aplicación.
Información de fondo.
Me gustaría que mi aplicación web ASP.NET use la plataforma de identidad de MS para autenticar usuarios… y permitirles ver su propio perfil.
Esta parte de mi código está funcionando. También tengo una función que permite al usuario final elegir un archivo desde su computadora local y cargarlo en SP a través de una sesión de carga a través de MS Graph. Esto también está funcionando actualmente.
La configuración de seguridad que tengo bajo “Permisos de API” para mi registro de aplicación de Azure es la siguiente:
• Sites.ReadWrite.All -> Delegado
• User.Read -> Delegado
Pero ahora me gustaría que la aplicación misma cargue el archivo. Entonces cambio la configuración de seguridad para que se vea así:
• Sites.ReadWrite.All -> Aplicación
• User.Read -> Delegado
Cuando intento cargar, recibo un mensaje de error de acceso denegado.
También agregué “Files.ReadWrite.All” para la aplicación, pero eso tampoco funcionó.
¿Alguien puede guiarme en la dirección correcta? ¿Tengo que crear un cliente de gráfico separado solo para la aplicación para cargar?
EDITAR 1
Me pregunto si esto es relevante:
https://learn.microsoft.com/es-es/answers/questions/354161/sitesselected-accessdenied-when-uploading-files.html
¿Alguien sabe lo que el OP significa cuando dice?
• Nuestra aplicación está registrada para tener acceso en la colección de sitios de destino
• con rol de permiso “WRITE”
O tal vez una mejor pregunta es ¿cómo se hace esto?
davy.ai
Solución
Basándose en la información proporcionada, aquí hay algunos pasos que puede tomar para resolver el mensaje de error de acceso denegado al intentar cargar un archivo en SharePoint Online utilizando MS Graph API.
1. Verificar los permisos de la aplicación
En primer lugar, asegúrese de que se haya otorgado el permiso de aplicación para “Sites.ReadWrite.All” en el Registro de aplicaciones de Azure. Este permiso permite que la aplicación lea y escriba en todas las colecciones de sitios en nombre del inquilino, lo cual es necesario para cargar un archivo en SharePoint Online.
2. Crear un nuevo cliente Graph para la aplicación
A continuación, cree una nueva instancia de la clase
GraphServiceClient
utilizando las credenciales de autorización de la aplicación en lugar de las credenciales del usuario. Esto es necesario porque la aplicación está realizando la carga de archivos, no el usuario.3. Utilice Sites.Selected en lugar de Sites.ReadWrite.All
Según el artículo de Microsoft Learn vinculado en la publicación original, el uso del permiso “Sites.Selected” en lugar de “Sites.ReadWrite.All” puede resolver el error de acceso denegado al cargar archivos en SharePoint Online. Este permiso permite que la aplicación lea y escriba en colecciones de sitios específicas, en lugar de todas las colecciones de sitios en el inquilino.
4. Conceder permiso de “ESCRITURA” a la aplicación
Por último, si persiste el error original, puede intentar otorgar el permiso de “ESCRITURA” a la aplicación para la colección de sitios objetivo, como se menciona en el mismo artículo de Microsoft Learn. Esto se puede hacer a través del centro de administración de SharePoint Online o utilizando comandos de PowerShell.
Con estos pasos, debería poder utilizar su aplicación web ASP.NET para cargar archivos en SharePoint Online utilizando MS Graph API con permisos de nivel de aplicación.