Compartir a través de


Guía rápida: Iniciar sesión de usuarios en una aplicación de página única (SPA) y realizar llamadas a la API de Microsoft Graph

Se aplica a:Círculo verde con un símbolo de marca de verificación blanca. inquilinos de personal Círculo verde con un símbolo de marca de verificación blanca. inquilinos externos (más información)

En este inicio rápido, usará una aplicación de página única (SPA) de ejemplo para mostrar cómo iniciar sesión a los usuarios mediante el flujo de código de autorización con la clave de prueba para Intercambio de código (PKCE) y llamar a Microsoft Graph API. En el ejemplo se usa la biblioteca de autenticación de Microsoft para controlar la autenticación.

Prerrequisitos

  • Una cuenta de Azure con una suscripción activa. Si no tienes una, crea una cuenta gratis.
  • Esta cuenta de Azure debe tener permisos para administrar aplicaciones. Cualquiera de los siguientes roles de Microsoft Entra incluye los permisos necesarios:
    • Administrador de aplicaciones
    • Desarrollador de aplicaciones
  • Un inquilino trabajador Puede usar el directorio predeterminado o configurar un nuevo inquilino.
  • Visual Studio Code u otro editor de código.

Clonar o descargar la aplicación de ejemplo

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

  • Para clonar el ejemplo, abra un símbolo del sistema y vaya a dónde desea crear el proyecto y escriba el siguiente comando:

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

Configuración del proyecto

  1. En el IDE, abra la carpeta del proyecto, ms-identity-docs-code-javascript, que contiene el ejemplo.

  2. Abra vanillajs-spa/App/public/authConfig.js y actualice los valores siguientes con la información registrada en el centro de administración.

    /**
     * Configuration object to be passed to MSAL instance on creation. 
     * For a full list of MSAL.js configuration parameters, visit:
     * https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/docs/configuration.md 
     */
    const msalConfig = {
        auth: {
             clientId: "Enter_the_Application_Id_Here",
             // WORKFORCE TENANT
             authority: "https://login.microsoftonline.com/Enter_the_Tenant_Info_Here", //  Replace the placeholder with your tenant info
             // EXTERNAL TENANT
             // authority: "https://Enter_the_Tenant_Subdomain_Here.ciamlogin.com/", // Replace the placeholder with your tenant subdomain
            redirectUri: '/', // You must register this URI on App Registration. Defaults to window.location.href e.g. http://localhost:3000/
            navigateToLoginRequestUrl: true, // If "true", will navigate back to the original request location before processing the auth code response.
        },
        cache: {
            cacheLocation: 'sessionStorage', // Configures cache location. "sessionStorage" is more secure, but "localStorage" gives you SSO.
            storeAuthStateInCookie: false, // set this to true if you have to support IE
        },
        system: {
            loggerOptions: {
                loggerCallback: (level, message, containsPii) => {
                    if (containsPii) {
                        return;
                    }
                    switch (level) {
                        case msal.LogLevel.Error:
                            console.error(message);
                            return;
                        case msal.LogLevel.Info:
                            console.info(message);
                            return;
                        case msal.LogLevel.Verbose:
                            console.debug(message);
                            return;
                        case msal.LogLevel.Warning:
                            console.warn(message);
                            return;
                    }
                },
            },
        },
    };
    
    /**
     * Scopes you add here will be prompted for user consent during sign-in.
     * By default, MSAL.js will add OIDC scopes (openid, profile, email) to any login request.
     * For more information about OIDC scopes, visit: 
     * https://learn.microsoft.com/en-us/entra/identity-platform/permissions-consent-overview#openid-connect-scopes
     */
    const loginRequest = {
        scopes: ["User.Read"],
    };
    
    /**
     * An optional silentRequest object can be used to achieve silent SSO
     * between applications by providing a "login_hint" property.
     */
    
    // const silentRequest = {
    //   scopes: ["openid", "profile"],
    //   loginHint: "example@domain.net"
    // };
    
    // exporting config object for jest
    if (typeof exports !== 'undefined') {
        module.exports = {
            msalConfig: msalConfig,
            loginRequest: loginRequest,
        };
    }
    
    • clientId: el identificador de la aplicación, también conocido como el cliente. Reemplace el texto entre comillas por el valor de Id. de aplicación (cliente) que se registró anteriormente.
    • authority: la autoridad es una dirección URL que indica un directorio desde el que MSAL puede solicitar tokens. Reemplace Enter_the_Tenant_Info_Here por el valor de Identificador de directorio (inquilino) que se registró anteriormente.
    • redirectUri: el identificador URI de redireccionamiento de la aplicación. Si es necesario, reemplace el texto entre comillas por el URI de redirección que se registró anteriormente.

Ejecuta la aplicación e inicia y cierra sesión.

Ejecute el proyecto con un servidor web mediante Node.js:

  1. Para iniciar el servidor, ejecute los siguientes comandos desde el directorio del proyecto:

    cd vanillajs-spa/App
    npm install
    npm start
    
  2. Copie la dirección URL de https que aparece en el terminal, por ejemplo, https://localhost:3000y péguela en un explorador. Se recomienda usar una sesión privada o incógnita del explorador.

  3. Siga los pasos y escriba los detalles necesarios para iniciar sesión con su cuenta Microsoft. Se le pedirá una dirección de correo electrónico para enviarle una contraseña de uso único. Escriba el código cuando se le solicite.

  4. La aplicación solicitará permiso para mantener el acceso a los datos a los que usted le haya dado acceso, así como para iniciar sesión y leer su perfil. Seleccione Aceptar. Aparece la captura de pantalla siguiente, que indica que ha iniciado sesión en la aplicación y ha accedido a los detalles del perfil desde Microsoft Graph API.

    Captura de pantalla de la aplicación de JavaScript que muestra los resultados de la llamada API.

Prerrequisitos

Clonar o descargar SPA de ejemplo

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

  • Para clonar el ejemplo, abra un símbolo del sistema y vaya a dónde desea crear el proyecto y escriba el siguiente comando:

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

Configuración de la SPA de ejemplo

  1. Abra App/public/authConfig.js y reemplace lo siguiente por los valores obtenidos del Centro de administración de Microsoft Entra:

    • Enter_the_Application_Id_Here y reemplázalo por el ID de cliente (aplicación) de la aplicación que registraste anteriormente.
    • Enter_the_Tenant_Subdomain_Here y reemplácelo por el subdominio Directorio (inquilino). Por ejemplo, si el dominio principal del cliente es contoso.onmicrosoft.com, utilice contoso. Si no tiene el nombre del inquilino, aprenda a leer los detalles del inquilino.
  2. Guarde el archivo.

Ejecute su proyecto e inicie sesión

  1. Para iniciar el servidor, ejecute los siguientes comandos desde el directorio del proyecto:

    cd 1-Authentication\0-sign-in-vanillajs\App
    npm install
    npm start
    
  2. Copie la dirección URL de https que aparece en el terminal, por ejemplo, https://localhost:3000y péguela en un explorador. Se recomienda usar una sesión privada o incógnita del explorador.

  3. Inicie sesión con una cuenta registrada en el inquilino.

  4. Aparece la captura de pantalla siguiente, que indica que ha iniciado sesión en la aplicación y ha accedido a los detalles del perfil desde Microsoft Graph API.

    Captura de pantalla de la aplicación de JavaScript que muestra los resultados de la llamada API.

Cerrar sesión de la aplicación

  1. Busque el botón Cerrar sesión en la página y selecciónelo.
  2. Se le solicitará seleccionar una cuenta para cerrar sesión. Seleccione la cuenta que usó para iniciar sesión.

Aparece un mensaje que indica que ha cerrado la sesión. Ahora puede cerrar la ventana del explorador.