Compartir vía


Inicio de sesión de usuarios y llamada a una API web protegida en la aplicación Android (Kotlin) de ejemplo

En esta guía se muestra cómo configurar una aplicación móvil Android de ejemplo para iniciar sesión de usuarios y llamar a una API web de ASP.NET Core.

En este artículo, realice las tareas siguientes:

  • Registro de una aplicación en el centro de administración de Microsoft Entra.
  • Adición de una URL de redireccionamiento de la plataforma.
  • Habilitación de flujos de clientes públicos.
  • Actualice el archivo de ejemplo de código de configuración de Android para usar su propio identificador externo de Microsoft Entra para los detalles del inquilino del cliente.
  • Ejecute y pruebe la aplicación móvil Android de ejemplo.
  • Llame una API web protegida.

Requisitos previos

  • Android Studio.

  • Un inquilino externo. Si no tiene uno ya, suscríbase para obtener una prueba gratuita.

  • Un registro de API que expone al menos un ámbito (permisos delegados) y un rol de aplicación (permiso de aplicación), como ToDoList.Read. Si aún no lo ha hecho, siga las instrucciones para llamar a una API en una aplicación móvil Android de ejemplo para tener una API web de ASP.NET Core protegida funcional. Asegúrese de completar los pasos siguientes:

    • Registro de una aplicación de API web
    • Configuración de ámbitos de API
    • Configuración de roles de aplicación
    • Configuración de notificaciones opcionales
    • Clonación o descarga de la API web de ejemplo
    • Configuración y ejecución de la API web de ejemplo

Registrar una aplicación

Para permitir que su aplicación inicie la sesión de los usuarios con Microsoft Entra, id. externa de Microsoft Entra debe tener en cuenta la aplicación que haya creado. El registro de la aplicación establece una relación de confianza entre la aplicación y Microsoft Entra. Al registrar una aplicación, External ID genera un identificador único conocido como Id. de aplicación (cliente), un valor que se usa para identificar la aplicación al crear solicitudes de autenticación.

En los pasos siguientes, se muestra cómo registrar una aplicación en el centro de administración de Microsoft Entra:

  1. Inicie sesión en el Centro de administración de Microsoft Entra al menos como Desarrollador de aplicaciones.

  2. Si tiene acceso a varios inquilinos, use el icono Configuración en el menú superior para cambiar al inquilino externo desde el menú Directorios y suscripciones.

  3. Vaya aIdentidad>Aplicaciones>Registros de aplicaciones.

  4. Seleccione + Nuevo registro.

  5. En la página Registrar una aplicación que aparece;

    1. Introduzca un Nombre de aplicación significativo que se muestre a los usuarios de la aplicación, por ejemplo ciam-client-app.
    2. En Tipos de cuenta admitidos, seleccione Solo las cuentas de este directorio organizativo.
  6. Seleccione Registrar.

  7. Se muestra el panel Información general de la aplicación tras registrarse correctamente. Registre el Id. de la aplicación (cliente) que se usará en el código fuente de la aplicación.

Adición de una dirección URL de redireccionamiento de la plataforma

Para especificar el tipo de aplicación en el registro de la aplicación, siga estos pasos:

  1. En Administrar, seleccione Autenticación.
  2. En la página Configuraciones de plataforma, seleccione Agregar una plataforma y, después, seleccione la opción Android.
  3. Escriba el nombre del paquete del proyecto. Si descargó el código de ejemplo, este valor es com.azuresamples.msaldelegatedandroidkotlinsampleapp.
  4. En la sección Hash de firma del panel Configurar su aplicación para Android, seleccione Se está generando un hash de firma de desarrollo. Esto cambiará para cada entorno de desarrollo. Copie y ejecute el comando KeyTool para el sistema operativo en el terminal.
  5. Escriba el hash de firma generado por KeyTool.
  6. Seleccione Configurar.
  7. Copie la Configuración de MSAL desde el panel Configuración de Android y guárdela para la configuración de la aplicación posterior.
  8. Seleccione Listo.

Habilitación del flujo de cliente público

Para identificar la aplicación como cliente público, siga estos pasos:

  1. En Administrar, seleccione Autenticación.

  2. En Configuración avanzada, para Permitir flujos de cliente públicos, seleccione .

  3. Seleccione Guardar para guardar los cambios.

  1. En la página Registros de aplicaciones, seleccione la aplicación que creó (como ciam-client-app) para abrir la página Información general.

  2. En Administrar, seleccione Permisos de API. En la lista Permisos configurados, a la aplicación se le ha asignado el permiso User.Read. Sin embargo, como el inquilino es un inquilino externo, los propios usuarios del consumidor no pueden dar su consentimiento a este permiso. Como administrador, debe dar el consentimiento a este permiso en nombre de todos los usuarios del inquilino:

    1. Seleccione Conceder consentimiento del administrador para <nombre del inquilino> y seleccione .
    2. Seleccione Actualizar y luego compruebe que aparece Concedido para <nombre del inquilino> en Estado para ambos ámbitos.

Concesión de permisos de API web a la aplicación Android de ejemplo

Una vez que haya registrado la aplicación cliente y la API web, y haya expuesto la API mediante la creación de ámbitos, puede configurar los permisos del cliente para la API siguiendo estos pasos:

  1. En la página Registros de aplicaciones, seleccione la aplicación que creó (como ciam-client-app) para abrir la página Información general.

  2. En Administrar, seleccione Permisos de API.

  3. En Permisos configurados, seleccione Agregar un permiso.

  4. Seleccione la pestaña API usadas en mi organización.

  5. En la lista de API, seleccione la API como ciam-ToDoList-api.

  6. Seleccione la opción Permisos delegados.

  7. En la lista de permisos, seleccione ToDoList.Read, ToDoList.ReadWrite (use el cuadro de búsqueda si es necesario).

  8. Seleccione el botón Agregar permisos.

  9. En este momento, ha asignado los permisos correctamente. Sin embargo, dado que se trata de un inquilino del cliente, los propios usuarios consumidores no pueden dar su consentimiento a estos permisos. Para solucionarlo, como administrador debe dar su consentimiento a estos permisos en nombre de todos los usuarios del inquilino:

    1. Seleccione Conceder consentimiento del administrador para el <nombre del inquilino> y, a continuación, pulse .

    2. Seleccione Actualizar, luego compruebe que aparece Concedido para <el nombre de inquilino> en Estado para ambos permisos.

  10. En la lista Permisos configurados, seleccione los permisos ToDoList.Read y ToDoList.ReadWrite, de uno en uno y, a continuación, copie el URI completo del permiso para su uso posterior. El URI de permiso completo tiene un aspecto similar a api://{clientId}/{ToDoList.Read} o api://{clientId}/{ToDoList.ReadWrite}.

Clonación de una aplicación móvil Android de ejemplo

Para obtener la aplicación de ejemplo, puede clonarla desde GitHub o descargarla como archivo .zip.

  • Para clonar la muestra, abra un símbolo del sistema y navegue hasta donde desea crear el proyecto, e introduzca el siguiente comando:

    git clone https://github.com/Azure-Samples/ms-identity-ciam-browser-delegated-android-sample
    

Configuración de la aplicación móvil Android de ejemplo

Para habilitar la autenticación y el acceso a los recursos de la API web, configure el ejemplo siguiendo estos pasos:

  1. En Android Studio, abra el proyecto que ha clonado.

  2. Abra el archivo /app/src/main/res/raw/auth_config_ciam.json.

  3. Busque el marcador de posición:

    • Enter_the_Application_Id_Here y reemplácelo por el identificador de aplicación (cliente) de la aplicación que registró anteriormente.
    • Enter_the_Redirect_Uri_Here y reemplácelo por el valor de redirect_uri en el archivo de configuración de la Biblioteca de autenticación de Microsoft (MSAL) que descargó anteriormente al agregar la URL de redireccionamiento de la plataforma.
    • Enter_the_Tenant_Subdomain_Here y reemplácelo por el subdominio del directorio (inquilino). Por ejemplo, si el dominio principal del inquilino es contoso.onmicrosoft.com, use contoso. Si no conoce el subdominio del inquilino, aprenda a leer los detalles del inquilino.
  4. Abra el archivo /app/src/main/AndroidManifest.xml.

  5. Busque el marcador de posición:

    • ENTER_YOUR_SIGNATURE_HASH_HERE y reemplácelo por el hash de firma que generó anteriormente al agregar la dirección URL de redirección de la plataforma.
  6. Abra el archivo /app/src/main/java/com/azuresamples/msaldelegatedandroidkotlinsampleapp/MainActivity.kt.

  7. Busque la propiedad denominada WEB_API_BASE_URL y establezca la dirección URL en la API web.

  8. Busque la propiedad denominada scopes y establezca los ámbitos registrados en Conceder permisos de API web a la aplicación Android de ejemplo.

    private const val scopes = "" // Developers should set the respective scopes of their web API here. For example, private const val scopes = "api://{clientId}/{ToDoList.Read} api://{clientId}/{ToDoList.ReadWrite}"
    

Configuró la aplicación y está lista para su ejecución.

Ejecución y prueba de la aplicación móvil Android de ejemplo

Para compilar y ejecutar la aplicación, siga estos pasos:

  1. En la barra de herramientas, seleccione la aplicación en el menú De configuraciones de ejecución.

  2. En el menú del dispositivo de destino, seleccione el dispositivo en el que quiere ejecutar la aplicación.

    Si no tiene ningún dispositivo configurado, debe crear un dispositivo virtual Android para usar Android Emulator o conectar un dispositivo Android físico.

  3. Haga clic en el botón Ejecutar.

  4. Seleccione Adquirir token de forma interactiva para solicitar un token de acceso.

  5. Seleccione API - Perform GET para llamar a la API web de ASP.NET Core configurada anteriormente. Una llamada correcta a la API web devuelve HTTP 200, mientras que HTTP 403 significa acceso no autorizado.