在外部租户中让示例 ASP.NET Core Web 应用的用户登录
本操作指南使用示例 ASP.NET Core Web 应用程序来展示新式身份验证的基础知识(使用适用于 .NET 的 Microsoft 身份验证库和适用于 ASP.NET Core 的 Microsoft 标识 Web 来处理身份验证)。
在本文中,你将在 Microsoft Entra 管理中心注册一个 Web 应用程序并创建一个登录和退出登录用户流。 你需要将 Web 应用程序与用户流相关联,下载示例 ASP.NET Core Web 应用程序,并使用你自己的外部租户详细信息更新该应用程序。 最后,你需要运行并测试示例 Web 应用程序。
先决条件
- 尽管可以使用任何支持 ASP.NET Core 应用程序的 IDE,但本指南将使用 Visual Studio Code。 可以从“下载”页下载它。
- .NET 7.0 SDK。
- 外部租户。 若要创建,可以选择以下方法:
- (推荐)使用 Microsoft Entra 外部 ID 扩展直接在 Visual Studio Code 中设置外部租户。
- 在 Microsoft Entra 管理中心创建新的外部租户。
注册 Web 应用
若要使应用程序能够让用户通过 Microsoft Entra 登录,必须让 Microsoft Entra 外部 ID 能够感知你创建的应用程序。 应用注册会在应用与 Microsoft Entra 之间建立信任关系。 注册应用程序时,外部 ID 会生成一个称为“应用程序(客户端)ID”的唯一标识符,该值用于在创建身份验证请求时标识应用。
以下步骤演示如何在 Microsoft Entra 管理中心注册应用:
至少以应用程序开发人员的身份登录到 Microsoft Entra 管理中心。
如果你有权访问多个租户,请使用顶部菜单中的“设置”图标 ,通过“目录 + 订阅”菜单切换到你的外部租户。
浏览到“标识”>“应用程序”>“应用注册”。
选择“+ 新建注册”。
在显示的“注册应用程序”页中;
- 输入一个向应用用户显示的、有意义的应用程序名称,例如 ciam-client-app。
- 在“支持的帐户类型”下,选择“仅此组织目录中的帐户” 。
选择“注册”。
成功注册后,会显示应用程序的“概述”窗格。 记录要在应用程序源代码中使用的应用程序(客户端)ID。
定义平台和 URL
若要为应用注册指定应用类型,请执行以下步骤:
- 在“管理”下,选择“身份验证”。
- 在“平台配置”页上,选择“添加平台”,然后选择“Web”选项。
- 对于“重定向 URI”,请输入
https://localhost:7274/signin-oidc
。 - 在“前通道注销 URL”下,输入
https://localhost:7274/signout-callback-oidc
进行退出登录。 - 选择“配置”以保存更改。
启用隐式和混合流
你生成的应用程序使用需要启用的隐式流。
- 在“隐式授权和混合流”部分中,选中“ID 令牌”选项。
- 选择“保存”。
添加应用客户端机密
为注册的应用创建客户端机密。 应用程序在请求令牌时使用客户端密码来证明其身份。
- 从“应用注册”页中,选择创建的应用程序(例如 ciam-client-app)以打开其“概述”页。
- 在“管理”下,选择“证书和机密”。
- 选择“新建客户端机密”。
- 在“说明”框中输入对客户端密码的说明(如 ciam 应用客户端密码)。
- 在“过期时间”下,选择密码的有效期(根据组织的安全规则),然后选择“添加”。
- 记下机密的“值”。 在稍后的步骤中将使用此值进行配置。 离开“证书和机密”后,机密值不会再次显示,并且无法以任何方式检索。 请确保记录它。
授权管理员同意
注册应用程序后,它将获得 User.Read 权限。 但是,由于该租户是外部租户,因此客户用户本身不能同意此权限。 作为管理员,你必须代表租户中的所有用户同意此权限:
从“应用注册”页中,选择创建的应用程序(例如 ciam-client-app)以打开其“概述”页。
在“管理”下选择“API 权限”。
- 选择“为 <租户名称> 授予管理员同意”,然后选择“是”。
- 选择“刷新”,然后验证权限的“状态”下是否均显示“已为 <租户名称> 授予”。
创建用户流
按照这些步骤创建可供客户用于登录或注册应用程序的用户流。
至少以外部 ID 用户流管理员身份登录到 Microsoft Entra 管理中心。
如果你有权访问多个租户,请使用顶部菜单中的“设置”图标 ,通过“目录 + 订阅”菜单切换到你的外部租户。
浏览到“标识”>“外部标识”>“用户流”。
选择“+ 新建用户流”。
在“创建”页上执行以下操作:
为用户流输入名称,例如 SignInSignUpSample。
在“标识提供者”列表中,选择“电子邮件帐户”。 此标识提供者使用户能够使用其电子邮件地址登录或注册。
在“电子邮件帐户”下,可以选择两个选项之一。 对于本教程,请选择“电子邮件和密码”。
- 电子邮件和密码:使新用户能够使用电子邮件地址作为登录名称并使用密码作为其第一重身份验证凭据进行注册和登录。
- 电子邮件一次性密码:使新用户能够使用电子邮件地址作为登录名称并使用电子邮件一次性密码作为其第一重身份验证凭据进行注册和登录。 只有在租户级别启用电子邮件一次性密码(“所有标识提供者”>“电子邮件一次性密码”),才能在用户流级别使用此选项。
在“用户属性”下,选择要在用户注册时收集的用户属性。 选择“显示更多内容”即可选择“国家/地区”、“显示名称”和“邮政编码”的属性和声明。 选择“确定” 。 (系统仅在用户首次注册时提示输入属性。)
选择“创建” 。 此时,新的用户流将显示在“用户流”列表中。 如果需要,请刷新页面。
若要启用自助式密码重置,请使用启用自助式密码重置一文中的步骤。
将 Web 应用程序与用户流相关联
为了让客户用户在使用你的应用时看到注册或登录体验,你需要将自己的应用与用户流相关联。 尽管许多应用程序可与用户流相关联,但单个应用程序只能与一个用户流相关联。
在边栏菜单中选择“标识”。
依次选择“外部标识”和“用户流”。
在“用户流”页中,选择之前创建的用户流名称,例如 SignInSignUpSample。
在“使用”下,选择“应用程序”。
选择“添加应用程序”。
从列表中选择应用程序(如 ciam-client-app),或使用搜索框查找应用程序,然后将其选中。
选择“选择”。
将应用与用户流关联后,可以通过在 Microsoft Entra 管理中心内模拟用户在应用程序中的注册或登录体验来测试用户流。 为此,请使用测试注册和登录用户流中所述的步骤。
克隆或下载示例 Web 应用程序
若要获取示例应用程序,可以从 GitHub 克隆它或将其下载为 .zip 文件。
若要克隆示例,请打开命令提示符并导航到要创建项目的位置,然后输入以下命令:
git clone https://github.com/Azure-Samples/ms-identity-ciam-dotnet-tutorial.git
下载 .zip 文件。 将其提取到名称长度小于 260 个字符的文件路径。
配置应用程序
导航到已下载示例的根文件夹和包含 ASP.NET Core 示例应用的目录:
cd 1-Authentication\1-sign-in-aspnet-core-mvc
打开 appsettings.json 文件。
在“颁发机构”中,找到
Enter_the_Tenant_Subdomain_Here
并将其替换为租户的子域。 例如,如果租户主域为 caseyjensen@onmicrosoft.com,则应输入的值为 casyjensen。找到
Enter_the_Application_Id_Here
值并将其替换为你在 Microsoft Entra 管理中心注册的应用的应用程序 ID (clientId)。将
Enter_the_Client_Secret_Here
替换为你在添加应用客户端机密中设置的客户端机密值。
运行代码示例
在 shell 或命令行中执行以下命令:
dotnet run
打开 Web 浏览器并导航到
https://localhost:7274
。使用注册到外部租户的帐户登录。
登录后,“退出登录”按钮旁边会显示显示名称,如以下屏幕截图所示。
若要从应用程序退出登录,请选择“退出登录”按钮。