Inicio rápido: Adquisición de un token y llamada a Microsoft Graph API desde una aplicación de escritorio de Windows
¡Bienvenido! Probablemente esta no sea la página que esperaba. Mientras trabajamos en una corrección, este vínculo debería llevarle al artículo correcto:
Lamentamos las molestias y agradecemos su paciencia mientras trabajamos para resolverlo.
En este artículo de 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.
Para ilustrar este tema, consulte el apartado en el que se explica el funcionamiento del ejemplo.
Paso 1: Configuración de la aplicación en Azure Portal
Para que el código de ejemplo de este inicio rápido funcione, agregue un identificador URI de redirección para https://login.microsoftonline.com/common/oauth2/nativeclient
y ms-appx-web://microsoft.aad.brokerplugin/{client_id}
.
La aplicación está configurada con estos atributos.
Paso 2: Descarga del proyecto de Visual Studio
Ejecute el proyecto con Visual Studio 2019.
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: La aplicación está configurada y lista para ejecutarse
Hemos configurado el proyecto con los valores de las propiedades de su aplicación y está preparado para ejecutarse.
Nota:
Enter_the_Supported_Account_Info_Here
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 Azure Portal. Puede encontrar este valor en la página Información general de la aplicación en Azure Portal. |
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.PublicClientApp.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.PublicClientApp.GetAccountsAsync();
var firstAccount = accounts.FirstOrDefault();
authResult = await App.PublicClientApp.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.