Compartir a través de


Inicio de sesión de usuarios y llamada a una API en una aplicación android de ejemplo mediante la autenticación nativa

Se aplica a:Círculo blanco con un símbolo X gris. inquilinos de personal Círculo verde con un símbolo de marca de verificación blanca. inquilinos externos (más información)

En este inicio rápido aprenderá a configurar una aplicación móvil Android de ejemplo para llamar a una API web de ASP.NET Core.

Prerrequisitos

Configuración de ámbitos de API

Una API debe publicar un mínimo de un ámbito, también denominado Permiso delegado, para que las aplicaciones cliente obtengan un token de acceso para un usuario correctamente. Para publicar un ámbito, siga estos pasos:

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

  2. En Administrar, seleccione Exponer una API.

  3. En la parte superior de la página, junto a URI de id. de aplicación, seleccione el vínculo Agregar para generar un URI que sea único para esta aplicación.

  4. Acepte el URI de identificador de aplicación propuesto, como api://{clientId}, y seleccione Guardar. Cuando la aplicación web solicite un token de acceso para la API web, deberá agregar este URI como prefijo para cada ámbito que se defina para la API.

  5. En Ámbitos definidos con esta API, seleccione Agregar un ámbito.

  6. Escriba los valores siguientes que definan el acceso de lectura a la API y, a continuación, seleccione Agregar ámbito para guardar los cambios:

    Propiedad Valor
    Nombre de ámbito ToDoList.Leer
    ¿Quién puede dar el consentimiento? Solo administradores
    Nombre para mostrar del consentimiento del administrador Leer una lista de tareas pendientes de los usuarios con "TodoListApi"
    Descripción del consentimiento del administrador Permite que la aplicación lea la lista de tareas pendientes del usuario utilizando ''TodoListApi''.
    Estado Habilitado
  7. Seleccione Agregar un ámbito de nuevo y escriba los valores siguientes que definen el ámbito de acceso de lectura y escritura a la API. Seleccione Agregar ámbito para guardar los cambios:

    Propiedad Valor
    Nombre de ámbito ToDoList.ReadWrite
    ¿Quién puede dar el consentimiento? Solo administradores
    Nombre para mostrar del consentimiento del administrador Leer y escribir una lista de tareas pendientes con 'ToDoListApi'
    Descripción del consentimiento del administrador Permitir que la aplicación lea y escriba la lista de tareas pendientes de los usuarios mediante "ToDoListApi"
    Estado Habilitado

Obtenga más información sobre el principio de privilegios mínimos al publicar permisos para una API web.

Configurar roles de la aplicación

Una API debe publicar un mínimo de un rol de aplicación para las aplicaciones, también denominado Permiso de aplicación, para que las aplicaciones cliente obtengan un token de acceso como ellos mismos. Los permisos de aplicación son el tipo de permisos que las API deben publicar cuando quieran permitir que las aplicaciones cliente se autentiquen correctamente como ellas mismas y no necesiten registrar a los usuarios. Para publicar un permiso de aplicación, siga estos pasos:

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

  2. En Administrar, seleccione Roles de aplicación.

  3. Seleccione Crear rol de aplicación, introduzca los siguientes valores y seleccione Aplicar para guardar los cambios:

    Propiedad Valor
    Nombre para mostrar ToDoList.Read.All
    Tipos de miembros permitido Aplicaciones
    Valor ToDoList.Read.All
    Descripción Permitir que la aplicación lea la lista de tareas pendientes de cada usuario utilizando ''TodoListApi''
    ¿Quiere habilitar este rol de aplicación? Mantenerla activada
  4. Vuelva a seleccionar Crear rol de aplicación, introduzca los siguientes valores para el segundo rol de aplicación y seleccione Aplicar para guardar los cambios:

    Propiedad Valor
    Nombre para mostrar ToDoList.ReadWrite.All
    Tipos de miembros permitido Aplicaciones
    Valor ToDoList.ReadWrite.All
    Descripción Permitir que la aplicación lea y escriba cada lista de tareas pendientes de los usuarios mediante "ToDoListApi"
    ¿Quiere habilitar este rol de aplicación? Mantenerla activada

Configuración de notificaciones opcionales

Puede agregar la notificación opcional idtyp para ayudar a la API web a determinar si un token es un token de aplicación o un token de aplicación y un token de usuario. Aunque puede usar una combinación de reclamaciones scp y roles para el mismo propósito, la reclamación idtyp es la manera más fácil de diferenciar entre un token de aplicación y un token de aplicación con usuario. Por ejemplo, el valor de esta reclamación es app cuando el token es un token solo de aplicaciones.

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

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 <nombre del inquilino> y, luego, elija .

    2. Seleccione Actualizar, luego compruebe que Concedido para <su nombre de inquilino> aparece en Estado en 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 o descarga de la API web de ejemplo

Para obtener la aplicación de ejemplo, puede clonarla desde GitHub o descargarla como un 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-dotnet-tutorial.git
    
  • Descargue el archivo .zip. Extráigalo en una ruta de acceso de archivo donde la longitud del nombre sea inferior a 260 caracteres.

Configuración y ejecución de la API web de ejemplo

  1. En el editor de código, abra el archivo 2-Authorization/1-call-own-api-aspnet-core-mvc/ToDoListAPI/appsettings.json.

  2. Busque el marcador de posición:

    • Enter_the_Application_Id_Here y reemplácelo por el identificador de aplicación (cliente) de la API web que copió anteriormente.
    • Enter_the_Tenant_Id_Here y reemplácelo por el Id. de directorio (inquilino) que copió anteriormente.
    • Enter_the_Tenant_Subdomain_Here y reemplácelo por el subdominio Directorio (inquilino). Por ejemplo, si el dominio principal del cliente es contoso.onmicrosoft.com, utilice contoso. Si no tiene el nombre del inquilino, aprenda a leer los detalles del inquilino.

Debe hospedar la API web para que la aplicación de ejemplo de Android la llame. Consulte Inicio rápido: Implementación de una aplicación web de ASP.NET para implementar la API web.

Configuración de una aplicación móvil Android de ejemplo para llamar a la API web

El ejemplo permite configurar varios puntos de conexión y conjuntos de ámbitos de dirección URL de API web. En este caso, solo configuras un endpoint de URL de la API web y sus ámbitos asociados.

  1. En Android Studio, abra el archivo /app/src/main/java/com/azuresamples/msalnativeauthandroidkotlinsampleapp/AccessApiFragment.kt.

  2. Busque la propiedad denominada WEB_API_URL_1 y establezca la dirección URL en la API web.

    private const val WEB_API_URL_1 = "" // Developers should set the respective URL of their web API here
    
  3. Busque la propiedad denominada scopesForAPI1 y establezca los ámbitos registrados en Conceder permisos de API a la aplicación de ejemplo de Android.

    private val scopesForAPI1 = listOf<String>() // Developers should set the respective scopes of their web API here. For example, private val scopes = listOf<String>("api://{clientId}/{ToDoList.Read}", "api://{clientId}/{ToDoList.ReadWrite}")
    

Ejecución de una aplicación de ejemplo de Android y llamada a la API web

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 físico.

  3. Seleccione el botón Ejecutar . La aplicación se abre en la pantalla de código de acceso de un solo uso y correo electrónico.

  4. Seleccione la pestaña API para probar la llamada API. Una llamada correcta a la API web devuelve HTTP 200, mientras que HTTP 403 significa acceso no autorizado.

Pasos siguientes