Descripción de los permisos y el consentimiento de Microsoft Graph

Completado

Para desarrollar una aplicación de cliente que recupere datos de Microsoft 365, tiene que comprender cómo funcionan los permisos y el consentimiento de trabajo en Microsoft Graph. Quiere tomar las decisiones correctas sobre los datos a los que la aplicación puede y no puede acceder. Por ejemplo, si necesita mostrar las próximas reuniones de un vendedor que ha iniciado sesión, querrá que la aplicación tenga permiso para acceder a sus datos de calendario desde Microsoft 365.

Las aplicaciones solicitan permiso para acceder a recursos de Microsoft 365 específicos a través de Microsoft Graph. Estas solicitudes se pueden realizar por adelantado (cuando se registra la aplicación) o de forma dinámica (cuando se ejecuta la aplicación). Cuando una aplicación solicita permiso, un usuario o administrador debe aceptar el permiso antes de que Microsoft Graph autorice las solicitudes.

Hay tres conceptos principales para comprender cuándo la aplicación necesita interactuar con Microsoft Graph:

  • Permisos o ámbitos de Microsoft Graph
  • Tipos de permisos
  • Tokens de acceso

Permisos o ámbitos de Microsoft Graph

Los permisos de Microsoft Graph contienen ámbitos que controlan el acceso de la aplicación a recursos específicos, como usuarios, correo y archivos. Los ámbitos también controlan las operaciones que se pueden realizar en esos recursos. En el patrón de ejemplo siguiente se define el permiso para una operación de Microsoft Graph de un recurso:

Resource-name.operation.constraint

Por ejemplo, User.Read.All concede a una aplicación el permiso para leer el perfil de todos los usuarios de un directorio. Para leer el perfil de un usuario que ha iniciado sesión, el permiso necesario es User.Read.

Tipos de permisos

Existen dos tipos de permisos en Azure Active Directory:

  • La aplicación usa permisos delegados cuando realiza una llamada de Microsoft Graph en nombre del usuario. El usuario puede aceptar algunos ámbitos de permisos, como User.Read. Sin embargo, algunos ámbitos de permisos tienen privilegios muy elevados y requieren el consentimiento de un administrador. Un ejemplo de un ámbito de permisos con privilegios elevados es Channel.Delete.All, que elimina los canales de cualquier equipo en nombre del usuario que ha iniciado sesión.

    El ejemplo más sencillo de un ámbito de permisos delegados es User.Read, necesario para llamar al punto de conexión de /me. En Microsoft Graph, todas las llamadas a API con /me usan el contexto del usuario con la sesión iniciada.

  • El permiso de aplicación no requiere un usuario que haya iniciado sesión en la aplicación. A menudo se usa cuando un usuario no está presente, como en un proceso en segundo plano o para elevar los permisos. Un administrador acepta el permiso de antemano.

    Un ejemplo de ámbito de permiso de aplicación es Calendars.ReadWrite, que permite a la aplicación crear, leer, actualizar y eliminar eventos de todos los calendarios sin que un usuario haya iniciado sesión. No se puede usar una API de /me para un ámbito de permisos de aplicación, ya que no hay ningún usuario que haya iniciado sesión para extraer esa información.

Tokens de acceso

Una vez que la aplicación ha solicitado permiso y un usuario o administrador ha dado su consentimiento, la aplicación puede obtener un token de acceso de la Plataforma de identidad de Microsoft. Piense en el token de acceso como una entrada de cine que le da a un operador para demostrar que pagó para ver la película. La aplicación proporciona un token de acceso a Microsoft Graph a fin de demostrar que tiene permiso para acceder a los datos de Microsoft 365.

Microsoft Graph requiere un token de acceso válido en el encabezado HTTP de cada solicitud. Se pasa en el encabezado de autorización de cada solicitud HTTP con la palabra "Portador" y un espacio delante. Es un recordatorio de que, al igual que una entrada de cine, el portador puede usar el token de acceso. Es decir, cualquier persona que tenga la entrada puede entrar sin demostrar su identidad. Por este motivo, Microsoft Graph requiere cifrado HTTPS en todas las solicitudes. Además, al igual que las entradas de cine, los tokens de acceso solo son válidos durante un breve período, normalmente una hora.

Este es un ejemplo del aspecto que podría tener un encabezado de autorización para una solicitud de Microsoft Graph:

GET https://graph.microsoft.com/v1.0/me/ HTTP/1.1
Host: graph.microsoft.com
Authorization: Bearer EwAoA8l6BAAU ... 7PqHGsykYj7A0XqHCjbKKgWSkcAg==