Autenticación y autorización en Azure App Service para aplicaciones móviles

En este artículo se describe cómo funcionan la autenticación y autorización al desarrollar aplicaciones móviles nativas con un back-end de App Service. App Service proporciona autenticación y autorización integradas, así las aplicaciones móviles pueden iniciar la sesión de los usuarios sin cambiar ningún código de dicho servicio. Ofrece una forma fácil de proteger su aplicación y trabajar con datos por usuario.

Advertencia

En este artículo se describe la versión 4.2.0 del SDK de cliente de Azure Mobile Apps. La versión actual usa un nuevo mecanismo de autenticación y no admite App de Azure autenticación y autorización del servicio de la misma manera.

Para información sobre cómo funcionan la autenticación y autorización en App Service, consulte Autenticación y autorización en Azure App Service.

Autenticación con el SDK de proveedor

Cuando todo se haya configurado en App Service, puede modificar los clientes móviles para que inicien sesión con este servicio. Hay dos enfoques aquí:

  • Use un SDK que un proveedor de identidades determinado establezca la identidad y después obtener acceso a App Service.
  • Permita que los usuarios inicien sesión en el SDK del cliente de Mobile Apps con una sola línea de código.

Sugerencia

La mayoría de las aplicaciones deben usar un SDK de proveedor para obtener una experiencia más coherente cuando los usuarios inician sesión, para usar la compatibilidad con la actualización de tokens y para obtener otros beneficios que especifica el proveedor.

Cuando se utiliza un SDK del proveedor, los usuarios pueden iniciar sesión en una experiencia que se integra más estrechamente con el sistema operativo que la aplicación en la que se está ejecutando. Este método también le proporciona un token del proveedor e información de usuario sobre el cliente, lo que facilita en gran medida el consumo de API de grafos y la personalización de la experiencia del usuario. Este método se conoce como "flujo de cliente" o "flujo dirigido por el cliente", ya que el código del cliente inicia la sesión de los usuarios.

Una vez que se obtiene un token del proveedor, debe enviarse a App Service para su validación. Azure App Service valida el token. Luego, el servicio crea un token para el cliente. El SDK de cliente de Mobile Apps dispone de métodos de asistente para administrar este intercambio y asociar automáticamente el token a todas las solicitudes en el back-end de la aplicación. El usuario también puede conservar una referencia al token del proveedor.

Nota:

Algunas plataformas, como Windows (WPF), SOLO funcionarán con un flujo dirigido por el cliente. Otras funcionarán igual de bien con un flujo de servidor que con uno de cliente. Si la plataforma solo funciona con un flujo dirigido por el cliente, la guía de inicio rápido lo mostrará.

Para más información sobre el flujo de autenticación, consulte Flujo de autenticación de App Service.

Autenticación sin proveedor de SDK

Si no desea configurar un SDK de proveedor, puede permitir que Azure App Service controle el inicio de sesión automáticamente. El SDK del cliente de Azure Mobile Apps abrirá una vista web al proveedor que elija e iniciará la sesión del usuario. Este método se denomina "flujo de servidor" o "flujo dirigido por el servidor", ya que el servidor administra el proceso que inicia la sesión de los usuarios. El SDK del cliente nunca recibe el token del proveedor.

Envío de un token desde el flujo dirigido por el cliente

Al usar el flujo dirigido al cliente, obtenga primero la información pertinente que Azure App Service necesita para validar el token. En la mayoría de los casos, el token será un token de acceso. Para más información, consulte la documentación de Azure App Service.

Luego, puede compilar el objeto JSON adecuado. Por ejemplo, si usa MSAL para realizar un flujo dirigido por el cliente en .NET en una aplicación WPF, puede usar el código siguiente:

var requestBody = new JObject(new JProperty("access_token", authResult.AccessToken));
var userInfo = await mobileClient.login("aad", requestBody);

El cuerpo de la solicitud debe coincidir con las expectativas establecidas en la documentación.