适用于:
员工租户
外部租户(了解详细信息)
在本快速入门中,你将使用示例 Web 应用演示如何在员工租户中登录用户和调用 Microsoft Graph API。 示例应用使用 Microsoft身份验证库 来处理身份验证。
在开始之前,请使用此页面顶部的 “选择租户类型 选择器”来选择租户类型。 Microsoft Entra ID 提供两种租户配置:员工和外部。 员工租户配置适用于员工、内部应用和其他组织资源。 外部租户适用于面向客户的应用。
先决条件
- 拥有有效订阅的 Azure 帐户。 如果还没有帐户,请 免费创建帐户。
- Azure 帐户必须拥有管理应用程序的权限。 以下任何Microsoft Entra 角色都包含所需的权限:
- 应用程序管理员
- 应用程序开发人员
- 工作人员租户。 可以使用默认目录或 设置新租户。
- Visual Studio Code 或其他代码编辑器。
- 在 Microsoft Entra 管理中心注册一个新应用,并配置为仅适用于此组织目录中的帐户。 有关更多详细信息 ,请参阅注册应用程序 。 在应用程序 概述 页中记录以下值供以后使用:
- 应用程序(客户端)ID
- 目录(租户)ID
- 使用 Web 平台配置添加以下重定向 URI。 有关更多详细信息 ,请参阅如何在应用程序中添加重定向 URI 。
-
重定向 URI:
http://localhost:3000/auth/redirect -
前端通道注销 URL:
https://localhost:5001/signout-callback-oidc
-
重定向 URI:
- 将客户端密码添加到应用注册。 不要 在生产应用中使用客户端机密。 请改用证书或联合凭据。 有关详细信息,请参阅 向应用程序添加凭据。
- 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.com 或 aaaabbbb-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 应用
已配置示例应用。 可以继续运行并测试它。
若要启动服务器,请从项目目录中运行以下命令:
cd App npm install npm start转到
http://localhost:3000/。选择“登录”以启动登录过程。
首次登录时,系统会提示你提供同意,以允许应用程序登录和访问配置文件。 成功登录后,你将被重定向回应用程序主页。
应用的工作原理
该示例在 localhost 端口 3000 上托管 Web 服务器。 当 Web 浏览器访问此地址时,应用将呈现主页。 用户选择 “登录”后,应用将通过 MSAL 节点库生成的 URL 将浏览器重定向到 Microsoft Entra 登录屏幕。 用户同意后,浏览器会将用户重定向回应用程序主页,以及 ID 和访问令牌。
相关内容
- 了解如何在教程中生成 Node.js Web 应用以登录用户并调用 Microsoft Graph API :在 Node.js 和 Express Web 应用中登录用户并获取 Microsoft Graph 的令牌。
在本快速入门中,你将使用示例 Web 应用来演示如何在外部租户中登录用户。 示例应用使用 Microsoft身份验证库 来处理身份验证。
在开始之前,请使用此页面顶部的 “选择租户类型 选择器”来选择租户类型。 Microsoft Entra ID 提供两种租户配置:员工和外部。 员工租户配置适用于员工、内部应用和其他组织资源。 外部租户适用于面向客户的应用。
先决条件
- 拥有有效订阅的 Azure 帐户。 如果还没有帐户,请 免费创建帐户。
- Azure 帐户必须拥有管理应用程序的权限。 以下任何Microsoft Entra 角色都包含所需的权限:
- 应用程序管理员
- 应用程序开发人员
- 外部租户。 若要创建一个,请从以下方法中进行选择:
- 使用 Microsoft Entra 外部 ID 扩展 直接在 Visual Studio Code 中设置外部租户。 (推荐使用)
- 在 Microsoft Entra 管理中心创建新的外部租户。
- 一个用户流。 有关详细信息,请参阅 为外部租户中的应用创建自助服务注册用户流。 此用户流可用于多个应用程序。
- Visual Studio Code 或其他代码编辑器。
- 在 Microsoft Entra 管理中心注册一个新应用,并配置为仅适用于此组织目录中的帐户。 有关更多详细信息 ,请参阅注册应用程序 。 在应用程序 概述 页中记录以下值供以后使用:
- 应用程序(客户端)ID
- 目录(租户)ID
- 使用 Web 平台配置添加以下重定向 URI。 有关更多详细信息 ,请参阅如何在应用程序中添加重定向 URI 。
-
重定向 URI:
http://localhost:3000/auth/redirect -
前端通道注销 URL:
https://localhost:5001/signout-callback-oidc
-
重定向 URI:
- 将客户端密码添加到应用注册。 不要 在生产应用中使用客户端机密。 请改用证书或联合凭据。 有关详细信息,请参阅 向应用程序添加凭据。
- 将应用程序添加到用户流
- Node.js
克隆或下载示例 Web 应用程序
若要获取示例应用程序,可以从 GitHub 克隆它,也可以将其下载为 .zip 文件:
若要克隆示例,请打开命令提示符并导航到要创建项目的位置,然后输入以下命令:
git clone https://github.com/Azure-Samples/ms-identity-ciam-javascript-tutorial.git或者, 下载示例 .zip 文件,然后将其提取到名称长度少于 260 个字符的文件路径。
安装项目依赖项
打开控制台窗口,并更改为包含 Node.js 示例应用的目录:
cd 1-Authentication\5-sign-in-express\App运行以下命令以安装应用依赖项:
npm install
配置示例 Web 应用
若要使用示例应用登录用户,需要使用应用和租户详细信息对其进行更新:
在代码编辑器中,打开 应用\authConfig.js 文件。
查找占位符:
-
查找
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。
在终端中,运行以下命令:
npm start打开浏览器,然后转到
http://localhost:3000。 应会看到类似于以下屏幕截图的页面:
页面完成加载后,在出现提示时选择 “登录 ”。
在登录页上,键入你的“电子邮件地址”,选择“下一步”,键入你的“密码”,然后选择“登录”。 如果没有帐户,请选择“无帐户? 创建一个”链接,以启动注册流。
如果选择注册选项,请在填写电子邮件、一次性密码、新密码和更多帐户详细信息后,完成整个注册流程。 你会看到类似于以下屏幕截图的页面。 如果选择登录选项,则会看到类似的页面。
选择 “注销 ”以将用户从 Web 应用注销,或选择“ 查看 ID 令牌声明 ”以查看Microsoft Entra 返回的 ID 令牌声明。
工作原理
当用户选择 “登录 ”链接时,应用将启动身份验证请求,并将用户重定向到Microsoft Entra 外部 ID。 在出现的登录或注册页上,用户成功登录或创建帐户后,Microsoft Entra 外部 ID 将 ID 令牌返回到应用。 应用验证 ID 令牌、读取声明,并向用户返回安全页。
当用户选择 “注销 ”链接时,应用将清除其会话,然后将用户重定向到Microsoft Entra External ID 注销终结点,以通知用户已注销。
如果要生成与运行的示例类似的应用,请在 自己的 Node.js Web 应用程序文章中完成登录用户 的步骤。