Inicialización de aplicaciones cliente

Completado

Con MSAL.NET 3.x, el método recomendado para crear una instancia de una aplicación es mediante el uso de los generadores de aplicaciones: PublicClientApplicationBuilder y ConfidentialClientApplicationBuilder. Ofrecen un mecanismo eficaz para configurar la aplicación, ya sea a partir del código o de un archivo de configuración, o incluso combinando ambos enfoques.

Antes de inicializar una aplicación, primero tendrá que registrarla para que se pueda integrar con la plataforma de identidad de Microsoft. Después del registro, es posible que necesite la información siguiente (que puede encontrar en Azure Portal):

  • El identificador de cliente (una cadena que representa un GUID).
  • La URL del proveedor de identidades (la instancia) y la audiencia de inicio de sesión para la aplicación. De forma conjunta, estos dos parámetros se conocen como la autoridad.
  • El identificador del inquilino si va a escribir una aplicación de línea de negocio exclusivamente para la organización (también denominada aplicación de un único inquilino).
  • El secreto de aplicación (cadena de secreto de cliente) o el certificado (del tipo X509Certificate2) si se trata de una aplicación cliente confidencial.
  • Con aplicaciones web y, a veces, con aplicaciones cliente públicas (concretamente cuando la aplicación debe usar a un agente), también debe establecer redirectUri donde el proveedor de identidades se conecta de nuevo a la aplicación con los tokens de seguridad.

Inicialización de aplicaciones cliente públicas y confidenciales desde código

El código siguiente crea una instancia de una aplicación cliente pública e inicia la sesión de los usuarios en la nube pública de Microsoft Azure con sus cuentas profesionales o educativas o bien con sus cuentas Microsoft personales.

IPublicClientApplication app = PublicClientApplicationBuilder.Create(clientId).Build();

En la misma manera, el código siguiente crea una instancia de una aplicación confidencial (una aplicación web ubicada en https://myapp.azurewebsites.net) y controla los tokens de los usuarios en la nube pública de Microsoft Azure con sus cuentas profesionales o educativas o bien con sus cuentas Microsoft personales. La aplicación se identifica con el proveedor de identidades compartiendo un secreto de cliente:

string redirectUri = "https://myapp.azurewebsites.net";
IConfidentialClientApplication app = ConfidentialClientApplicationBuilder.Create(clientId)
    .WithClientSecret(clientSecret)
    .WithRedirectUri(redirectUri )
    .Build();

Modificadores del generador

En los fragmentos de código que usan generadores de aplicaciones, pueden aplicarse como modificadores varios métodos .With (por ejemplo, .WithAuthority y .WithRedirectUri).

  • Modificador .WithAuthority: El modificador .WithAuthority stablece la autoridad predeterminada de la aplicación en una entidad de Microsoft Entra, con la posibilidad de elegir la nube de Azure, el público, el inquilino (identificador de inquilino o nombre de dominio), o proporcionar directamente el URI de la autoridad.

    var clientApp = PublicClientApplicationBuilder.Create(client_id)
        .WithAuthority(AzureCloudInstance.AzurePublic, tenant_id)
        .Build();
    
  • Modificador .WithRedirectUri: el modificador .WithRedirectUri anula el URI de redireccionamiento predeterminado.

    var clientApp = PublicClientApplicationBuilder.Create(client_id)
        .WithAuthority(AzureCloudInstance.AzurePublic, tenant_id)
        .WithRedirectUri("http://localhost")
        .Build();
    

Modificadores comunes a las aplicaciones cliente públicas y confidenciales

En la tabla siguiente se enumeran algunos de los modificadores que puede establecer en un cliente público o confidencial.

Modificador Descripción
.WithAuthority() Establece la autoridad predeterminada de la aplicación en una autoridad de Microsoft Entra, con la posibilidad de elegir Azure Cloud, la audiencia o el inquilino (identificador de inquilino o nombre de dominio) o de proporcionar directamente la URI de la autoridad.
.WithTenantId(string tenantId) Invalida el identificador del inquilino o la descripción del inquilino.
.WithClientId(string) Invalida el identificador de cliente.
.WithRedirectUri(string redirectUri) Invalida la URI de redirección predeterminada. Esto es útil en escenarios que requieren un agente.
.WithComponent(string) Establece el nombre de la biblioteca mediante MSAL.NET (por motivos de telemetría).
.WithDebugLoggingCallback() Si se llama, la aplicación llama a Debug.Write simplemente habilitando seguimientos de depuración.
.WithLogging() Si se llama, la aplicación llamará a una devolución de llamada con seguimientos de depuración.
.WithTelemetry(TelemetryCallback telemetryCallback) Establece al delegado utilizado para enviar datos de telemetría.

Modificadores específicos de las aplicaciones cliente confidenciales

Los modificadores que puede establecer en un generador de aplicaciones cliente confidenciales son los siguientes:

Modificador Descripción
.WithCertificate(X509Certificate2 certificate) Establece el certificado que identifica la aplicación con Microsoft Entra ID.
.WithClientSecret(string clientSecret) Establece el secreto de cliente (contraseña de la aplicación) que identifica la aplicación con Microsoft Entra ID.