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
- Visual Studio con la carga de trabajo Desarrollo de la Plataforma universal de Windows instalada.
Registro y descarga de la aplicación de inicio rápido
Tiene dos opciones para comenzar con la aplicación de inicio rápido:
- [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
- [Manual] Opción 2: registrar y configurar manualmente la aplicación y el código de ejemplo
Opción 1: registrar y configurar de modo automático la aplicación y, a continuación, descargar el código de ejemplo
- Vaya a la experiencia de inicio rápido del Centro de administración de Microsoft Entra: Registros de aplicacionesexperiencia de inicio rápido.
- Escriba un nombre para la aplicación y seleccione Registrar.
- 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:
- Inicie sesión en el centro de administración de Microsoft Entra.
- 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.
- Vaya a Identity>Aplicaciones>Registros de aplicaciones, seleccione Nuevo registro.
- 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. - 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) .
- Seleccione Registrar para crear la aplicación.
- En Administrar, seleccione Autenticación.
- Selecciones Agregar una plataforma>Aplicaciones móviles y de escritorio.
- En la sección URI de redirección, seleccione
https://login.microsoftonline.com/common/oauth2/nativeclient
y, en URI de redireccionamiento personalizados, agreguems-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 casillamsal{client_id}://auth
). - 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
Extraiga el archivo ZIP en una carpeta local próxima a la raíz del disco, por ejemplo, C:\Azure-Samples.
Abra el proyecto en Visual Studio.
Edite el archivo App.Xaml.cs y reemplace los valores de los campos
ClientId
yTenant
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
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.