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
- 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 iniciar la aplicación de inicio rápido:
- [Express] Opción 1: Registrar y configurar automáticamente la aplicación y, a continuación, descargar el ejemplo de código
- [Manual] opción 2: Registrar y configurar manualmente la aplicación y el ejemplo de código
Opción 1: Registrar y configurar automáticamente la aplicación y, a continuación, descargar el ejemplo de código
- 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 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:
- 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 Identidad>Aplicaciones>Registros de aplicaciones y 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 y puede cambiarlo más adelante. - 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).
- 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: 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
Extraiga el archivo ZIP en una carpeta local cerca de la raíz del disco, por ejemplo, C:\Azure-Samples.
Abra el proyecto en Visual Studio.
Edite App.Xaml.cs y reemplace los valores de los campos
ClientId
yTenant
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
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.