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):

  • Id. de aplicación (cliente): Se trata de una cadena que representa un GUID.
  • Id. de directorio (inquilino): Proporciona capacidades de administración de identidades y acceso (IAM) a las aplicaciones y recursos que usa la organización. Esta Id. puede especificar si va a escribir una aplicación de línea de negocio que sea exclusivamente para la organización (también denominada aplicación de un único inquilino).
  • La URL del proveedor de identidades (que asignó el nombre a 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.
  • Credenciales del cliente, que pueden ser un secreto de aplicación (cadena de secreto de cliente) o un certificado (del tipo X509Certificate2) si se trata de una aplicación cliente confidencial.
  • En el caso de las aplicaciones web y, a veces, para las aplicaciones cliente públicas (en particular cuando la aplicación necesita usar un agente), debe establecer el URI de redirección donde el proveedor de identidades se pondrá en contacto con 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.

    IPublicClientApplication app;
    app = PublicClientApplicationBuilder.Create(clientId)
        .WithAuthority(AzureCloudInstance.AzurePublic, tenantId)
        .Build();
    
  • Modificador .WithRedirectUri: el modificador .WithRedirectUri anula el URI de redireccionamiento predeterminado.

    IPublicClientApplication app;
    app = 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 específicos de un generador de aplicaciones cliente confidenciales se pueden encontrar en la clase ConfidentialClientApplicationBuilder. Los distintos métodos se pueden encontrar en la documentación del SDK de Azure para .NET.

Los modificadores como .WithCertificate(X509Certificate2 certificate) y .WithClientSecret(string clientSecret) son mutuamente excluyentes. Si proporciona ambos modificadores, MSAL produce una excepción significativa.