Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este artículo se muestra cómo administrar tokens de OAuth para la autenticación y autorización integradas en Azure App Service.
Recuperación de los tokens en el código de aplicación
Azure App Service inserta los tokens específicos del proveedor en el encabezado de solicitud para que pueda acceder fácilmente a ellos. Para obtener los tokens específicos del proveedor, el almacén de tokens debe estar habilitado para la aplicación.
Envíe una solicitud HTTP GET a /.auth/me desde el código de cliente, como una aplicación móvil o JavaScript en el explorador. El JSON devuelto tiene los tokens específicos del proveedor.
Nota
Los tokens de acceso son para acceder a los recursos del proveedor, por lo que solo están presentes si configura el proveedor con un secreto de cliente.
En la tabla siguiente se enumeran los nombres de encabezado del token de OAuth para varios proveedores integrados de App Service:
| Proveedor | Nombres de encabezados |
|---|---|
| Microsoft Entra | X-MS-TOKEN-AAD-ID-TOKEN X-MS-TOKEN-AAD-ACCESS-TOKEN X-MS-TOKEN-AAD-EXPIRES-ON X-MS-TOKEN-AAD-REFRESH-TOKEN |
| Facebook (en inglés) | X-MS-TOKEN-FACEBOOK-ACCESS-TOKEN X-MS-TOKEN-FACEBOOK-EXPIRES-ON |
| Google (en inglés) | X-MS-TOKEN-GOOGLE-ID-TOKEN X-MS-TOKEN-GOOGLE-ACCESS-TOKEN X-MS-TOKEN-GOOGLE-EXPIRES-ON X-MS-TOKEN-GOOGLE-REFRESH-TOKEN |
| X | X-MS-TOKEN-TWITTER-ACCESS-TOKEN X-MS-TOKEN-TWITTER-ACCESS-TOKEN-SECRET |
Nota
Los distintos marcos de lenguaje pueden presentar estos encabezados al código de la aplicación en formatos diferentes, como minúsculas o mayúsculas.
Actualización de tokens de autenticación
La siguiente información hace referencia a los tokens de proveedor. Para los tokens de sesión, consulte Extender el período de gracia de expiración del token de sesión.
Si el token de acceso del proveedor expira, debe volver a autenticar al usuario antes de poder volver a usar ese token. Puede evitar la expiración del token mediante la realización de una llamada GET al punto de conexión /.auth/refresh de la aplicación.
Para actualizar el token de acceso en cualquier momento, llame a /.auth/refresh en cualquier idioma. El fragmento de código siguiente utiliza jQuery para actualizar los tokens de acceso de un cliente de JavaScript.
function refreshTokens() {
let refreshUrl = "/.auth/refresh";
$.ajax(refreshUrl) .done(function() {
console.log("Token refresh completed successfully.");
}) .fail(function() {
console.log("Token refresh failed. See application logs for details.");
});
}
Cuando se llama, App Service actualiza automáticamente los tokens de acceso en el almacén de tokens para el usuario autenticado. Las solicitudes posteriores de tokens obtienen los tokens actualizados. Puede ver los tokens de actualización y la hora de expiración de los tokens mediante los encabezados enumerados en Recuperar tokens en el código de la aplicación.
Nota
Si un usuario revoca los permisos que concedió a tu aplicación, es posible que la llamada a /.auth/me falle con una respuesta 403 Forbidden. Para diagnosticar errores, compruebe los registros de aplicación para más detalles.
Configuración de proveedores para proporcionar tokens de actualización
Para que la actualización de token funcione, el almacén de tokens debe contener tokens de actualización del proveedor. Cada proveedor documenta cómo obtener sus tokens de actualización. En la tabla siguiente se proporciona un breve resumen:
| Proveedor | Tokens de actualización |
|---|---|
| Microsoft | Siga el procedimiento descrito en Configurar el proveedor de Microsoft Entra para proporcionar tokens de actualización. |
| Facebook (en inglés) | No proporciona tokens de actualización. Los tokens de larga duración expiran en 60 días. Para obtener más información, consulte Long-Lived Tokens de Acceso. |
| Google (en inglés) | Anexe un access_type=offline parámetro de cadena de consulta a su llamada /.auth/login/google de API. Para más información, consulte Tokens de actualización de Google. |
| X | Los tokens de acceso no expiran. Para obtener más información, consulte Preguntas más frecuentes sobre OAuth. |
Configurar el proveedor de Microsoft Entra para proporcionar tokens de actualización
- En Azure Portal, vaya al área de juegos de API (versión preliminar) y seleccione Nueva solicitud si es necesario.
- En el campo Escriba la ruta de acceso relativa de ARM aquí, incluida la versión de API , escriba la siguiente cadena y reemplace los marcadores de posición por el identificador de suscripción, el nombre del grupo de recursos y el nombre de la aplicación:
subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.Web/sites/<app-name>/config/authsettingsV2?api-version=2024-11-01 - Seleccione Execute(Ejecutar).
- Seleccione
PUTen la esquina superior izquierda y seleccione la pestaña Cuerpo de la solicitud . - Copie el contenido de la
GETrespuesta del campo Cuerpo de la respuesta y péguelo en la pestaña Cuerpo de la solicitud . - En el código, busque la
"identityProviders":>>"azureActiveDirectory":"login":sección y agregue la siguiente línea:"loginParameters": ["scope=openid profile email offline_access"] - Seleccione Execute(Ejecutar). El campo Cuerpo de la respuesta muestra los cambios.
Offline_access es el ámbito que proporciona tokens de actualización. App Service ya solicita los otros ámbitos de forma predeterminada. Para obtener más información, consulte OpenID Connect Scopes and Web Apps - Update Auth Settings V2 (Ámbitos de OpenID Connect y Web Apps: actualización de la configuración de autenticación V2).
Ampliación del período de gracia de expiración del token de sesión
La sesión autenticada expira después de 8 horas y se sigue un período de gracia predeterminado de 72 horas. En este período de gracia, puede actualizar el token de sesión con App Service sin volver a autenticar al usuario. Simplemente puede llamar a /.auth/refresh cuando su token de sesión deje de ser válido, y no es necesario que realice un seguimiento de la expiración del token usted mismo.
Cuando expire el período de gracia de 72 horas, el usuario debe iniciar sesión de nuevo para obtener un token de sesión válido. Si necesita una ventana de expiración más larga que 72 horas, puede ampliarla, pero extender la expiración durante un largo período podría tener implicaciones de seguridad significativas si se filtra o se roba un token de autenticación. Es mejor dejar la configuración en las 72 horas predeterminadas o establecer el período de extensión en el valor más pequeño posible.
Para ampliar la ventana de expiración predeterminada, ejecute el siguiente comando de la CLI de Azure en Azure Cloud Shell:
az webapp auth update --resource-group <group_name> --name <app_name> --token-refresh-extension-hours <hours>
Nota
El período de gracia solo se aplica a la sesión autenticada de App Service, no a los tokens de acceso de los proveedores de identidades. No existe ningún período de gracia para los tokens de proveedor expirados.