Autorización e inicio de sesión de OneDrive en Microsoft Graph
Para usar la API de OneDrive con Microsoft Graph, necesita tener un token de acceso que autorice la aplicación con un conjunto determinado de permisos para un usuario. En esta sección, obtendrá información sobre cómo:
- Registrar la aplicación para obtener un id. de aplicación.
- Iniciar la sesión del usuario con los ámbitos especificados mediante el flujo de tokens o el flujo de códigos.
- Cerrar la sesión del usuario (opcional).
La API de OneDrive usa el marco de autorización OAuth 2.0 estándar para autorizar aplicaciones y generar tokens de acceso. Debe proporcionar un token de acceso para cada llamada API autenticada mediante un encabezado HTTP:
Authorization: bearer {token}
Nota: El marco de autorización recomendado es usar el punto de conexión de Azure AD v2.0. En cambio, algunos escenarios de empresa pueden necesitar el uso del punto de conexión original de Azure AD. Para obtener más información, vea Autenticación de aplicaciones con Microsoft Graph.
Registrar su aplicación
El primer paso es registrar una aplicación con Microsoft y proporcionar algunos detalles sobre su aplicación. Puede registrar la aplicación y recibir un nuevo identificador de aplicación en la página registros de App de Azure.
Para obtener los pasos detallados sobre cómo registrar la aplicación, vea cómo registrar la aplicación para la API de OneDrive.
Inicio de sesión de los usuarios
Su aplicación debe iniciar el proceso de inicio de sesión poniéndose en contacto con el punto de conexión de autorización de Azure Active Directory con un ámbito especificado. El flujo sigue los flujos de autorización de OAuth 2.0 estándar y necesita llamadas desde un explorador web o un control de explorador web. El resultado del flujo de autorización devolverá un token de acceso y, opcionalmente, otros tokens que su aplicación puede usar para tener acceso a la API.
Ámbitos de autenticación
Los ámbitos determinan qué tipo de acceso se concede a la aplicación cuando el usuario ha iniciado sesión. Todos los ámbitos admiten el inicio de sesión único en la web, lo que significa que si un usuario ya ha iniciado sesión en OneDrive, entonces el usuario puede omitir el flujo de autenticación e ir directamente al flujo de autorización.
Nombre de ámbito | Descripción |
---|---|
offline_access | Permite que la aplicación funcione sin conexión incluso cuando el usuario no está activo. Necesita el uso de flujo de códigos. |
files.read | Concede permisos de solo lectura a todos los archivos de OneDrive de un usuario. |
files.read.all | Concede permisos de solo lectura a todos los archivos de OneDrive de un usuario, incluidos los archivos compartidos con este. |
files.readwrite | Concede permisos de lectura y escritura a todos los archivos de OneDrive de un usuario. |
files.readwrite.all | Concede permisos de lectura y escritura a todos los archivos de OneDrive de un usuario, incluidos los archivos compartidos con este. |
Como ejemplo, una aplicación típica puede solicitar los ámbitos siguientes:
files.readwrite offline_access
Flujos de autenticación compatibles
Aunque Azure Active Directory admite varios flujos de autorización, los más comunes son los dos que se muestran aquí:
Flujo de tokens
El flujo de autorización más sencillo es el flujo de tokens. Este flujo es útil para obtener rápidamente un token de acceso para usar la API de OneDrive de una manera interactiva. Este flujo no proporciona un token de actualización y, por lo tanto, no es una buena opción para el acceso a largo plazo a los recursos.
Para iniciar el proceso de inicio de sesión con el flujo de tokens, use un explorador web o un control de explorador web para cargar una solicitud de dirección URL.
GET https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id={client_id}&scope={scope}
&response_type=token&redirect_uri={redirect_uri}
Parámetros necesarios de cadena de consulta
Nombre del parámetro | Valor | Descripción |
---|---|---|
client_id | string | El valor de id. de cliente que se ha creado para su aplicación. |
redirect_uri | cadena | La dirección URL de redireccionamiento a la que se envía al explorador una vez finalizada la autenticación. |
response_type | string | El tipo de respuesta que se espera del flujo de autorización. Para este flujo, el valor debe ser token. |
scope | string | Una lista separada por espacios de ámbitos que necesita su aplicación. |
Respuesta
Después de una autenticación y autorización correctas de la aplicación, el explorador web se redirige a la URL de redireccionamiento proporcionada con los parámetros adicionales agregados a la URL.
https://myapp.com/auth-redirect#access_token=EwC...EB
&authentication_token=eyJ...3EM&token_type=bearer&expires_in=3600
&scope=onedrive.readwrite&user_id=3626...1d
Los valores para access_token
, authentication_token
y user_id
se truncan en el ejemplo anterior. Los valores para access_token
y authentication_token
son bastante largos.
Puede usar el valor de access_token
para realizar solicitudes a Microsoft Graph.
Flujo de códigos
El flujo de códigos para la autenticación es un proceso de tres pasos con llamadas independientes para autenticar y autorizar la aplicación, y para generar un token de acceso para usar la API de OneDrive. Esto también permite que su aplicación reciba un token de actualización que permitirá el uso a largo plazo de la API en algunos escenarios, para permitir el acceso cuando el usuario no esté usando de manera activa la aplicación.
Paso 1. Obtener un código de autorización
Para iniciar el proceso de inicio de sesión con el flujo de códigos, use un explorador web o un control de explorador web para cargar esta solicitud de dirección URL.
GET https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id={client_id}&scope={scope}
&response_type=code&redirect_uri={redirect_uri}
Parámetros necesarios de cadena de consulta
Nombre del parámetro | Valor | Descripción |
---|---|---|
client_id | cadena | El id. de cliente creado para su aplicación. |
scope | string | Una lista separada por espacios de ámbitos que necesita su aplicación. |
redirect_uri | cadena | La dirección URL de redireccionamiento a la que se envía al explorador una vez finalizada la autenticación. |
response_type | string | El tipo de respuesta que se espera del flujo de autorización. Para este flujo, el valor debe ser code. |
Respuesta
Después de una autenticación y autorización correctas de la aplicación, el explorador web se redirigirá a la dirección URL de redireccionamiento con los parámetros adicionales agregados a la dirección URL.
https://myapp.com/auth-redirect?code=df6aa589-1080-b241-b410-c4dff65dbf7c
Paso 2. Canjear el código para obtener tokens de acceso
Después de que haya recibido el valor code
, puede canjear este código por un conjunto de tokens que le permiten autenticarse con la API de OneDrive.
Para canjear el código, realice la solicitud siguiente:
POST https://login.microsoftonline.com/common/oauth2/v2.0/token
Content-Type: application/x-www-form-urlencoded
client_id={client_id}&redirect_uri={redirect_uri}&client_secret={client_secret}
&code={code}&grant_type=authorization_code
Parámetros de cuerpo de solicitud requeridos
El cuerpo de solicitud es una cadena codificada con la dirección URL correctamente, con algunos parámetros necesarios.
Nombre del parámetro | Valor | Descripción |
---|---|---|
client_id | string | El valor de id. de cliente que se ha creado para su aplicación. |
redirect_uri | cadena | La dirección URL de redireccionamiento a la que se envía al explorador una vez finalizada la autenticación. Debe coincidir con el valor redirect_uri de la primera solicitud. |
client_secret | string | El secreto de cliente que se crea para su aplicación. |
code | string | El código de autorización que ha recibido en la primera solicitud de autenticación. |
Nota En el caso de las aplicaciones web, la parte del dominio del URI de redirección debe coincidir con la parte del dominio del URI de redirección que especificó en el Centro para desarrolladores de Microsoft.
Respuesta
Si la llamada se realiza correctamente, la respuesta a la solicitud POST contiene una cadena JSON que incluye varias propiedades, incluidas access_token
, token_type
y refresh_token
(si ha solicitado el ámbito wl.offline_access).
{
"token_type":"bearer",
"expires_in": 3600,
"scope":"wl.basic onedrive.readwrite",
"access_token":"EwCo...AA==",
"refresh_token":"eyJh...9323"
}
Ahora puede almacenar y usar el access_token
proporcionado para realizar solicitudes autenticadas en Microsoft Graph.
Importante: Trate los valores de access_token
y refresh_token
en esta respuesta de manera tan segura como lo haría con la contraseña de un usuario.
El token de acceso es válido solo durante el número de segundos que se especifique en la propiedad expires_in. Puede solicitar un nuevo token de acceso con el token de actualización (si está disponible), o repitiendo la solicitud de autenticación desde el principio.
Paso 3. Obtener un nuevo token de acceso o un token de actualización
Si la aplicación ha solicitado el ámbito offline_access
, este paso devolverá un refresh_token que puede usarse para generar tokens de acceso adicionales después de que el token inicial haya expirado.
Para canjear el token de actualización para obtener un nuevo token de acceso, realice la solicitud siguiente:
POST https://login.microsoftonline.com/common/oauth2/v2.0/token
Content-Type: application/x-www-form-urlencoded
client_id={client_id}&redirect_uri={redirect_uri}&client_secret={client_secret}
&refresh_token={refresh_token}&grant_type=refresh_token
Parámetros de cuerpo de solicitud requeridos
El cuerpo de solicitud es una cadena codificada con la dirección URL correctamente, con algunos parámetros necesarios.
Nombre del parámetro | Valor | Descripción |
---|---|---|
client_id | cadena | Identificador cliente que se crea para su aplicación. |
redirect_uri | cadena | Dirección URL de redireccionamiento a la que se envía el explorador una vez finalizada la autenticación. Debe coincidir con el valor del parámetro redirect_uri que se usó en la primera solicitud. |
client_secret | string | El secreto de cliente que se crea para su aplicación. |
refresh_token | cadena | El token de actualización que recibió antes. |
Nota En el caso de las aplicaciones web, la parte del dominio del URI de redirección debe coincidir con la parte del dominio del URI de redirección que especificó en el Centro para desarrolladores de Microsoft.
Respuesta
Si la llamada se realiza correctamente, la respuesta a la solicitud POST contiene una cadena JSON que incluye varias propiedades, incluidas access_token
, authentication_token
y refresh_token
, si ha solicitado el ámbito offline_access.
{
"token_type":"bearer",
"expires_in": 3600,
"scope": "wl.basic onedrive.readwrite wl.offline_access",
"access_token":"EwCo...AA==",
"refresh_token":"eyJh...9323"
}
Ahora puede almacenar y usar el access_token
para realizar solicitudes autenticadas en Microsoft Graph.
Importante: Trate los valores de access_token
y refresh_token
en esta respuesta de manera tan segura como lo haría con la contraseña de un usuario.
El token de acceso es válido solo durante el número de segundos que se especifique en la propiedad expires_in. Puede solicitar un nuevo token de acceso con el token de actualización (si está disponible) o repitiendo la solicitud de autenticación desde el principio.
Cerrar la sesión del usuario
Para cerrar la sesión de un usuario, realice los siguientes pasos:
- Elimine cualquier valor
access_token
orefresh_token
almacenado en caché que haya recibido anteriormente del flujo de OAuth. - Realice cualquier acción de cierre de sesión en la aplicación (por ejemplo, limpiar el estado local, quitar cualquier elemento almacenado en caché, etc.).
- Realice una llamada al servicio web de autorización con esta dirección URL:
GET https://login.microsoftonline.com/common/oauth2/v2.0/logout?post_logout_redirect_uri={redirect-uri}
Esta llamada quitará cualquier cookie que permita que se produzca el inicio de sesión único y garantice que la próxima vez que la aplicación inicie el flujo de autorización, se necesitará que el usuario inicie sesión de nuevo. Con este flujo de cierre de sesión no se revoca ningún contenido concedido anteriormente a una aplicación.
Parámetros necesarios de la cadena de consulta
Nombre del parámetro | Valor | Descripción |
---|---|---|
redirect_uri | cadena | La dirección URL de redireccionamiento a la que se envía al explorador una vez finalizada la autenticación. Esta debe coincidir exactamente con el valor redirect_uri que se ha usado en la solicitud de obtención de tokens. |
Después de quitar la cookie, el explorador se redirigirá a la dirección URL de redireccionamiento que ha proporcionado. Cuando el explorador carga su página de redireccionamiento, no se establecerá ningún parámetro de cadena de consulta de autenticación y puede deducir que el usuario ha cerrado la sesión.
Revocar el acceso
Los usuarios de la cuenta Microsoft pueden revocar un acceso de la aplicación a su cuenta visitando la página Administrar consentimiento de la cuenta Microsoft.
Cuando se revoca el consentimiento de una aplicación, cualquier token de actualización que se haya proporcionado anteriormente en su aplicación ya no será válido. Necesitará repetir el flujo de autenticación para solicitar un nuevo token de acceso y actualización desde el principio.
Temas relacionados
En los temas siguientes se incluye información general de alto nivel de otros conceptos que se aplican a la API de OneDrive.
- Develop with the OneDrive API (Desarrollo con la API de OneDrive)
- Autenticación de aplicaciones con Microsoft Graph