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 código de ejemplo que muestra cómo una aplicación de Windows Presentation Foundation (WPF) puede iniciar la sesión de 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).

Para ilustrar este tema, consulte el apartado en el que se explica el funcionamiento del ejemplo.

Prerrequisitos

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

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

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

  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 código de ejemplo

Paso 1: Registrar su aplicación

Sugerencia

Los pasos de este artículo pueden variar ligeramente en función del portal desde donde comienza.

Para registrar la aplicación y agregar la información de registro de la aplicación a la solución de forma manual, 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 Identity>Aplicaciones>Registros de aplicaciones, 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, el cual se puede cambiar más tarde.
  5. En Tipos de cuenta admitidos, seleccione Cuentas en cualquier directorio de organización y cuentas personales de Microsoft (por ejemplo, Skype, Xbox o 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: Descarga del proyecto

Descargue la aplicación para WPF de ejemplo.

Sugerencia

Se recomienda extraer el archivo o clonar el repositorio en un directorio próximo a la raíz de la unidad para evitar los errores provocados por las limitaciones de longitud de la ruta de acceso en Windows.

Paso 3: Configuración del proyecto

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

  2. Abra el proyecto en Visual Studio.

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

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

Donde:

  • 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 como una de las opciones siguientes:

    • Si la aplicación admite Accounts in this organizational directory (Cuentas en este directorio de la organización), reemplace este valor por el identificador de inquilino o el nombre de inquilino (por ejemplo, contoso.microsoft.com)

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

    • Si la aplicación admite Cuentas en cualquier directorio organizativo y cuentas Microsoft personales, 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 de la aplicación en el Centro de administración de Microsoft Entra.

Paso 4: Ejecución de 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 (MainWindow) de la aplicación.

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

Si es la primera vez que ejecuta la aplicación, se le pedirá que dé su consentimiento para permitir que la aplicación acceda a su perfil de usuario e inicie sesión. Tras consentir los permisos solicitados, la aplicación muestra que ha iniciado sesión correctamente. Debe aparecer alguna información básica del token y los datos de usuario obtenidos de la llamada a Microsoft Graph API.

Más información

Funcionamiento del ejemplo

Diagram showing how the sample app generated by this quickstart works.

MSAL.NET

MSAL (Microsoft.Identity.Client) es la biblioteca que se usa para iniciar la sesión de los usuarios y solicitar tokens de acceso a una API protegida por la Plataforma de identidad de Microsoft. Puede instalar MSAL mediante la ejecución del siguiente comando 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 con el código siguiente:

using Microsoft.Identity.Client;

A continuación, realice la inicialización de MSAL con el siguiente código:

IPublicClientApplication publicClientApp = PublicClientApplicationBuilder.Create(ClientId)
                .WithRedirectUri("https://login.microsoftonline.com/common/oauth2/nativeclient")
                .WithAuthority(AzureCloudInstance.AzurePublic, Tenant)
                .Build();
Donde: 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 interactivamente

En algunas situaciones, es necesario forzar a los usuarios a interactuar con la Plataforma de identidad de Microsoft mediante una ventana emergente para validar sus credenciales o dar su consentimiento. Estos son algunos ejemplos:

  • La primera vez que los usuarios inician sesión en la aplicación
  • Cuando los usuarios deben volver a escribir sus credenciales porque la contraseña expiró
  • Cuando la aplicación solicita acceso a un recurso para el cual el usuario necesita dar su consentimiento
  • Cuando se requiere la autenticación en dos fases
authResult = await app.AcquireTokenInteractive(_scopes)
                                      .ExecuteAsync();
Donde: 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 en silencio

No desea pedirle al usuario que valide sus credenciales cada vez que necesite obtener acceso a un recurso. La mayor parte del tiempo, quiere que la renovación y adquisición de tokens ocurra sin la interacción del usuario. Puede usar el método AcquireTokenSilent para obtener tokens que permiten acceder a recursos protegidos después del método AcquireTokenInteractive inicial:

var accounts = await app.GetAccountsAsync();
var firstAccount = accounts.FirstOrDefault();
authResult = await app.AcquireTokenSilent(scopes, firstAccount)
                                      .ExecuteAsync();
Donde: 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 en la memoria caché (MSAL admite varios usuarios en una sola aplicación).

Ayuda y soporte técnico

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

Pasos siguientes

Visite el tutorial de escritorio de Windows para acceder a una guía completa paso a paso sobre la creación de aplicaciones y nuevas características, que incluye una explicación completa de esta guía de inicio rápido.