使用本机身份验证在示例 macOS (Swift) 应用中登录用户

本指南介绍如何运行 macOS 示例应用程序,该应用程序演示使用 Microsoft Entra 外部 ID 的注册和登录场景。

在本文中,学习如何:

  • 在外部租户中注册应用程序。
  • 启用公共客户端和本机身份验证流程。
  • 在外部租户中创建用户流。
  • 将应用程序与用户流相关联。
  • 将示例本机 macOS 应用程序更新为使用自己的外部租户详细信息。
  • 运行并测试示例本机 macOS 应用程序。

先决条件

注册应用程序

若要使应用程序能够让用户通过 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. 在“高级设置”下,允许公共客户端流程
    1. 对于“启用以下移动和桌面流程”,请选择“是”。
    2. 对于“启用本机身份验证”,请选择“是”。
  4. 选择“保存”按钮。
  1. 从“应用注册”页中,选择创建的应用程序(例如 ciam-client-app)以打开其“概述”页。

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

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

创建用户流

按照以下步骤创建用户流。

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

  2. 如果你有权访问多个租户,请确保使用包含外部租户的目录:

    1. 在工具栏中选择“目录 + 订阅”图标。
    2. 在“门户设置 | 目录 + 订阅”页面上,在“目录名称”列表中找到外部租户目录,然后选择“切换”
  3. 在边栏菜单中选择“标识”。

  4. 选择“外部标识”>“用户流”。

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

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

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

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

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

      • 电子邮件和密码:使新用户能够使用电子邮件地址作为登录名称并使用密码作为其第一重身份验证凭据进行注册和登录。
      • 电子邮件一次性密码:使新用户能够使用电子邮件地址作为登录名称,并使用电子邮件一次性密码作为其第一重身份验证凭据进行注册和登录。 要使此选项在用户流级别可用,请确保在租户级别启用电子邮件一次性密码 (OTP)(选择“所有标识提供者”,然后为“电子邮件一次性密码”选择“已配置”,选择“是”选项,然后选择“保存”)。
    4. 在“用户属性”下,可选择要在用户注册时收集的用户属性。 对于本指南,请选择“国家/地区”和“城市”

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

将用程序与用户流相关联

为了让客户用户在使用你的应用时看到注册或登录体验,你需要将自己的应用与用户流相关联。 尽管许多应用程序可与用户流相关联,但单个应用程序只能与一个用户流相关联。

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

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

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

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

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

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

  7. 选择“选择”。

将应用与用户流关联后,可以通过在 Microsoft Entra 管理中心内模拟用户在应用程序中的注册或登录体验来测试用户流。 为此,请使用测试注册和登录用户流中所述的步骤。

克隆示例 macOS 应用程序

  1. 打开终端,并导航到要保留代码的目录。

  2. 运行以下命令,从 GitHub 克隆 macOS 应用程序:

    git clone https://github.com/Azure-Samples/ms-identity-ciam-native-auth-macos-sample.git
    
  3. 导航到克隆存储库的目录:

    cd ms-identity-ciam-native-auth-macos-sample
    

配置示例 macOS 应用程序

  1. 在 Xcode 中,打开 NativeAuthSampleAppMacOS.xcodeproj 项目。

  2. 打开 NativeAuthSampleAppMacOS/Configuration.swift 文件。

  3. 查找占位符:

    • 查找 Enter_the_Application_Id_Here 并将其替换为之前注册的应用的应用程序(客户端)ID。
    • Enter_the_Tenant_Subdomain_Here 并将其替换为目录(租户)子域。 例如,如果租户主域为contoso.onmicrosoft.com,请使用 contoso。 如果没有租户子域,请了解如何读取租户详细信息

注意

请务必选择要生成的方案,以及计划运行生成的产品的目标位置。 每个方案都包含实际设备或模拟设备的清单,这些设备代表了可用目标位置。

运行并测试示例 macOS 应用程序

若要生成并运行代码,请从 Xcode 中的产品菜单中选择运行。 成功生成后,Xcode 将在模拟器中启动示例应用。

在 macOS 应用中输入电子邮件和密码的用户提示屏幕截图。

本指南测试电子邮件和密码的使用情况。 输入有效的电子邮件地址和密码,选择“注册”,然后启动提交代码屏幕:

在 macOS 应用中输入一次性密码 (OTP) 的用户提示屏幕截图。

在上一屏幕上输入电子邮件地址后,应用程序会向其发送验证码。 提交收到的验证码后,应用程序会返回上一个屏幕并自动登录。

后续步骤