快速入门:从 Node.js 桌面应用中让用户登录并调用 Microsoft Graph

在本快速入门中将下载并运行一个代码示例,该示例演示 Electron 桌面应用程序如何让用户登录并获取访问令牌来调用 Microsoft Graph API。

本快速入门通过使用 PKCE 的身份验证代码流使用适用于 Node.js 的 Microsoft 身份验证库 (MSAL Node)

先决条件

注册并下载示例应用程序

请按照以下步骤开始使用。

步骤 1:注册应用程序

提示

本文中的步骤可能因开始使用的门户而略有不同。

若要手动注册应用程序并将应用的注册信息添加到解决方案,请执行以下步骤:

  1. 至少以云应用程序管理员身份登录到 Microsoft Entra 管理中心
  2. 如果你有权访问多个租户,请使用顶部菜单中的“设置”图标 ,通过“目录 + 订阅”菜单切换到你希望在其中注册应用程序的租户。
  3. 浏览至“标识”>“应用程序”>“应用注册”,选择“新建注册”。
  4. 输入应用程序的名称(例如 msal-node-desktop)。 应用的用户可能会看到此名称,你稍后可对其进行更改。
  5. 选择“注册”以创建应用程序。
  6. 在“管理”下,选择“身份验证”。
  7. 选择“添加平台”>“移动和桌面应用程序” 。
  8. 在“重定向 URI”部分中,输入 http://localhost
  9. 选择“配置” 。

步骤 2:下载 Electron 示例项目

下载代码示例

步骤 3:配置 Electron 示例项目

*提取项目,打开 ms-identity-JavaScript-nodejs-desktop-main 文件夹,然后打开 .authConfig.js 文件。 替换值,如下所示:

变量 说明 示例
Enter_the_Cloud_Instance_Id_Here 在其中注册应用程序的 Azure 云实例 https://login.microsoftonline.com/(包括尾随正斜杠)
Enter_the_Tenant_Id_Here 租户 ID 或主域 contoso.microsoft.comaaaabbbb-0000-cccc-1111-dddd2222eeee
Enter_the_Application_Id_Here 你已注册的应用程序的客户端 ID 00001111-aaaa-2222-bbbb-3333cccc4444
Enter_the_Redirect_Uri_Here 已注册的应用程序的重定向 URI msal00001111-aaaa-2222-bbbb-3333cccc4444://auth
Enter_the_Graph_Endpoint_Here 你的应用将调用的 Microsoft Graph API 云实例 https://graph.microsoft.com/(包括尾随正斜杠)

你的文件应与以下内容类似:

const AAD_ENDPOINT_HOST = "https://login.microsoftonline.com/"; // include the trailing slash

const msalConfig = {
    auth: {
        clientId: "00001111-aaaa-2222-bbbb-3333cccc4444",
        authority: `${AAD_ENDPOINT_HOST}/aaaabbbb-0000-cccc-1111-dddd2222eeee`,
    },
    system: {
        loggerOptions: {
            loggerCallback(loglevel, message, containsPii) {
                 console.log(message);
             },
             piiLoggingEnabled: false,
             logLevel: LogLevel.Verbose,
        }
    }
}

const GRAPH_ENDPOINT_HOST = "https://graph.microsoft.com/"; // include the trailing slash

const protectedResources = {
     graphMe: {
         endpoint: `${GRAPH_ENDPOINT_HOST}v1.0/me`,
         scopes: ["User.Read"],
     }
};

module.exports = {
     msalConfig: msalConfig,
     protectedResources: protectedResources,
 };

步骤 4:运行应用程序

  1. 需要安装一次此示例的依赖项:

    cd ms-identity-javascript-nodejs-desktop-main
    npm install
    
  2. 然后,通过命令提示符或控制台运行应用程序:

    npm start
    
  3. 选择“登录”以启动登录过程。

    首次登录时,系统会提示你允许应用程序将你登录并访问你的个人资料。 成功登录后,你将被重定向回应用程序。

详细信息

示例工作原理

用户首次选择“登录”按钮时,将调用 MSAL Node 的 acquireTokenInteractive 方法。 此方法将用户重定向到使用 Microsoft 标识平台终结点进行登录,获取授权代码,然后用其交换访问令牌。

MSAL Node

MSAL Node 是一个用于登录用户和请求令牌的库,此类令牌用于访问受 Microsoft 标识平台保护的 API。 若要详细了解如何搭配使用 MSAL Node 和桌面应用,请参阅本文

可通过运行以下 npm 命令安装 MSAL Node。

npm install @azure/msal-node --save

后续步骤

若要详细了解如何通过 MSAL Node 进行 Electron 桌面应用开发,请参阅教程: