快速入门:在示例 Web 应用中登录用户

适用于带白色复选标记符号的绿色圆圈,指示以下内容适用于员工租户。 员工租户 绿色圆圈,带有白色复选标记符号,指示以下内容适用于外部租户。 外部租户(了解详细信息

在本快速入门中,你将使用示例 Web 应用演示如何在员工租户中登录用户和调用 Microsoft Graph API。 示例应用使用 Microsoft身份验证库 来处理身份验证。

在开始之前,请使用此页面顶部的 “选择租户类型 选择器”来选择租户类型。 Microsoft Entra ID 提供两种租户配置:员工外部。 员工租户配置适用于员工、内部应用和其他组织资源。 外部租户适用于面向客户的应用。

先决条件

  • 拥有有效订阅的 Azure 帐户。 如果还没有帐户,请 免费创建帐户
  • Azure 帐户必须拥有管理应用程序的权限。 以下任何Microsoft Entra 角色都包含所需的权限:
    • 应用程序管理员
    • 应用程序开发人员
  • 工作人员租户。 可以使用默认目录或 设置新租户
  • Visual Studio Code 或其他代码编辑器。
  • Microsoft Entra 管理中心注册一个新应用,并配置为仅适用于此组织目录中的帐户。 有关更多详细信息 ,请参阅注册应用程序 。 在应用程序 概述 页中记录以下值供以后使用:
    • 应用程序(客户端)ID
    • 目录(租户)ID
  • 使用 Web 平台配置添加以下重定向 URI。 有关更多详细信息 ,请参阅如何在应用程序中添加重定向 URI
    • 重定向 URIhttp://localhost:3000/auth/redirect
    • 前端通道注销 URLhttps://localhost:5001/signout-callback-oidc
  • 将客户端密码添加到应用注册。 不要 在生产应用中使用客户端机密。 请改用证书或联合凭据。 有关详细信息,请参阅 向应用程序添加凭据
  • Node.js

克隆或下载示例 Web 应用程序

若要获取示例应用程序,可以从 GitHub 克隆它或将其下载为 .zip 文件。

  • 下载 .zip 文件,然后将其解压缩到名称长度少于 260 个字符的文件路径,或克隆存储库:

  • 若要克隆示例,请打开命令提示符并导航到要创建项目的位置,然后输入以下命令:

    git clone https://github.com/Azure-Samples/ms-identity-node.git
    

配置示例 Web 应用

若要使用示例应用登录用户,需要使用应用和租户详细信息对其进行更新:

ms-identity-node 文件夹中,打开 App/.env 文件,然后替换以下占位符:

Variable Description 示例
Enter_the_Cloud_Instance_Id_Here 在其中注册应用程序的 Azure 云实例 https://login.microsoftonline.com/ (包括尾部正斜杠)
Enter_the_Tenant_Info_here 租户 ID 或主域 contoso.microsoft.comaaaabbbb-0000-cccc-1111-dddd2222eeee
Enter_the_Application_Id_Here 已注册的应用程序的客户端 ID 00001111-aaaa-2222-bbbb-3333cccc4444
Enter_the_Client_Secret_Here 注册的应用程序的客户端密码 A1b-C2d_E3f.H4i,J5k?L6m!N7o-P8q_R9s.T0u
Enter_the_Graph_Endpoint_Here 应用调用的 Microsoft Graph API 云实例 https://graph.microsoft.com/ (包括尾部正斜杠)
Enter_the_Express_Session_Secret_Here 用于对 Express 会话 Cookie 进行签名的随机字符字符串 A1b-C2d_E3f.H4...

进行更改后,文件应类似于以下代码片段:

CLOUD_INSTANCE=https://login.microsoftonline.com/
TENANT_ID=aaaabbbb-0000-cccc-1111-dddd2222eeee
CLIENT_ID=00001111-aaaa-2222-bbbb-3333cccc4444
CLIENT_SECRET=A1b-C2d_E3f.H4...

REDIRECT_URI=http://localhost:3000/auth/redirect
POST_LOGOUT_REDIRECT_URI=http://localhost:3000

GRAPH_API_ENDPOINT=https://graph.microsoft.com/

EXPRESS_SESSION_SECRET=6DP6v09eLiW7f1E65B8k

运行和测试示例 Web 应用

已配置示例应用。 可以继续运行并测试它。

  1. 若要启动服务器,请从项目目录中运行以下命令:

    cd App
    npm install
    npm start
    
  2. 转到 http://localhost:3000/

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

首次登录时,系统会提示你提供同意,以允许应用程序登录和访问配置文件。 成功登录后,你将被重定向回应用程序主页。

应用的工作原理

该示例在 localhost 端口 3000 上托管 Web 服务器。 当 Web 浏览器访问此地址时,应用将呈现主页。 用户选择 “登录”后,应用将通过 MSAL 节点库生成的 URL 将浏览器重定向到 Microsoft Entra 登录屏幕。 用户同意后,浏览器会将用户重定向回应用程序主页,以及 ID 和访问令牌。

在本快速入门中,你将使用示例 Web 应用来演示如何在外部租户中登录用户。 示例应用使用 Microsoft身份验证库 来处理身份验证。

在开始之前,请使用此页面顶部的 “选择租户类型 选择器”来选择租户类型。 Microsoft Entra ID 提供两种租户配置:员工外部。 员工租户配置适用于员工、内部应用和其他组织资源。 外部租户适用于面向客户的应用。

先决条件

克隆或下载示例 Web 应用程序

若要获取示例应用程序,可以从 GitHub 克隆它,也可以将其下载为 .zip 文件:

  • 若要克隆示例,请打开命令提示符并导航到要创建项目的位置,然后输入以下命令:

    git clone https://github.com/Azure-Samples/ms-identity-ciam-javascript-tutorial.git
    
  • 或者, 下载示例 .zip 文件,然后将其提取到名称长度少于 260 个字符的文件路径。

安装项目依赖项

  1. 打开控制台窗口,并更改为包含 Node.js 示例应用的目录:

    cd 1-Authentication\5-sign-in-express\App
    
  2. 运行以下命令以安装应用依赖项:

    npm install
    

配置示例 Web 应用

若要使用示例应用登录用户,需要使用应用和租户详细信息对其进行更新:

  1. 在代码编辑器中,打开 应用\authConfig.js 文件。

  2. 查找占位符:

    • 查找 Enter_the_Application_Id_Here 并将其替换为之前注册的应用的应用程序(客户端)ID。
    • Enter_the_Tenant_Subdomain_Here 并将其替换为 Directory (tenant) 子域。 例如,如果租户主域名是 contoso.onmicrosoft.com,请使用 contoso。 如果没有租户名称,请了解如何 阅读租户详细信息
    • 查找 Enter_the_Client_Secret_Here 并将其替换为之前复制的应用机密值。

运行和测试示例 Web 应用

现在可以测试示例 Node.js Web 应用。 你需要启动 Node.js 服务器,并通过浏览器访问它http://localhost:3000

  1. 在终端中,运行以下命令:

    npm start 
    
  2. 打开浏览器,然后转到 http://localhost:3000。 应会看到类似于以下屏幕截图的页面:

    屏幕截图显示登录到 Node Web 应用。

  3. 页面完成加载后,在出现提示时选择 “登录 ”。

  4. 在登录页上,键入你的“电子邮件地址”,选择“下一步”,键入你的“密码”,然后选择“登录”。 如果没有帐户,请选择“无帐户? 创建一个”链接,以启动注册流。

  5. 如果选择注册选项,请在填写电子邮件、一次性密码、新密码和更多帐户详细信息后,完成整个注册流程。 你会看到类似于以下屏幕截图的页面。 如果选择登录选项,则会看到类似的页面。

    视图 ID 令牌声明的屏幕截图。

  6. 选择 “注销 ”以将用户从 Web 应用注销,或选择“ 查看 ID 令牌声明 ”以查看Microsoft Entra 返回的 ID 令牌声明。

工作原理

当用户选择 “登录 ”链接时,应用将启动身份验证请求,并将用户重定向到Microsoft Entra 外部 ID。 在出现的登录或注册页上,用户成功登录或创建帐户后,Microsoft Entra 外部 ID 将 ID 令牌返回到应用。 应用验证 ID 令牌、读取声明,并向用户返回安全页。

当用户选择 “注销 ”链接时,应用将清除其会话,然后将用户重定向到Microsoft Entra External ID 注销终结点,以通知用户已注销。

如果要生成与运行的示例类似的应用,请在 自己的 Node.js Web 应用程序文章中完成登录用户 的步骤。