Compartir a través de


Inicio rápido: Inicio de sesión de usuarios y llamada a Microsoft Graph en una aplicación de escritorio de Windows

En este inicio rápido, descargará y ejecutará un ejemplo de código que muestra cómo una aplicación de Windows Presentation Foundation (WPF) puede iniciar sesión a los usuarios y obtener un token de acceso para llamar a Microsoft Graph API. La aplicación de escritorio que compila usa el flujo de código de autorización emparejado con el estándar Proof Key for Code Exchange (PKCE).

Consulte Cómo funciona el ejemplo para obtener una ilustración.

Prerrequisitos

Registro y descarga de la aplicación de inicio rápido

Tiene dos opciones para iniciar la aplicación de inicio rápido:

Opción 1: Registrar y configurar automáticamente la aplicación y, a continuación, descargar el ejemplo de código

  1. Vaya a la experiencia de inicio rápido del Centro de administración de Microsoft Entra: Registros de aplicacionesexperiencia de inicio rápido.
  2. Escriba un nombre para la aplicación y seleccione Registrar.
  3. Siga las instrucciones para descargar y configurar automáticamente la nueva aplicación con un solo clic.

Opción 2: Registrar y configurar manualmente la aplicación y el ejemplo de código

Paso 1: Registrar la aplicación

Para registrar la aplicación y agregar manualmente la información de registro de la aplicación a la solución, siga estos pasos:

  1. Inicie sesión en el Centro de administración de Microsoft Entra.
  2. Si tiene acceso a varios inquilinos, use el icono Configuración del menú superior para cambiar al inquilino en el que desea registrar la aplicación desde el menú Directorios y suscripciones.
  3. Vaya a Identidad>Aplicaciones>Registros de aplicaciones y seleccione Nuevo registro.
  4. Escriba el Nombre de la aplicación, por ejemplo: Win-App-calling-MsGraph. Los usuarios de la aplicación pueden ver este nombre y puede cambiarlo más adelante.
  5. En la sección Tipos de cuenta admitidos, seleccione Cuentas en cualquier directorio organizativo y cuentas personales de Microsoft (por ejemplo, Skype, Xbox, Outlook.com).
  6. Seleccione Registrar para crear la aplicación.
  7. En Administrar, seleccione Autenticación.
  8. Selecciones Agregar una plataforma>Aplicaciones móviles y de escritorio.
  9. En la sección URI de redirección, seleccione https://login.microsoftonline.com/common/oauth2/nativeclient y, en URI de redireccionamiento personalizados, agregue ms-appx-web://microsoft.aad.brokerplugin/{client_id}, donde {client_id} es el identificador de la aplicación (cliente) de la aplicación (el mismo GUID que aparece en la casilla msal{client_id}://auth).
  10. Seleccione Configurar.

Paso 2: Descargar el proyecto

Descargar la aplicación de ejemplo de WPF

Sugerencia

Para evitar errores causados por limitaciones de longitud de ruta de acceso en Windows, se recomienda extraer el archivo o clonar el repositorio en un directorio cerca de la raíz de la unidad.

Paso 3: Configurar el proyecto

  1. Extraiga el archivo ZIP en una carpeta local cerca de la raíz del disco, por ejemplo, C:\Azure-Samples.

  2. Abra el proyecto en Visual Studio.

  3. Edite App.Xaml.cs y reemplace los valores de los campos ClientId y Tenant por el código siguiente:

    private static string ClientId = "Enter_the_Application_Id_here";
    private static string Tenant = "Enter_the_Tenant_Info_Here";
    

Dónde:

  • Enter_the_Application_Id_here: es el identificador de aplicación (cliente) de la aplicación que registró.

    Para encontrar el valor de id. de aplicación (cliente), vaya a la página información general de de la aplicación en el Centro de administración de Microsoft Entra.

  • Enter_the_Tenant_Info_Here : se establece en una de las siguientes opciones:

    • Si la aplicación admite cuentas de en este directorio organizativo, reemplace este valor por el Id. de Tenant de o por el nombre de Tenant de (por ejemplo, contoso.microsoft.com).

    • Si la aplicación admite cuentas de en cualquier directorio organizativo, reemplace este valor por organizations

    • Si la aplicación admite cuentas de en cualquier directorio organizativo y cuentas personales de Microsoft, reemplace este valor por common.

      Para buscar los valores de id. de directorio (inquilino) y tipos de cuenta admitidos, vaya a la página información general de la aplicación en el Centro de administración de Microsoft Entra.

Paso 4: Ejecutar la aplicación

Para compilar y ejecutar la aplicación de ejemplo en Visual Studio, seleccione el menú Depurar>Iniciar depuración o presione la tecla F5. Se muestra la ventana principal de su aplicación.

Cuando aparezca la ventana principal de la aplicación, seleccione el botón Llamar a Microsoft Graph API. Se le pedirá que inicie sesión con su cuenta de Microsoft Entra (cuenta profesional o educativa) o con las credenciales de la cuenta Microsoft (live.com, outlook.com).

Si ejecuta la aplicación por primera vez, se le pedirá que proporcione su consentimiento para permitir que la aplicación acceda a su perfil de usuario e inicie sesión. Después de dar su consentimiento a los permisos solicitados, la aplicación muestra que ha iniciado sesión correctamente. Debería ver información básica de token y datos de usuario obtenidos de la llamada a Microsoft Graph API.

Más información

Funcionamiento del ejemplo

Diagrama que muestra cómo funciona la aplicación de ejemplo generada por este inicio rápido.

MSAL.NET

MSAL (Microsoft.Identity.Client) es la biblioteca que se usa para iniciar sesión a los usuarios y solicitar tokens usados para acceder a una API protegida por la plataforma de identidad de Microsoft. Para instalar MSAL, ejecute el comando siguiente en la consola del Administrador de paquetes de Visual Studio:

Install-Package Microsoft.Identity.Client -IncludePrerelease

Inicialización de MSAL

Puede agregar la referencia de MSAL agregando el código siguiente:

using Microsoft.Identity.Client;

A continuación, inicialice MSAL con el código siguiente:

IPublicClientApplication publicClientApp = PublicClientApplicationBuilder.Create(ClientId)
                .WithRedirectUri("https://login.microsoftonline.com/common/oauth2/nativeclient")
                .WithAuthority(AzureCloudInstance.AzurePublic, Tenant)
                .Build();
Dónde: Descripción
ClientId Es el identificador de aplicación (cliente) de la aplicación registrada en el Centro de administración de Microsoft Entra. Puede encontrar este valor en la página Información general de la aplicación en el Centro de administración de Microsoft Entra.

Solicitud de tokens

MSAL tiene dos métodos para adquirir tokens: AcquireTokenInteractive y AcquireTokenSilent.

Obtención de un token de usuario de forma interactiva

Algunas situaciones requieren forzar a los usuarios a interactuar con la plataforma de identidad de Microsoft a través de una ventana emergente para validar sus credenciales o para dar su consentimiento. Algunos ejemplos son:

  • La primera vez que los usuarios inician sesión en la aplicación
  • Cuando es posible que los usuarios necesiten volver a escribir sus credenciales porque la contraseña ha expirado
  • Cuando la aplicación solicita acceso a un recurso al que el usuario necesita dar su consentimiento
  • Cuando se requiere la autenticación en dos fases
authResult = await app.AcquireTokenInteractive(_scopes)
                                      .ExecuteAsync();
Dónde: Descripción
_scopes Contiene los ámbitos que se solicitan, como { "user.read" } para Microsoft Graph o { "api://<Application ID>/access_as_user" } para las API web personalizadas.

Obtención de un token de usuario de forma silenciosa

No desea exigir al usuario que valide sus credenciales cada vez que necesite acceder a un recurso. La mayoría de las veces desea adquisiciones y renovación de tokens sin ninguna interacción del usuario. Puede usar el método AcquireTokenSilent para obtener tokens para acceder a los recursos protegidos después del método de AcquireTokenInteractive inicial:

var accounts = await app.GetAccountsAsync();
var firstAccount = accounts.FirstOrDefault();
authResult = await app.AcquireTokenSilent(scopes, firstAccount)
                                      .ExecuteAsync();
Dónde: Descripción
scopes Contiene los ámbitos que se solicitan, como { "user.read" } para Microsoft Graph o { "api://<Application ID>/access_as_user" } para las API web personalizadas.
firstAccount Especifica el primer usuario de la memoria caché (MSAL admite varios usuarios en una sola aplicación).

Ayuda y soporte técnico

Si necesita ayuda, quiere notificar un problema o desea obtener información sobre las opciones de soporte técnico, consulte Ayuda y soporte técnico para desarrolladores.

Pasos siguientes

Pruebe el tutorial de escritorio de Windows para obtener una guía paso a paso completa sobre la creación de aplicaciones y nuevas características, incluida una explicación completa de este inicio rápido.