Básicos de autenticación y autorización

Para llamar a Microsoft Graph, la aplicación debe adquirir un token de acceso de la Plataforma de identidad de Microsoft. El token de acceso contiene información sobre la aplicación y los permisos que tiene para acceder a los recursos y las API disponibles a través de Microsoft Graph. Para obtener un token de acceso, la aplicación debe estar registrada en la Plataforma de identidad de Microsoft y disponer de la autorización de un usuario o un administrador para tener acceso a los recursos de Microsoft Graph que necesita.

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 ya sabe cómo integrar una aplicación con la Plataforma de identidad de Microsoft para obtener tokens, consulte información y ejemplos específicos de Microsoft Graph en la sección Siguientes pasos.

Registrar la aplicación con la plataforma de identidad de Microsoft

Antes de que la aplicación pueda obtener un token de la plataforma de identidad de Microsoft, debe registrarla en el portal de Azure. 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/URL de redireccionamiento: uno o varios puntos de conexión en los que la aplicación recibirá respuestas de la Plataforma de identidad de Microsoft. (Para aplicaciones móviles y nativas, la Plataforma de identidad de Microsoft asigna el URI).
  • Secreto de cliente: una contraseña o un par de claves pública y privada que usa la aplicación para autenticarse con la Plataforma de identidad de Microsoft. (No es necesario para aplicaciones móviles o nativas).

En la solicitud se utilizan las propiedades configuradas durante el registro. Por ejemplo, en la siguiente solicitud de token: client_id es el id. de aplicación, redirect_uri es uno de los URI de redireccionamiento registrados de la aplicación y client_secret es el secreto de cliente.

// Line breaks for legibility only

POST /common/oauth2/v2.0/token HTTP/1.1
Host: https://login.microsoftonline.com
Content-Type: application/x-www-form-urlencoded

client_id=6731de76-14a6-49ae-97bc-6eba6914391e
&scope=user.read%20mail.read
&code=OAAABAAAAiL9Kn2Z27UubvWFPbm0gLWQJVzCTE9UkP3pSx1aXxUjq3n8b2JRLk4OxVXr...
&redirect_uri=http%3A%2F%2Flocalhost%2Fmyapp%2F
&grant_type=authorization_code
&client_secret=JqQX2PNo9bpM0uEihUPzyrh    // NOTE: Only required for web apps

Permisos de Microsoft Graph

Microsoft Graph expone permisos granulares que controlan el acceso que las aplicaciones tienen a recursos tales como usuarios, grupos y correo. Como desarrollador, usted decide qué permisos de Microsoft Graph solicita la aplicación. Cuando un usuario inicia sesión en la aplicación, se le ofrece la opción (o, en ciertos casos, a un administrador) de dar el consentimiento a estos permisos. Si el usuario da su consentimiento, la aplicación tendrá acceso a los recursos y a las API que ha solicitado. En el caso de las aplicaciones que pueden acceder a los recursos y a las API sin que un usuario haya iniciado sesión, un administrador puede dar su consentimiento a los permisos previamente al instalar la aplicación.

Procedimientos recomendados para solicitar permisos

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.

Permisos de aplicación y delegados

Microsoft Graph tiene dos tipos de permisos:

  • Los permisos delegados son los que usan las aplicaciones en las que un usuario debe haber iniciado sesión previamente. En estas aplicaciones, el usuario o un administrador dan su consentimiento a los permisos que solicita la aplicación y se delega el permiso a la aplicación para que ésta actúe como usuario que ha iniciado sesión cuando se hacen llamadas a Microsoft Graph. Los usuarios sin permisos de administrador podrían llegar a dar consentimiento a algunos permisos delegados, pero existen permisos con privilegios mayores que requieren el consentimiento del administrador.

  • Los permisos de la aplicación son los que usan las aplicaciones que se ejecutan sin que un usuario haya iniciado sesión, como las aplicaciones que se ejecutan como servicios en segundo plano o demonios. Solo un administrador puede dar su consentimiento para obtener los permisos de la aplicación.

Permisos efectivos

Los permisos efectivos son los permisos que tiene la aplicación al realizar solicitudes a Microsoft Graph. Los permisos efectivos están determinados por una combinación de los permisos de Microsoft Graph que ha concedido a la aplicación y los privilegios del usuario que ha iniciado sesión o de la aplicación que realiza la llamada. Dentro de las organizaciones, la directiva o la pertenencia a uno o más roles determinan los privilegios del usuario que ha iniciado sesión o de una aplicación. Es importante comprender la diferencia entre los permisos delegados y de aplicación concedidos a la aplicación y los permisos efectivos al realizar llamadas a Microsoft Graph.

Permisos efectivos en escenarios de permisos delegados frente a solo aplicación

  • En el caso de los permisos delegados, los permisos efectivos de la aplicación serán la intersección con privilegios mínimos de los permisos delegados que se han concedido a la aplicación (por consentimiento) y los privilegios del usuario que ha iniciado sesión actualmente. La aplicación nunca puede tener más privilegios que el usuario que ha iniciado sesión.

    Supongamos que a la aplicación se le ha concedido el permiso delegado User.ReadWrite.All y llama a la API Update user. Este permiso concede nominalmente a la aplicación el permiso de leer y actualizar el perfil de todos los usuarios de una organización. Sin embargo, debido a los permisos efectivos, se aplican las siguientes restricciones a los privilegios del usuario que ha iniciado sesión:

    • Si el usuario que ha iniciado sesión es un administrador global, la aplicación podrá actualizar el perfil de cada usuario de la organización.
    • Si el usuario que ha iniciado sesión no tiene el rol de administrador, la aplicación solo puede actualizar el perfil del usuario que ha iniciado sesión. No actualizará los perfiles de otros usuarios de la organización porque el usuario que ha iniciado sesión no tiene esos privilegios.
  • En el caso de los permisos de aplicación, los permisos efectivos de la aplicación son el nivel completo de privilegios implícito en el permiso. Por ejemplo, una aplicación que tenga el permiso de aplicación User.ReadWrite.All puede actualizar el perfil de todos los usuarios de la organización.

Comparación de permisos delegados y de aplicación

Item Permisos delegados Permisos de aplicación
Escenarios de tipo de aplicación Aplicación web, móvil o de página única (SPA) Web o Daemon
Contexto de acceso Obtener acceso en nombre de un usuario Obtener acceso como servicio
¿Quién puede dar su consentimiento?
  • Los usuarios pueden dar el consentimiento para sus datos
  • Los administradores pueden dar el consentimiento para todos los usuarios
  • Solo el administrador puede dar el consentimiento
    Otros nombres
  • ámbitos
  • Permisos de OAuth2
  • Roles de aplicación
  • Permisos de solo aplicación
  • Permisos de acceso directo
  • Resultado del consentimiento oAuth2PermissionGrants appRoleAssignments

    Microsoft Graph expone permisos delegados y de aplicación, pero autoriza las solicitudes en función de los permisos efectivos de la aplicación.

    Para obtener una lista completa de permisos delegados y de aplicación de Microsoft Graph y qué permisos requieren consentimiento de administrador, consulte la Referencia de permisos.

    Tokens de acceso

    Los tokens de acceso emitidos por la Plataforma de identidad de Microsoft contienen información (notificaciones) que las API web protegidas por la Plataforma de identidad de Microsoft, como Microsoft Graph, usan para validar al autor de la llamada y garantizar que tiene los permisos adecuados para realizar la operación que solicita. 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:

    EwAoA8l6BAAU7p9QDpi/D7xJLwsTgCg3TskyTaQAAXu71AU9f4aS4rOK5xoO/SU5HZKSXtCsDe0Pj7uSc5Ug008qTI+a9M1tBeKoTs7tHzhJNSKgk7pm5e8d3oGWXX5shyOG3cKSqgfwuNDnmmPDNDivwmi9kmKqWIC9OQRf8InpYXH7NdUYNwN+jljffvNTewdZz42VPrvqoMH7hSxiG7A1h8leOv4F3Ek/XbrnbEErTDLWrV6Lc3JHQMs0bYUyTBg5dThwCiuZ1evaT6BlMMLuSCVxdBGzXTBcvGwihFzZbyNoX+52DS5x+RbIEvd6KWOpQ6Ni+1GAawHDdNUiQTQFXRxLSHfc9fh7hE4qcD7PqHGsykYj7A0XqHCjbKKgWSkcAg==
    

    Para llamar a Microsoft Graph, asocie el token de acceso como token de portador al encabezado de autorización de 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==
    

    Los tokens de acceso son un tipo de tokens de seguridad proporcionados por la plataforma de identidad de Microsoft. Son de corta duración, pero con duraciones predeterminadas variables. Para obtener más información sobre los tokens de acceso y cómo los clientes usan los tokens de acceso, consulte Tokens de acceso.

    Obtener un token de acceso

    Al igual que la mayoría de los desarrolladores, probablemente usará bibliotecas de autenticación para administrar las interacciones de tokens con la Plataforma de identidad de Microsoft. Las bibliotecas de autenticación resumen muchos detalles del protocolo del desarrollador, como la validación, la administración de cookies, el almacenamiento en caché de tokens y el mantenimiento de conexiones seguras, lo que le permite centrarse en el desarrollo 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:

    • Hay bibliotecas de cliente de la Biblioteca de autenticación de Microsoft (MSAL) disponibles para. NET, JavaScript, Android y Objective-C. Todas las plataformas se encuentran en versión preliminar compatible con la producción y, en el 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 (OpenID Connect y OAuth de OWIN) y para Node.js (la plataforma de identidad de Microsoft).
    • La plataforma de identidad de Microsoft es compatible con muchas bibliotecas de autenticación de terceros.

    Para obtener una lista completa de las bibliotecas de cliente de Microsoft, el middleware de servidor de Microsoft y las bibliotecas de terceros compatibles, vea Bibliotecas de autenticación de la plataforma de identidad de Microsoft.

    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 la plataforma de identidad de Microsoft sin la ayuda de una biblioteca de autenticación, vea Autenticación de la plataforma de identidad de Microsoft.

    Siguientes pasos

    • Para empezar a usar la autenticación y autorizar a la aplicación para que acceda a los recursos, consulte Introducción: elegir un escenario de aplicación.
    • Para ver los permisos que se pueden usar con Microsoft Graph, vea la referencia sobre los permisos.
    • Si es un Proveedor de soluciones en la nube de Microsoft y le interesa tener acceso a los datos de clientes administrados por el asociado a través de Microsoft Graph, vea Manage app access (CSPs) (Administrar el acceso de la aplicación (CSP)).

    Si ya está listo para ir directamente al código, puede usar los recursos siguientes como ayuda para implementar la autenticación y la autorización con la plataforma de identidad de Microsoft en la aplicación.

    Aprendizaje y ejemplos de Microsoft Graph

    Para ayudarle a empezar a trabajar rápidamente, hemos creado una serie de módulos de aprendizaje y otros recursos que muestran cómo autenticar y usar la API en una amplia variedad de plataformas.

    Documentación y ejemplos de la plataforma de identidad de Microsoft

    La documentación de la plataforma de identidad de Microsoft contiene artículos y ejemplos que se centran específicamente en la autenticación y autorización con la plataforma de identidad de Microsoft.

    Vea también