es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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?

Tags:  , , ,

Answer

  1. Avatar for 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.

    var graphClient = new GraphServiceClient(new ClientCredential(clientId, clientSecret), new TokenCredential(token));
    

    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.

    Connect-SPOService -Url https://contoso-admin.sharepoint.com
    Set-SPOSite -Identity https://contoso.sharepoint.com/sites/sitecollection -LockState "Unlock" -SharingCapability Disabled
    

    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.

Comments are closed.