Autenticación de OneNote y permisos de aplicación en Azure AD

Se aplica a: blocs de notas empresariales en Office 365

Autenticar con Azure AD (aplicaciones de empresa):

  1. Registrar su aplicación y obtener un id. de cliente y secreto
  2. Elegir los ámbitos de permiso de aplicaciones de OneNote
  3. Obtener el consentimiento del administrador
  4. Obtener un token de acceso
  5. Obtener un nuevo token de acceso una vez que caduque

Registre su aplicación y obtenger una id. de cliente y secreto (aplicaciones empresariales)

Vea Registrar su aplicación y obtener un id. de cliente y secreto.

Elija los ámbitos de permisos de aplicaciones de OneNote (aplicaciones empresariales)

Los ámbitos de permiso representan los niveles de acceso al contenido de OneNote. El administrador de una organización otorga un permiso de aplicación a una aplicación y solo se puede usar para acceder a los datos que pertenecen a esa organización y a sus empleados. Por ejemplo, la API de OneNote expone varios permisos de aplicaciones para hacer lo siguiente:

  • Ver notas para todos los usuarios
  • Ver y modificar notas para todos los usuarios

Siga los pasos a continuación para asignar permisos de aplicación de OneNote a su aplicación:

  1. En elPortal de administración de Azure, en la sección Permisos para otras aplicaciones de la página de configuración de la aplicación, elija Agregar aplicación.

  2. Elija la aplicación OneNote y luego haga clic en la marca de verificación en la esquina inferior derecha. Si OneNote no aparece en la lista, asegúrese de haber dispuesto OneDrive para negocios para su inquilino.

  3. Elija el nivel más bajo de permisos de aplicaciones que su aplicación necesita para hacer su trabajo, y guarde los cambios. Puede solicitar múltiples ámbitos.

Ámbitos de permisos de aplicaciones

Si está accediendo a computadoras portátiles con permisos de aplicaciones, elija entre los siguientes ámbitos.

Ámbito (empresa) Permiso en Azure Portal Descripción
Notes.Read.All Ver notas para todos los usuarios Permite que la aplicación vea las notas de OneNote de todos los usuarios de su organización sin un usuario registrado. La aplicación no puede crear notas nuevas, modificar notas existentes ni ver notas en secciones protegidas por contraseña.
Notes.ReadWrite.All Ver y modificar notas para todos los usuarios Permita que la aplicación vea las notas de OneNote de todos los usuarios de su organización sin que ningún usuario haya iniciado sesión. La aplicación no puede acceder a las notas en secciones protegidas por contraseña.

Por lo general, cuando creas una aplicación que usa permisos de aplicaciones, la aplicación requiere una página o vista en la que el administrador aprueba los permisos de la aplicación. Esta página puede ser parte del flujo de inicio de sesión de la aplicación, parte de la configuración de la aplicación, o puede ser un flujo dedicado de "conexión". En muchos casos, tiene sentido que la aplicación muestre esta vista de "conexión" solo después de que un usuario haya iniciado sesión con una cuenta Microsoft de trabajo o escuela.

Si inicia sesión del usuario en su aplicación, puede identificar la organización a la que pertenece el usuario antes de solicitarle al usuario que apruebe los permisos de la aplicación. Aunque no es estrictamente necesario, puede ayudarlo a crear una experiencia más intuitiva para sus usuarios. Para iniciar la sesión del usuario, siga nuestros tutoriales de protocolo v2.0.

Solicite los permisos de un administrador de directorio

Cuando esté listo para solicitar permisos del administrador de la organización, puede redirigir al usuario al punto de conexión de consentimiento del administrador. Puede hacer la llamada API de la siguiente forma:

// Line breaks are for legibility only.

// Replace {tenant} with the tenant (GUID or name) you need admin consent for
// Replace {app_id} with your Azure AD assigned application id

GET https://login.microsoftonline.com/{tenant}/adminconsent?
client_id={app_id}
&state=12345
&redirect_uri=https://localhost/myapp/permissions

También puede probar la solicitud anterior en un navegador, escriba el siguiente URL en la barra de dirección de su navegador (haga una dirección URL válida siguiendo las instrucciones a continuación).

// Replace {tenant} with the tenant (GUID or name) you need admin consent for
// Replace {app_id} with your Azure AD assigned application id

https://login.microsoftonline.com/{tenant}/adminconsent?client_id={app_id}&state=12345&redirect_uri=https://localhost/myapp/permissions

En esta tabla se describen los parámetros utilizados en la solicitud anterior:

Parámetro Condición Descripción
inquilino Obligatorio La cuenta empresarial del directorio de la que desea solicitar permiso. Esto puede ser en formato GUID o un nombre fácil de usar. Si no sabe a qué inquilino pertenece el usuario y quiere permitirle que inicie sesión con cualquier inquilino, utilice el campo común.
client_id Obligatorio Identificador de aplicación que el portal de registro de aplicaciones ha asignado a la aplicación.
redirect_uri Obligatorio URI de redireccionamiento adonde quiere que se envíe la respuesta para que la aplicación la controle. Debe coincidir exactamente con uno de los URI de redireccionamiento que ha registrado en el portal, pero con codificación URL, y puede tener segmentos de ruta de acceso adicionales.
state Recomendado Valor incluido en la solicitud que también se devuelve en la respuesta de token. Puede ser una cadena con cualquier contenido que quiera. El estado se usa para codificar la información sobre el estado del usuario en la aplicación antes de que se produjese la solicitud de autenticación, como la página o la visualización en la que estaba.

Se le presentará un cuadro de diálogo de consentimiento de administrador que puede aprobar sin problema.

Respuesta correcta

Si el administrador aprueba los permisos de la aplicación, la respuesta correcta se ve así:

GET https://login.microsoftonline.com/{tenant}/Consent/Grant

En esta tabla se describen los valores devueltos en la respuesta anterior:

Parámetro Descripción
inquilino Cuenta empresarial de directorio que ha concedido a la aplicación los permisos que ha solicitado, en formato GUID.

Respuesta de error

Si el administrador no aprueba los permisos para su aplicación, la respuesta de error es la siguiente:

GET https://login.microsoftonline.com/{tenant}/login

Additional technical information: 
Correlation ID: f3817dd1-8476-46c2-a81b-fdefd209f988 
Timestamp: 2017-01-18 05:36:57Z 
AADSTS90093: This operation can only be performed by an administrator. Sign out and sign in as an administrator or contact one of your organization's administrators. 

En esta tabla se describen los valores devueltos en la respuesta anterior:

Parámetro Descripción
inquilino Cuenta empresarial de directorio que ha concedido a la aplicación los permisos que ha solicitado, en formato GUID.

Una vez que haya recibido una respuesta exitosa del punto de conexión de la aplicación proveedora, su aplicación habrá obtenido los permisos de aplicación directa que solicitó. Ahora puede solicitar un token para el recurso que desea.

Nota

  • Una cuenta empresarial específica tiene que obtener el permiso del administrador solo una vez.
  • Si desea que la aplicación se ejecute en otras cuentas empresariales, se debe configurar como una aplicación de varias cuentas empresariales en Azure AD.
  • Tanto si la aplicación está ejecutando en su propia cuenta empresarial como si lo hace en otra cuenta empresarial, el consentimiento del administrador es un paso requerido
  • Su aplicación puede elegir permisos de delegado además de los permisos de la aplicación (pero todavía se requiere el consentimiento del administrador).

Obtener un token de acceso (aplicaciones empresariales)

Después de que haya adquirido la autorización necesaria para su aplicación, proceda con la adquisición de tokens de acceso para las API.

Para obtener un token utilizando la concesión de credenciales del cliente, envíe una solicitud POST como la siguiente:

// Replace {tenant} with the tenant (GUID or name) you need admin consent for
// Replace {app_id} with your Azure AD assigned application id
// Replace {app_secret} with an Azure AD generated key for your application

POST https://login.microsoftonline.com/{tenant}/oauth2/token HTTP/1.1
Host: login.microsoftonline.com
Content-Type: application/x-www-form-urlencoded

grant_type=client_credentials&client_id={app_id}&client_secret={app_secret}&resource=https%3A%2F%2Fonenote.com%2F

En esta tabla se describen los parámetros utilizados en la solicitud anterior:

Parámetro Condición Descripción
grant_type Obligatorio Debe ser client_credentials.
client_id Obligatorio Identificador de aplicación que el portal de registro de aplicaciones ha asignado a la aplicación.
client_secret Obligatorio Secreto de la aplicación generado para la aplicación en el portal de registro de aplicaciones. Es muy importante que este sea un URL codificado
resource Necesario El valor pasado para el resource El parámetro en esta solicitud debe ser el identificador de recursos (URI de ID de aplicación) del recurso que desea. Para la API de OneNote, el valor es https://onenote.com/. Este valor informa al punto de conexión del token de todos los permisos de aplicación directa que ha configurado para su aplicación, debe emitir un token para los asociados con el recurso que desea usar.

Respuesta correcta

Una respuesta correcta tiene un aspecto similar al siguiente:

{
  "token_type": "Bearer",
  "expires_in": "3600",
  "resource": "https:\/\/onenote.com\/",
  "access_token": "eyJ0eXAiOiJKV1Qi..."
}

En esta tabla se describen los valores utilizados en la solicitud anterior:

Parámetro Descripción
token_type Indica el valor de tipo del token. El único tipo que Azure AD admite es bearer.
expires_in Período de validez del token de acceso (en segundos).
resource El identificador de recurso (URI de ID de aplicación) del recurso con el que se puede usar este token.
access_token El token de acceso solicitado. La aplicación puede usar este token para autenticarse con el recurso seguro, como en una API web.

Respuesta de error

Una respuesta de error se ve así (en este ejemplo, se proporciona un valor no válido para client_secret en la solicitud):

{
  "error": "invalid_client",
  "error_description": "AADSTS70002: Error validating credentials. AADSTS50012: Invalid client secret is provided.\r\nTrace ID: b6e89947-f005-469e-92ad-18aed399b140\r\nCorrelation ID: c2d1c230-bee9-41f1-9d4d-a5687e01b7bc\r\nTimestamp: 2017-01-19 20:34:11Z",
  "error_codes": [
    70002,
    50012
  ],
  "timestamp": "2017-01-19 20:34:11Z",
  "trace_id": "b6e89947-f005-469e-92ad-18aed399b140",
  "correlation_id": "c2d1c230-bee9-41f1-9d4d-a5687e01b7bc"
}

En esta tabla se describen los valores utilizados en la solicitud anterior:

Parámetro Descripción
error Una cadena de código de error que puede usar para clasificar los tipos de errores que se producen y para reaccionar ante los errores.
error_description Un mensaje de error específico que podría ayudarlo a identificar la causa raíz de un error de autenticación.
error_codes Una lista de códigos de error específicos de STS que pueden ayudar con el diagnóstico.
timestamp La hora en que ocurrió el error.
trace_id Un identificador exclusivo para la solicitud que podría ayudar con el diagnóstico.
correlation_id Un identificador exclusivo para la solicitud que podría ayudar con el diagnóstico en todos los componentes.

Incluir el token de acceso en su solicitud a la API de OneNote

Todas sus solicitudes a la API de OneNote deben enviar el token de acceso como un token de portador en el encabezado Authorization. Por ejemplo, la siguiente solicitud obtiene cinco de sus blocs de notas, ordenados alfabéticamente por nombre:

GET https://www.onenote.com/api/v1.0/users/foo@example.com/notes/notebooks?top=5
Authorization: Bearer {access-token}

Los tokens de acceso solo son válidos por una hora, por lo que necesitará obtener tokens nuevos cuando caduquen. Debe verificar el vencimiento del token antes de usarlo y obtener un nuevo token de acceso si es necesario. Los administradores no tienen que dar su consentimiento a los permisos nuevamente a menos que revoquen los permisos.

Obtenga un nuevo token de acceso una vez que caduque (aplicaciones empresariales)

Si el token de acceso expira, las solicitudes a la API devolverán una respuesta 401 Unauthorized. Su aplicación debe manejar esta respuesta y verificar la caducidad del token antes de enviar las solicitudes.

Puede solicitar un nuevo token de acceso repitiendo el proceso descrito en la sección Obtener un token de acceso anteriormente en este tema.

Actualiza tus tokens almacenados para asegurarte de que tu aplicación tenga tokens con la mayor vida útil.

Errores

Si existen errores con la autenticación, el explorador web se redirige a una página de error. Aunque la página de error siempre muestra un mensaje fácil de usar por el usuario, la dirección URL de la página de error incluye información adicional que puede ayudarle a depurar los problemas que hayan sucedido. Los parámetros de URL se incluyen como un marcador, por ejemplo: #error={error_code}&error_description={message}

Si el administrador decide no dar su consentimiento a su aplicación, el flujo redirigirá a su URL de redirección e incluirá los parámetros de error.

Para obtener información detallada sobre el control de errores, consulte Control de errores en OAuth 2.0.

Vea también