Ejercicio: Implementación de la autenticación interactiva mediante MSAL.NET
En este ejercicio aprenderá a realizar las siguientes acciones:
- Registro de una aplicación con la plataforma de identidad de Microsoft
- Usar la clase
PublicClientApplicationBuilder
en MSAL.NET - Adquisición de un token de forma interactiva en una aplicación de consola
Prerrequisitos
- Una cuenta de Azure con una suscripción activa. Si aún no tiene una, puede registrarse para obtener una evaluación gratuita en https://azure.com/free
- Visual Studio Code: puede instalar Visual Studio Code desde https://code.visualstudio.com.
- Una versión del SDK de .NET https://dotnet.microsoft.com/download/dotnet (6.0, 7.0 o 8.0)
Registro de una nueva aplicación
Inicie sesión en el portal: https://portal.azure.com
Busque y seleccione ID de Microsoft Entra.
En Administrar, seleccione Registros de aplicaciones>Nuevo registro.
Cuando aparezca la página de registro de la aplicación , escriba la información de registro de su aplicación:
Campo Valor Nombre az204appreg
tipos de cuenta admitidos Seleccione Cuentas en este directorio organizativo solo URI de redirección (opcional) Seleccione cliente nativo/público (móvil de escritorio &) y escriba http://localhost
en el cuadro de la derecha.Seleccione Registro.
Microsoft Entra ID asigna un identificador de aplicación (cliente) único a tu aplicación y se le redirige a la página Información general de la aplicación.
Configuración de la aplicación de consola
Inicie Visual Studio Code y abra un terminal seleccionando Terminal y, a continuación, Nuevo terminal.
Cree una carpeta para el proyecto y acceda a esa carpeta.
md az204-auth cd az204-auth
Cree la aplicación de consola de .NET.
dotnet new console
Abra la carpeta az204-auth en Visual Studio Code.
code . -r
Compilación de la aplicación de consola
En esta sección, agregará los paquetes y el código necesarios al proyecto.
Agregar paquetes y declaraciones using
Agregue el paquete
Microsoft.Identity.Client
al proyecto en un terminal de Visual Studio Code.dotnet add package Microsoft.Identity.Client
Abra el archivo Program.cs y agregue instrucciones
using
para incluirMicrosoft.Identity.Client
y habilitar operaciones asincrónicas.using System.Threading.Tasks; using Microsoft.Identity.Client;
Cambie el método Main para habilitar async.
public static async Task Main(string[] args)
Adición de código para la autenticación interactiva
Necesita dos variables para contener los identificadores de aplicación (cliente) y directorio (inquilino). Puede copiar esos valores desde el portal. Agregue el código siguiente y reemplace los valores de cadena por los valores adecuados del portal.
private const string _clientId = "APPLICATION_CLIENT_ID"; private const string _tenantId = "DIRECTORY_TENANT_ID";
Use la clase
PublicClientApplicationBuilder
para crear el contexto de autorización.var app = PublicClientApplicationBuilder .Create(_clientId) .WithAuthority(AzureCloudInstance.AzurePublic, _tenantId) .WithRedirectUri("http://localhost") .Build();
Código Descripción .Create
Crea un PublicClientApplicationBuilder
a partir de un ID de cliente..WithAuthority
Agrega una autoridad conocida correspondiente a un servidor ADFS. En el código especificamos la nube pública y utilizamos el entorno del servicio para la aplicación que hemos registrado.
Adquisición de un token
Cuando registró el az204appreg aplicación, generó automáticamente un user.read
de permisos de API para Microsoft Graph. Tú usas dicho permiso para adquirir un token.
Establezca el ámbito de permiso para la solicitud de token. Agregue el código siguiente debajo del
PublicClientApplicationBuilder
.string[] scopes = { "user.read" };
Agregue código para solicitar el token y escribir el resultado en la consola.
AuthenticationResult result = await app.AcquireTokenInteractive(scopes).ExecuteAsync(); Console.WriteLine($"Token:\t{result.AccessToken}");
Revisión de la aplicación completada
El contenido del archivo Program.cs debe ser similar al ejemplo siguiente:
using System;
using System.Threading.Tasks;
using Microsoft.Identity.Client;
namespace az204_auth
{
class Program
{
private const string _clientId = "APPLICATION_CLIENT_ID";
private const string _tenantId = "DIRECTORY_TENANT_ID";
public static async Task Main(string[] args)
{
var app = PublicClientApplicationBuilder
.Create(_clientId)
.WithAuthority(AzureCloudInstance.AzurePublic, _tenantId)
.WithRedirectUri("http://localhost")
.Build();
string[] scopes = { "user.read" };
AuthenticationResult result = await app.AcquireTokenInteractive(scopes).ExecuteAsync();
Console.WriteLine($"Token:\t{result.AccessToken}");
}
}
}
Ejecución de la aplicación
En el terminal de Visual Studio Code, ejecute
dotnet build
para comprobar si hay errores y, a continuación,dotnet run
para ejecutar la aplicación.La aplicación abre el explorador predeterminado que le pide que seleccione la cuenta con la que desea autenticarse. Si hay varias cuentas en la lista, seleccione la asociada al inquilino usado en la aplicación.
Si esta es la primera vez que ha iniciado sesión en la aplicación registrada, recibirá una notificación de Permisos solicitados que le pide aprobar la aplicación para que pueda leer los datos asociados a su cuenta. Seleccione Aceptar.
Debería ver los resultados similares al ejemplo siguiente en la consola.
Token: eyJ0eXAiOiJKV1QiLCJub25jZSI6IlVhU.....