在示例 .NET MAUI Android 应用程序中让用户登录

适用于:带灰色 X 号的白色圆圈。 员工租户 带白色对号的绿色圆圈。 外部租户(了解详细信息

本操作指南使用一个示例 .NET 多平台应用 UI (.NET MAUI) 演示如何使用外部租户向 Android 应用程序添加身份验证。 示例应用程序使用户能够登录和退出登录。示例 .NET MAUI Android 应用程序使用适用于 .NET 的 Microsoft 身份验证库 (MSAL) 来处理身份验证。

本文将执行以下任务:

  • 在外部租户中注册 .NET MAUI Android 应用程序。
  • 在外部租户中创建登录和退出登录用户流。
  • 将 .NET MAUI Android 应用程序与用户流相关联。
  • 更新示例 .NET MAUI Android 应用程序,使用自己的外部租户详细信息。
  • 运行并测试示例 .NET MAUI Android 应用程序。

先决条件

注册 .NET MAUI Android 应用程序

若要使应用程序能够让用户通过 Microsoft Entra 登录,必须让 Microsoft Entra 外部 ID 能够感知你创建的应用程序。 应用注册会在应用与 Microsoft Entra 之间建立信任关系。 注册应用程序时,外部 ID 会生成一个称为“应用程序(客户端)ID”的唯一标识符,该值用于在创建身份验证请求时标识应用。

以下步骤演示如何在 Microsoft Entra 管理中心注册应用:

  1. 至少以应用程序开发人员的身份登录到 Microsoft Entra 管理中心

  2. 如果你有权访问多个租户,请使用顶部菜单中的“设置”图标 ,通过“目录 + 订阅”菜单切换到你的外部租户

  3. 浏览到“标识”>“应用程序”>“应用注册”。

  4. 选择“+ 新建注册”。

  5. 在显示的“注册应用程序”页中;

    1. 输入一个向应用用户显示的、有意义的应用程序名称,例如 ciam-client-app
    2. 在“支持的帐户类型”下,选择“仅此组织目录中的帐户” 。
  6. 选择“注册”。

  7. 成功注册后,会显示应用程序的“概述”窗格。 记录要在应用程序源代码中使用的应用程序(客户端)ID

若要为应用注册指定应用类型,请执行以下步骤:

  1. 在“管理”下,选择“身份验证”。
  2. 在“平台配置”页上,选择“添加平台”,然后选择“移动和桌面应用程序”选项
  3. 对于“重定向 URI”,请输入 msalEnter_the_Application_Id_Here://auth,将 Enter_the_Application_Id_Here 替换为之前复制的“应用程序(客户端) ID”,然后选择“配置”
  4. 选择“保存”,保存更改。
  1. 从“应用注册”页中,选择创建的应用程序(例如 ciam-client-app)以打开其“概述”页。

  2. 在“管理”下选择“API 权限” 。 在“已配置的权限”列表中,应用程序已被分配 User.Read 权限。 但是,由于该租户是外部租户,因此使用者用户本身不能同意此权限。 作为管理员,你必须代表租户中的所有用户同意此权限:

    1. 选择“为 <租户名称> 授予管理员同意”,然后选择“是”。
    2. 选择“刷新”,然后验证两个范围的“状态”下是否均显示“已为 <租户名称> 授予”。

创建用户流

按照这些步骤创建可供客户用于登录或注册应用程序的用户流。

  1. 至少以外部 ID 用户流管理员身份登录到 Microsoft Entra 管理中心

  2. 如果你有权访问多个租户,请使用顶部菜单中的“设置”图标 ,通过“目录 + 订阅”菜单切换到你的外部租户

  3. 浏览到“标识”>“外部标识”>“用户流”。

  4. 选择“+ 新建用户流”。

  5. 在“创建”页上执行以下操作:

    1. 为用户流输入名称,例如 SignInSignUpSample。

    2. 在“标识提供者”列表中,选择“电子邮件帐户”。 此标识提供者使用户能够使用其电子邮件地址登录或注册。

      注意

      只有在设置了与额外的标识提供者的联合身份验证之后,才会在此处列出这些标识提供者。 例如,如果设置了与 GoogleFacebook 的联合身份验证,则能够在此处选择这些额外的标识提供者。

    3. 在“电子邮件帐户”下,可以选择两个选项之一。 对于本教程,请选择“电子邮件和密码”。

      • 电子邮件和密码:使新用户能够使用电子邮件地址作为登录名称并使用密码作为其第一重身份验证凭据进行注册和登录。
      • 电子邮件一次性密码:使新用户能够使用电子邮件地址作为登录名称并使用电子邮件一次性密码作为其第一重身份验证凭据进行注册和登录。 只有在租户级别启用电子邮件一次性密码(“所有标识提供者”>“电子邮件一次性密码”),才能在用户流级别使用此选项。
    4. 在“用户属性”下,选择要在用户注册时收集的用户属性。 选择“显示更多内容”即可选择“国家/地区”、“显示名称”和“邮政编码”的属性和声明。 选择“确定” 。 (系统仅在用户首次注册时提示输入属性。)

  6. 选择“创建” 。 此时,新的用户流将显示在“用户流”列表中。 如果需要,请刷新页面。

若要启用自助式密码重置,请使用启用自助式密码重置一文中的步骤。

将 .NET MAUI Android 应用程序与用户流相关联

尽管许多应用程序可与用户流相关联,但单个应用程序只能与一个用户流相关联。 用户流允许为特定应用程序配置用户体验。 例如,可以配置一个要求用户使用电子邮件地址登录或注册的用户流。

  1. 在边栏菜单中选择“标识”。

  2. 依次选择“外部标识”和“用户流”。

  3. 在“用户流”页中,选择之前创建的用户流名称,例如 SignInSignUpSample。

  4. 在“使用”下,选择“应用程序”。

  5. 选择“添加应用程序”。

  6. 从列表中选择应用程序(如 ciam-client-app),或使用搜索框查找应用程序,然后将其选中。

  7. 选择“选择”。

克隆或下载示例 .NET MAUI Android 应用程序

若要获取 .NET MAUI Android 应用程序示例代码,请下载 .zip 文件,或通过运行以下命令从 GitHub 克隆示例 .NET MAUI Android 应用程序:

git clone https://github.com/Azure-Samples/ms-identity-ciam-dotnet-tutorial.git

配置示例 .NET MAUI Android 应用程序

  1. 在 Visual Studio 中,打开 ms-identity-ciam-dotnet-tutorial-main/1-Authentication/2-sign-in-maui/appsettings.json 文件。
  2. 查找占位符:
    1. Enter_the_Tenant_Subdomain_Here 并将其替换为目录(租户)子域。 例如,如果租户主域为 contoso.onmicrosoft.com,请使用 contoso。 如果没有租户名称,请了解如何读取租户详细信息
    2. 查找 Enter_the_Application_Id_Here 并将其替换为之前注册的应用的应用程序(客户端)ID。
  3. 在 Visual Studio 中,打开 ms-identity-ciam-dotnet-tutorial-main/1-Authentication/2-sign-in-maui/Platforms/Android/AndroidManifest.xml 文件。
  4. 查找占位符:
    1. 查找 Enter_the_Application_Id_Here 并将其替换为之前注册的应用的应用程序(客户端)ID。

运行并测试示例 .NET MAUI Android 应用程序

根据设计,.NET MAUI 应用可在多个操作系统和设备上运行。 你需要选择要用于测试和调试应用的目标。

Visual Studio 工具栏中,将“调试目标”设置为要用于调试和测试的设备。 以下步骤演示如何将调试目标设置为 Android:

  1. 选择“调试目标”下拉列表。
  2. 选择“Android Emulator”。
  3. 选择仿真器设备。

按 F5 运行应用,或者选择 Visual Studio 顶部的播放按钮。

  1. 现在可以测试示例 .NET MAUI Android 应用。 运行应用后,Android 应用窗口将显示在模拟器中:

    Android 应用程序中“登录”按钮的屏幕截图。

  2. 在显示的 Android 窗口中,选择“登录”按钮。 随即将打开一个浏览器窗口,提示你登录。

    Android 应用程序中提示输入凭据的用户提示屏幕截图。

    在登录过程中,系统会提示你授予各种权限(以允许应用程序访问数据)。 成功登录并同意后,应用程序屏幕会显示主页。

    登录后 Android 应用程序中主页的屏幕截图。

后续步骤