Compartir a través de


Probar la API protegida

Este tutorial es la parte final de una serie que muestra la creación y prueba de una API web protegida registrada en un inquilino externo. En la primera parte de esta serie, creó una API web de ASP.NET Core y protegió sus puntos de conexión. En este paso final, registrará la aplicación de demonio y probará la API.

En este tutorial, aprenderá a:

  • Prueba de una API web protegida mediante una aplicación ligera de demonio que llama a la API web

Requisitos previos

Tutorial: Protección de una API web de ASP.NET Core registrada en un inquilino externo

Registrar la aplicación demonio

En los siguientes pasos se muestra cómo registrar una aplicación demonio 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, escriba la información de registro de la aplicación:

    1. En la sección Nombre, escriba un nombre significativo para la aplicación, que se mostrará 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. El panel Información general de la aplicación se muestra cuando se completa el registro. Registrar el id. de directorio (inquilino) y el id. de aplicación (cliente) que se usará en el código fuente de la aplicación.

Cree un secreto de cliente para la aplicación registrada. La aplicación usa el secreto de cliente para demostrar su identidad al solicitar tokens.

  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 Certificados y secretos.
  3. Seleccione Nuevo secreto de cliente.
  4. Escriba una descripción para el secreto de cliente en el cuadro Descripción (por ejemplo, secreto de cliente de ciam app).
  5. En Expira, seleccione el tiempo durante el cual es válido el secreto (según las reglas de seguridad de su organización) y, a continuación, elija Agregar.
  6. Registre el Valor del secreto. Este valor se usará para la configuración en un paso posterior. El valor del secreto no se volverá a mostrar y no se podrá recuperar por ningún medio, después de salir del Certificados y secretos. Asegúrese de grabarlo.

Asignar un rol de aplicación a la aplicación demonio

Las aplicaciones que se autentican por sí mismas requieren permisos de aplicación.

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

  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 de aplicación. Se selecciona esta opción porque la aplicación se registra como tal, no como usuario.

  7. En la lista de permisos, seleccione TodoList.Read.All, ToDoList.ReadWrite.All (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 la aplicación demonio no permite a los usuarios interactuar con ella, los propios usuarios no pueden dar su consentimiento a estos permisos. Para solucionar este problema, como administrador debe consentir 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.

Escribir código

  1. Inicializar una aplicación de consola de .NET y navegar a su carpeta raíz

    dotnet new console -o MyTestApp
    cd MyTestApp
    
  2. Instale MSAL para ayudarle a controlar la autenticación mediante la ejecución del siguiente comando:

    dotnet add package Microsoft.Identity.Client
    
  3. Ejecute el proyecto de API y anote el puerto en el que se ejecuta.

  4. Abra el archivo Program.cs y reemplace el código "Hello world" por el siguiente código.

    using System;
    using System.Net.Http;
    using System.Net.Http.Headers;
    
    HttpClient client = new HttpClient();
    
    var response = await client.GetAsync("https://localhost:<your-api-port>/api/todolist");
    Console.WriteLine("Your response is: " + response.StatusCode);
    

    Vaya al directorio raíz de la aplicación demonio y ejecute la aplicación con el comando dotnet run. Este código envía una solicitud sin un token de acceso. Debería ver la cadena La respuesta es: No autorizado impresa en la consola.

  5. Quite el código del paso 4 y reemplácelo por lo siguiente para probar la API mediante el envío de una solicitud con un token de acceso válido.

    using Microsoft.Identity.Client;
    using System;
    using System.Net.Http;
    using System.Net.Http.Headers;
    
    HttpClient client = new HttpClient();
    
    var clientId = "<your-daemon-app-client-id>";
    var clientSecret = "<your-daemon-app-secret>";
    var scopes = new[] {"api://<your-web-api-application-id>/.default"};
    var tenantName= "<your-tenant-name>";
    var authority = $"https://{tenantName}.ciamlogin.com/";
    
    var app = ConfidentialClientApplicationBuilder
        .Create(clientId)
        .WithAuthority(authority)
        .WithClientSecret(clientSecret)
        .Build();
    
    var result = await app.AcquireTokenForClient(scopes).ExecuteAsync();
    
    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", result.AccessToken);
    var response = await client.GetAsync("https://localhost:44351/api/todolist");
    Console.WriteLine("Your response is: " + response.StatusCode);
    

    Vaya al directorio raíz de la aplicación demonio y ejecute la aplicación con el comando dotnet run. Este código envía una solicitud sin un token de acceso válido. Debería ver la cadena La respuesta es: Aceptado impresa en la consola.

Consulte también

Habilitar el autoservicio de restablecimiento de contraseña