Básicos de autenticación y autorización

Microsoft Graph es una API web protegida para acceder a datos en servicios en la nube de Microsoft, como Microsoft Entra ID y Microsoft 365. Está protegido por el Plataforma de identidad de Microsoft, que usa tokens de acceso de OAuth para comprobar que una aplicación está autorizada para llamar a Microsoft Graph.

En este artículo se proporciona información general sobre la Plataforma de identidad de Microsoft, los tokens de acceso y cómo la aplicación puede obtener tokens de acceso. Para obtener más información sobre la Plataforma de identidad de Microsoft, consulte ¿Qué es la Plataforma de identidad de Microsoft?. Si sabe cómo integrar una aplicación con el Plataforma de identidad de Microsoft para obtener tokens, consulte los ejemplos de código de Plataforma de identidad de Microsoft para obtener información y ejemplos específicos de Microsoft Graph.

Registrar la aplicación

Antes de que la aplicación pueda obtener un token de acceso de la Plataforma de identidad de Microsoft, debe registrarse en el Centro de administración Microsoft Entra. El registro integra la aplicación con la plataforma de identidad de Microsoft y establece la información que se usa para obtener tokens, incluyendo:

  • Id. de aplicación: un identificador único que asigna la plataforma de identidad de Microsoft.
  • URI o DIRECCIÓN URL de redireccionamiento: uno o varios puntos de conexión en los que la aplicación recibe respuestas de la Plataforma de identidad de Microsoft. (Para aplicaciones nativas y móviles, el URI lo asigna el Plataforma de identidad de Microsoft).
  • Secreto de cliente: contraseña que la aplicación usa para autenticarse con el Plataforma de identidad de Microsoft. Opcionalmente, puede usar un certificado o una credencial de identidad federada. Esta propiedad no es necesaria para clientes públicos como aplicaciones nativas, móviles y de página única.

Para obtener más información, consulte Registro de una aplicación con el Plataforma de identidad de Microsoft.

Escenarios de acceso

El método que usa una aplicación para autenticarse con el Plataforma de identidad de Microsoft depende de cómo quiera que la aplicación acceda a los datos. Este acceso puede ser de dos maneras, como se muestra en la siguiente imagen.

  • Acceso delegado, una aplicación que actúa en nombre de un usuario que ha iniciado sesión.
  • Acceso solo a la aplicación, una aplicación que actúa con su propia identidad.

Ilustración de escenarios de acceso delegado y solo de aplicación en el Plataforma de identidad de Microsoft.

Acceso delegado (acceso en nombre de un usuario)

En este escenario de acceso, un usuario ha iniciado sesión en una aplicación cliente y la aplicación cliente llama a Microsoft Graph en nombre del usuario. Tanto el cliente como el usuario deben estar autorizados para realizar la solicitud.

El acceso delegado requiere permisos delegados, también denominados ámbitos. Los ámbitos son permisos que expone un recurso determinado y representan las operaciones que una aplicación puede realizar en nombre de un usuario.

Dado que tanto la aplicación como el usuario deben estar autorizados para realizar la solicitud, el recurso concede a la aplicación cliente los permisos delegados para que la aplicación cliente acceda a los datos en nombre del usuario especificado. Para el usuario, las acciones que pueden realizar en el recurso se basan en los permisos que tienen para acceder al recurso. Por ejemplo, es posible que el usuario sea el propietario del recurso o que se le asigne un rol determinado a través de un sistema de control de acceso basado en rol (RBAC), como Microsoft Entra RBAC.

Nota:

Los puntos de conexión y las API con el /me alias solo funcionan en el usuario que ha iniciado sesión y, por tanto, se llaman en escenarios de acceso delegado.

Acceso solo a la aplicación (acceso sin un usuario)

En este escenario de acceso, la aplicación puede interactuar con los datos por sí sola, sin que un usuario haya iniciado sesión. El acceso solo a la aplicación se usa en escenarios como la automatización y la copia de seguridad, y lo usan principalmente las aplicaciones que se ejecutan como servicios en segundo plano o demonios. Es adecuado cuando no es conveniente que un usuario haya iniciado sesión o cuando los datos necesarios no se puedan limitar a un solo usuario.

Las aplicaciones obtienen privilegios para llamar a Microsoft Graph con su propia identidad mediante una de las siguientes maneras:

  • Cuando a la aplicación se le asignan permisos de aplicación, también se denominan roles de aplicación.
  • Cuando a la aplicación se le asigna la propiedad del recurso que pretende administrar

Nota:

Una aplicación también puede obtener privilegios a través de los permisos concedidos por un sistema de control de acceso basado en rol, como Microsoft Entra RBAC.

Permisos de Microsoft Graph

Microsoft Graph expone permisos granulares que controlan el acceso que las aplicaciones tienen a los recursos de Microsoft Graph, como usuarios, grupos y correo. Como desarrollador, decide qué permisos de Microsoft Graph se van a solicitar para la aplicación en función del escenario de acceso y las operaciones que quiera realizar.

Microsoft Graph expone dos tipos de permisos para los escenarios de acceso admitidos:

  • Permisos delegados: también denominados ámbitos, permiten que la aplicación actúe en nombre del usuario que ha iniciado sesión.
  • Permisos de aplicación: también denominados roles de aplicación, permite que la aplicación acceda a los datos por sí sola, sin que un usuario haya iniciado sesión.

Cuando un usuario inicia sesión en una aplicación, la aplicación debe especificar los permisos que debe incluir en el token de acceso. Estos permisos:

  • Puede ser preautorizado para la aplicación por un administrador.
  • El usuario puede dar su consentimiento directamente.
  • Si no está autorizado previamente, puede requerir privilegios de administrador para conceder consentimiento. Por ejemplo, para permisos con un mayor impacto potencial en la seguridad.

Para obtener más información sobre los permisos y el consentimiento, consulte Introducción a los permisos y el consentimiento.

Nota:

El procedimiento recomendado es solicitar los permisos con menos privilegios que necesita la aplicación para acceder a los datos y funcionar correctamente. Solicitar permisos con más privilegios de los necesarios es una mala práctica de seguridad que puede hacer que los usuarios se abstengan de dar su consentimiento y que afecten al uso de la aplicación.

Para obtener más información sobre los permisos de Microsoft Graph y cómo usarlos, consulte información general sobre los permisos de Microsoft Graph.

Tokens de acceso

Una aplicación realiza una solicitud de autenticación a la Plataforma de identidad de Microsoft para obtener los tokens de acceso que usa para llamar a una API, como Microsoft Graph. Los tokens de acceso que el Plataforma de identidad de Microsoft emite contienen notificaciones que son detalles sobre la aplicación y en escenarios de acceso delegado, el usuario. Las API web protegidas por el Plataforma de identidad de Microsoft, como Microsoft Graph, usan las notificaciones para validar al autor de la llamada y para asegurarse de que el autor de la llamada tiene los privilegios adecuados para realizar la operación que solicitan. El autor de la llamada debe tratar los tokens de acceso como cadenas opacas porque el contenido del token está destinado únicamente a la API. Al llamar a Microsoft Graph, proteja siempre los tokens de acceso transmitiéndolos a través de un canal seguro que use Seguridad de la capa de transporte (TLS).

El siguiente ejemplo muestra un token de acceso de la Plataforma de identidad de Microsoft:

eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Imk2bEdrM0ZaenhSY1ViMkMzbkVRN3N5SEpsWSJ9.eyJhdWQiOiI2ZTc0MTcyYi1iZTU2LTQ4NDMtOWZmNC1lNjZhMzliYjEyZTMiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3L3YyLjAiLCJpYXQiOjE1MzcyMzEwNDgsIm5iZiI6MTUzNzIzMTA0OCwiZXhwIjoxNTM3MjM0OTQ4LCJhaW8iOiJBWFFBaS84SUFBQUF0QWFaTG8zQ2hNaWY2S09udHRSQjdlQnE0L0RjY1F6amNKR3hQWXkvQzNqRGFOR3hYZDZ3TklJVkdSZ2hOUm53SjFsT2NBbk5aY2p2a295ckZ4Q3R0djMzMTQwUmlvT0ZKNGJDQ0dWdW9DYWcxdU9UVDIyMjIyZ0h3TFBZUS91Zjc5UVgrMEtJaWpkcm1wNjlSY3R6bVE9PSIsImF6cCI6IjZlNzQxNzJiLWJlNTYtNDg0My05ZmY0LWU2NmEzOWJiMTJlMyIsImF6cGFjciI6IjAiLCJuYW1lIjoiQWJlIExpbmNvbG4iLCJvaWQiOiI2OTAyMjJiZS1mZjFhLTRkNTYtYWJkMS03ZTRmN2QzOGU0NzQiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhYmVsaUBtaWNyb3NvZnQuY29tIiwicmgiOiJJIiwic2NwIjoiYWNjZXNzX2FzX3VzZXIiLCJzdWIiOiJIS1pwZmFIeVdhZGVPb3VZbGl0anJJLUtmZlRtMjIyWDVyclYzeERxZktRIiwidGlkIjoiNzJmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3IiwidXRpIjoiZnFpQnFYTFBqMGVRYTgyUy1JWUZBQSIsInZlciI6IjIuMCJ9.pj4N-w_3Us9DrBLfpCt

Los tokens de acceso son un tipo de token de seguridad que proporciona el Plataforma de identidad de Microsoft. Son de corta duración, pero con duración predeterminada variable.

Para llamar a Microsoft Graph, la aplicación realiza una solicitud de autorización adjuntando el token de acceso como token de portador al encabezado Authorization en una solicitud HTTP. Por ejemplo, a continuación se muestra una llamada que devuelve la información de perfil del usuario que ha iniciado sesión (el token de acceso se ha acortado para mejorar la legibilidad):

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

Obtener un token de acceso

Se recomienda usar bibliotecas de autenticación para administrar las interacciones de token con el Plataforma de identidad de Microsoft. Las bibliotecas de autenticación abstraen muchos detalles de protocolo, como la validación, el control de cookies, el almacenamiento en caché de tokens y el mantenimiento de conexiones seguras, lo que permite centrar el desarrollo en la funcionalidad de la aplicación. Microsoft publica bibliotecas de cliente de código abierto y middleware de servidor.

Para el punto de conexión de la Plataforma de identidad de Microsoft:

  • Las bibliotecas cliente de la Biblioteca de autenticación de Microsoft (MSAL) están disponibles para varios marcos, incluidos .NET, JavaScript, Android e iOS. Todas las plataformas están en versión preliminar compatible con producción y, en caso de que se introduzcan cambios importantes, Microsoft garantiza una ruta de actualización.
  • El middleware de servidor de Microsoft está disponible para .NET Core y ASP.NET (OWIN OpenID Connect y OAuth) y para Node.js (Plataforma de identidad de Microsoft Passport.js).
  • El Plataforma de identidad de Microsoft también es compatible con muchas bibliotecas de autenticación de terceros.

Para obtener una lista completa de las bibliotecas cliente de Microsoft, el middleware de servidor de Microsoft y las bibliotecas compatibles de terceros, consulte Plataforma de identidad de Microsoft documentación.

No es necesario usar una biblioteca de autenticación para obtener un token de acceso. Para obtener información sobre cómo usar directamente los puntos de conexión de Plataforma de identidad de Microsoft sin la ayuda de una biblioteca de autenticación, consulte los artículos siguientes: