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.
Se aplica a: Inquilinos del personal
Inquilinos externos (más información)
Este tutorial es la parte final de una serie que muestra cómo compilar y probar una API web protegida registrada en un inquilino de Microsoft Entra. En la parte 1 de esta serie, creó una API web de ASP.NET Core y protegió sus puntos de conexión. Ahora creará una aplicación daemon liviana, la registrará en su tenant y usará la aplicación daemon para probar la API web que ha construido.
En este tutorial, harás lo siguiente:
- Registro de una aplicación demonio
- Asignar un rol de aplicación a una aplicación demonio
- Crea tu aplicación daemon
- Ejecuta tu aplicación daemon para llamar a la API web protegida
Prerrequisitos
- Si aún no lo ha hecho, complete el Tutorial: Compilación y protección de una API web de ASP.NET Core con la plataforma de identidad de Microsoft
Registrar la aplicación de demonio
En los siguientes pasos se muestra cómo registrar una aplicación demonio en el centro de administración de Microsoft Entra:
Inicie sesión en el Centro de administración de Microsoft Entra como al menos un desarrollador de aplicaciones.
Si tiene acceso a varios clientes, utilice el icono de Configuración
en el menú superior para cambiar al cliente externo desde el menú Directorios y suscripciones .
Vaya a Entra ID>Registros de aplicaciones.
Seleccione + Nuevo registro.
En la página Registrar una aplicación que aparece, escriba la información de registro de la aplicación:
En la sección Nombre , escriba un nombre de aplicación significativo que se mostrará a los usuarios de la aplicación, por ejemplo ciam-client-app.
En Tipos de cuenta admitidos, seleccione Solo cuentas en este directorio organizativo.
Seleccione Registrar.
El panel Información general de la aplicación se muestra cuando se completa el registro. Registre el identificador de directorio (inquilino) y el identificador 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 cuando solicita tokens:
- En la página Registros de aplicaciones, seleccione la aplicación que creó (por ejemplo, el secreto de cliente de la aplicación web) para abrir su página Información general .
- En Administrar, seleccione Certificados y secretos>Secretos de cliente>Nuevo secreto de cliente.
- En el cuadro Descripción , escriba una descripción para el secreto de cliente (por ejemplo, secreto de cliente de la aplicación web).
- En Expirar, seleccione una duración para la que el secreto sea válido (según las reglas de seguridad de las organizaciones) y, a continuación, seleccione Agregar.
- Registre el valor del secreto. Este valor se usa 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 de la sección Certificados y Secretos. Asegúrese de grabarlo.
Asignar un rol de aplicación a una aplicación demonio
Las aplicaciones que se autentican por sí mismas sin un usuario requieren permisos de aplicación (también conocidos como roles). Estos permisos permiten que la propia aplicación acceda directamente a los recursos. Por otro lado, si probamos la API con un usuario que ha iniciado sesión, asignaríamos permisos delegados (ámbitos). Los permisos delegados permiten que la aplicación actúe en nombre del usuario, limitado a los derechos de acceso del usuario. Siga estos pasos para asignar permisos de aplicación a la aplicación daemon:
En la página Registros de aplicaciones, seleccione la aplicación que creó, como ciam-client-app.
En Administrar, seleccione Permisos de API.
En Permisos configurados, seleccione Agregar un permiso.
Seleccione la pestaña API que usa mi organización .
En la lista de API, seleccione la API como ciam-ToDoList-api.
Seleccione la opción Permisos de aplicación . Seleccionamos esta opción cuando la aplicación inicia sesión con su propio nombre, no en nombre de un usuario.
En la lista de permisos, seleccione TodoList.Read.All, ToDoList.ReadWrite.All (use el cuadro de búsqueda si es necesario).
Seleccione el botón Agregar permisos .
En este momento, ha asignado los permisos correctamente. Sin embargo, dado que la aplicación de demonio no permite que los usuarios interactúen 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:
- Seleccione Conceder consentimiento del administrador para <el nombre> del inquilino y, a continuación, seleccione Sí.
- Seleccione Actualizar y compruebe que Concedido para <tu nombre de inquilino> aparece en Estado para ambos permisos.
Crear una aplicación de servicio en segundo plano
Inicialice una aplicación de consola de .NET y vaya a su carpeta raíz:
dotnet new console -o MyTestApp cd MyTestApp
Instale MSAL.NET para ayudar a controlar la autenticación mediante la ejecución del siguiente comando:
dotnet add package Microsoft.Identity.Client
Ejecute el proyecto de API y anote el puerto en el que se ejecuta.
Abra el archivo Program.cs y reemplace el código "Hola mundo" por el código siguiente.
using System; using System.Net.Http; using System.Net.Http.Headers; HttpClient client = new HttpClient(); var response = await client.GetAsync("http://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. Usted debería ver la cadena: Su respuesta es: No autorizado impresa en la consola.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. Esta aplicación de demonio usa el flujo de credenciales del cliente para adquirir un token de acceso cuando se autentica sin interacción del usuario.
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 tenantId = "<your-tenant-id>"; //Use in workforce tenant configuration var tenantName = "<your-tenant-name>"; //Use in external tenant configuration var authority = $"https://login.microsoftonline.com/{tenantId}"; // Use "https://{tenantName}.ciamlogin.com" for external tenant configuration var app = ConfidentialClientApplicationBuilder .Create(clientId) .WithAuthority(authority) .WithClientSecret(clientSecret) .Build(); var result = await app.AcquireTokenForClient(new string[] { scopes }).ExecuteAsync(); Console.WriteLine($"Access Token: {result.AccessToken}"); client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", result.AccessToken); var response = await client.GetAsync("http://localhost:/<your-api-port>/api/todolist"); var content = await response.Content.ReadAsStringAsync(); Console.WriteLine("Your response is: " + response.StatusCode); Console.WriteLine(content);
Reemplace los marcadores de posición del código por el identificador de cliente de la aplicación demonio, el secreto, el identificador de la aplicación de API web y el nombre del inquilino.
- En el caso de los inquilinos externos, use autoridad con el formato :
"https://{tenantName}.ciamlogin.com/"
- En el caso de los inquilinos del personal, use autoridad con el formato:
"https://login.microsoftonline.com/{tenantId}"
- En el caso de los inquilinos externos, use autoridad con el formato :
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 con un token de acceso válido. Debería ver la cadena: La respuesta es: Aceptar impreso en la consola.