Compartir a través de


Iniciar sesión de usuarios en una aplicación de escritorio WPF de muestra

En esta guía se usa una aplicación de ejemplo de Windows Presentation Foundation (WPF) para mostrar cómo se agrega autenticación a una aplicación de escritorio WPF. La aplicación de ejemplo permite a los usuarios iniciar sesión y cerrar la sesión. La aplicación de escritorio de .NET MAUI de ejemplo usa la Biblioteca de autenticación de Microsoft for .NET para .NET para controlar la autenticación.

Requisitos previos

Registrar la aplicación de escritorio

Para permitir que su aplicación inicie la sesión de los usuarios con Microsoft Entra, la id. externa de Microsoft Entra debe tener en cuenta la aplicación que haya creado. El registro de la aplicación establece una relación de confianza entre la aplicación y Microsoft Entra. Al registrar una aplicación, External ID genera un identificador único conocido como Id. de aplicación (cliente), un valor que se usa para identificar la aplicación al crear solicitudes de autenticación.

En los pasos siguientes, se muestra cómo registrar una aplicación en el centro de administración de Microsoft Entra:

  1. Inicie sesión en el Centro de administración de Microsoft Entra al menos como Desarrollador de aplicaciones.

  2. Si tienes acceso a varios inquilinos, usa el icono Configuración en el menú superior para cambiar al inquilino externo desde el menú Directorios y suscripciones.

  3. Ve aIdentidad>Aplicaciones>Registros de aplicaciones.

  4. Seleccione + Nuevo registro.

  5. En la página Registrar una aplicación que aparece;

    1. Introduzca un Nombre de aplicación significativo que se muestre a los usuarios de la aplicación, por ejemplo ciam-client-app.
    2. En Tipos de cuenta admitidos, seleccione Solo las cuentas de este directorio organizativo.
  6. Seleccione Registrar.

  7. Se muestra el panel Información general de la aplicación tras registrarse correctamente. Registre el id. de la aplicación (cliente) que se usará en el código fuente de la aplicación.

Especificar la plataforma de aplicaciones

Para especificar el tipo de aplicación en el registro de la aplicación, siga estos pasos:

  1. En Administrar, seleccione Autenticación.
  2. En la página Configuraciones de plataforma, seleccione Agregar una plataforma y elija la opción Aplicaciones móviles y de escritorio.
  3. En el campo de entrada, en identificador URI de redirección personalizado, escriba manualmente https://login.microsoftonline.com/common/oauth2/nativeclient y seleccione Configurar. Si selecciona este identificador URI en el cuadro de selección, puede obtener un error de identificador URI de redireccionamiento.

Cuando registre la aplicación, se le asignará el permiso User.Read. Sin embargo, dado que el inquilino es un inquilino externo, los propios usuarios del cliente no pueden dar su consentimiento a este permiso. Como administrador, debe dar el consentimiento a este permiso en nombre de todos los usuarios del inquilino:

  1. En la página Registros de aplicaciones, seleccione la aplicación que creó (como ciam-client-app) para abrir la página Información general.

  2. En Administrar, seleccione Permisos de API.

    1. Seleccione Conceder consentimiento del administrador para <nombre del inquilino> y seleccione .
    2. Seleccione Actualizar, luego compruebe que Concedido para <su nombre de inquilino> aparece en el Estado del permiso.

Creación de un flujo de usuario

Siga estos pasos para crear un flujo de usuario que un cliente pueda usar para iniciar sesión o registrarse en una aplicación.

  1. Inicie sesión en el centro de administración de Microsoft Entra como mínimo un administrador de flujo de usuario de identificador externo.

  2. Si tiene acceso a varios inquilinos, use el icono Configuración en el menú superior para cambiar al inquilino externo desde el menú Directorios y suscripciones.

  3. Vaya a Identidad> Identidades externas> Flujos de usuarios.

  4. Seleccione + Nuevo flujo de usuario.

  5. En la página Crear:

    1. Escriba un nombre para el flujo de usuario, como SignInSignUpSample.

    2. En la lista Proveedores de identidades, seleccione Cuentas de correo electrónico. Este proveedor de identidades permite a los usuarios iniciar sesión o registrarse con su dirección de correo electrónico.

      Nota

      Los proveedores de identidades adicionales se mostrarán aquí solo después de que configure la federación con ellos. Por ejemplo, si configura la federación con Google o Facebook, podrá seleccionar esos proveedores de identidades adicionales aquí.

    3. En Cuentas de correo electrónico, puede seleccionar una de las dos opciones. En este tutorial, seleccione Correo electrónico con contraseña.

      • Correo electrónico con contraseña: permite a los nuevos usuarios registrarse e iniciar sesión con una dirección de correo electrónico como nombre de inicio de sesión y una contraseña como credencial del primer factor.
      • Código de acceso de un solo uso de correo electrónico: permite a los nuevos usuarios registrarse e iniciar sesión con una dirección de correo electrónico como el nombre de inicio de sesión y el código de acceso de un solo uso como credencial del primer factor. El código de acceso de un solo uso de correo electrónico debe estar habilitado en el nivel de inquilino (Todos los proveedores de identidades>Código de acceso de un solo uso de correo electrónico) para que esta opción esté disponible en el nivel de flujo de usuario.
    4. En Atributos de usuario, elija los atributos que quiere recopilar del usuario tras registrarse. Al seleccionar Mostrar más, puede elegir los atributos y las notificaciones de País o región, Nombre para mostrar y Código postal. Seleccione Aceptar. (A los usuarios solo se les solicitan atributos cuando se registran por primera vez).

  6. Seleccione Crear. El nuevo flujo de usuario aparece en la lista Flujos de usuario. Si es necesario, actualice la página.

Para habilitar el autoservicio de restablecimiento de contraseña, siga los pasos descritos en el artículo Habilitar el autoservicio de restablecimiento de contraseña.

Asociación de la aplicación WPF con el flujo de usuarios

Para que los usuarios clientes vean la experiencia de registro o inicio de sesión cuando utilizan la aplicación, debe asociarla a un flujo de usuarios. Aunque muchas aplicaciones se pueden asociar a su flujo de usuario, una sola aplicación solo se puede asociar a un flujo de usuario.

  1. En el menú de la barra lateral, seleccione Identidad.

  2. Seleccione External Identities y, a continuación, Flujos de usuario.

  3. En la página Flujos de usuario, seleccione el nombre del flujo de usuario que creó anteriormente; por ejemplo, SignInSignUpSample.

  4. En Usar, seleccione Aplicaciones.

  5. Seleccione Agregar una aplicación.

  6. Seleccione la aplicación de la lista, como ciam-client-app, o use el cuadro de búsqueda para buscar la aplicación y selecciónela.

  7. Elija Seleccionar.

Una vez que asocie su aplicación con un flujo de usuarios, puede probar su flujo de usuarios simulando la experiencia de registro o inicio de sesión de un usuario con su aplicación desde el centro de administración de Microsoft Entra. Para ello, siga los pasos descritos en Prueba del flujo de usuario de registro e inicio de sesión.

Clonar o descargar una aplicación WPF de muestra

Para obtener la aplicación de ejemplo, puede clonarla desde GitHub o descargarla como archivo .zip.

  • Para clonar la muestra, abra un símbolo del sistema y navegue hasta donde desea crear el proyecto, e introduzca el siguiente comando:

    git clone https://github.com/Azure-Samples/ms-identity-ciam-dotnet-tutorial.git
    
  • Descargue el archivo .zip. Extráigalo en una ruta de acceso de archivo donde la longitud del nombre sea inferior a 260 caracteres.

Configuración de la aplicación WPF de ejemplo

  1. Abra el proyecto en su IDE (como Visual Studio o Visual Studio Code) para configurar el código.

  2. En el editor de código, abra el archivo appsettings.json en la carpeta ms-identity-ciam-dotnet-tutorial>1-Authentication>5-sign-in-dotnet-wpf .

  3. Reemplace Enter_the_Application_Id_Here con el Id. de aplicación (cliente) de la aplicación que registró anteriormente.

  4. Reemplace Enter_the_Tenant_Subdomain_Here por el subdominio del directorio (inquilino). Por ejemplo, si el dominio principal es contoso.onmicrosoft.com, reemplace Enter_the_Tenant_Subdomain_Here por contoso. Si no tiene el dominio principal, obtenga información sobre cómo leer los detalles del inquilino.

Ejecute y pruebe la aplicación de escritorio WPF de muestra

  1. Abra una ventana de consola y cambie al directorio que contiene la aplicación de ejemplo de escritorio de WPF:

    cd 1-Authentication\5-sign-in-dotnet-wpf
    
  2. En el terminal, ejecute la aplicación mediante la ejecución del siguiente comando:

    dotnet run
    
  3. Después de iniciar el ejemplo, debería ver una ventana con un botón para Iniciar sesión. Haga clic en el botón Inicial sesión.

    Captura de pantalla de la pantalla de inicio de sesión para una aplicación de escritorio de WPF.

  4. En la página de inicio de sesión, escriba la dirección de correo electrónico de su cuenta. Si no tiene una cuenta, seleccione ¿No tiene una cuenta? Cree una, que inicia el flujo de registro. Siga este flujo para crear una nueva cuenta e iniciar sesión.

  5. Una vez que inicie sesión, verá una pantalla en la que se muestra el inicio de sesión correcto y la información básica sobre la cuenta de usuario almacenada en el token recuperado. La información básica se muestra en la sección Información del token de la pantalla de inicio de sesión

Funcionamiento

La configuración principal de la aplicación cliente pública se controla en el archivo App.xaml.cs . PublicClientApplication se inicializa junto con una memoria caché para almacenar tokens de acceso. La aplicación comprobará primero si hay un token almacenado en caché que se puede usar para iniciar la sesión del usuario. Si no hay ningún token almacenado en caché, se le pedirá al usuario que proporcione las credenciales y el inicio de sesión. Al cerrar sesión, la memoria caché se borra de todas las cuentas y de todos los tokens de acceso correspondientes.