在示例 iOS (Swift) 移动应用中登录用户

本指南演示如何配置示例 iOS 移动应用程序以便使用户登录。

本文将执行以下任务:

  • 在 Microsoft Entra 管理中心注册应用程序。
  • 添加平台重定向 URL。
  • 启用公共客户端流。
  • 更新 iOS 配置代码示例文件,以使用自己的 Microsoft Entra 外部 ID 获取外部租户详细信息。
  • 运行和测试示例 iOS 移动应用程序。

先决条件

注册应用程序

若要使应用程序能够让用户通过 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

添加平台重定向 URL

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

  1. 在“管理”下,选择“身份验证”。
  2. 在“平台配置”页上,选择“添加平台”,然后选择“iOS / macOS”选项。
  3. 输入项目的捆绑 ID。 如果下载了示例代码,则该值为 com.microsoft.identitysample.ciam.MSALiOS
  4. 选择“配置”并保存在“iOS / macOS 配置”窗格中出现的“MSAL 配置”,以便稍后配置应用时输入该内容。
  5. 选择“完成” 。

启用公共客户端流

若要将应用标识为公共客户端,请执行以下步骤:

  1. 在“管理”下,选择“身份验证”。

  2. 在“高级设置”下,对于“允许公共客户端流”,选择“是”。

  3. 选择“保存”以保存更改。

  1. 从“应用注册”页中,选择创建的应用程序(例如 ciam-client-app)以打开其“概述”页。

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

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

克隆示例 iOS 移动应用程序

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

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

    git clone https://github.com/Azure-Samples/ms-identity-ciam-browser-delegated-ios-sample.git
    

配置示例 iOS 移动应用程序

要启用对 Microsoft Graph 资源的身份验证和访问,请执行以下步骤,配置该示例:

  1. 在 Xcode 中,打开克隆的项目。

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

  3. 查找占位符:

    • 查找 Enter_the_Application_Id_Here 并将其替换为之前注册的应用的应用程序(客户端)ID。
    • Enter_the_Redirect_URI_Here 并将其替换为之前在添加平台重定向 URL 时下载的 Microsoft 身份验证库 (MSAL) 配置文件中 kRedirectUri 的值。
    • Enter_the_Protected_API_Scopes_Here 并将其替换为授予管理员同意中记录的范围。 如果尚未记录任何范围,可以将此范围列表留空。
    • Enter_the_Tenant_Subdomain_Here 并将其替换为目录(租户)子域。 例如,如果租户主域为 contoso.onmicrosoft.com,请使用 contoso。 如果不知道租户子域,请了解如何读取租户详细信息

应用已配置好,现已可运行。

运行并测试 iOS 示例应用

若要构建并运行应用,请执行以下步骤:

  1. 若要生成和运行代码,请从 Xcode 的“产品”菜单中选择“运行”。 成功生成后,Xcode 将在模拟器中启动示例应用。
  2. 选择“以交互方式获取令牌”以请求访问令牌。
  3. 如果选择 API - Perform GET 以调用受保护的 ASP.NET Core Web API,则会收到错误。

有关调用受保护的 Web API 的详细信息,请参阅后续步骤

后续步骤