快速入门:在示例移动应用中登录用户并调用 Web API

适用于绿色圆圈,带有白色复选标记符号,指示以下内容适用于外部租户。 外部租户(了解详细信息

在开始之前,请使用此页面顶部的 “选择租户类型 选择器”来选择租户类型。 Microsoft Entra ID 提供两个租户配置, 即员工外部配置。 员工租户配置适用于员工、内部应用和其他组织资源。 外部租户适用于面向客户的应用。

本指南演示如何配置示例移动应用程序以登录用户,以及如何调用 ASP.NET Core Web API。

本文将执行以下任务:

  • 将平台重定向 URL 添加到 Web 应用程序。
  • 启用公共客户端流。
  • 更新 Android 配置代码示例文件,以使用自己的 Microsoft Entra 外部 ID 获取客户租户详细信息。
  • 运行并测试示例 Android 移动应用程序。
  • 调用受保护的 Web API。

先决条件

  • Android Studio

  • 外部租户。 如果还没有试用版, 请注册免费试用版

  • Microsoft Entra 管理中心注册新的客户端 Web 应用,为 任何组织目录中的帐户和个人Microsoft帐户配置。 有关更多详细信息 ,请参阅注册应用程序 。 在应用程序 概述 页中记录以下值供以后使用:

    • 应用程序(客户端)ID
    • 目录(租户)ID
  • 一个 Web API 注册,它至少公开一个范围(委派的权限)和一个应用角色(应用程序权限),例如 ToDoList.Read。 如果尚未这样做,请按照 示例 Android 移动应用中调用 API 的说明作,在 Core Web API ASP.NET 功能保护。 请确保完成以下步骤:

    • 配置 API 范围
    • 配置应用角色
    • 配置可选声明
    • 克隆或下载示例 Web API
    • 配置并运行示例 Web API

添加平台重定向 URL

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

  1. 管理下,选择 身份验证
  2. “平台配置 ”页上,选择 “添加平台”,然后选择 “Android ”选项。
  3. 输入项目的包名称。 如果下载了 示例代码,则此值为 com.azuresamples.msaldelegatedandroidkotlinsampleapp
  4. “配置 Android 应用”窗格的“签名哈希”部分中,选择“生成开发签名哈希”。这将针对每个开发环境进行更改。在终端中复制并运行作系统的 KeyTool 命令。
  5. 输入 KeyTool 生成的 签名哈希
  6. 选择配置
  7. Android 配置窗格中复制 MSAL 配置,并将其保存到以后的应用配置。
  8. 选择“完成”。

启用公共客户端流

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

  1. 管理下,选择 身份验证

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

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

向示例应用授予 Web API 权限

注册客户端应用、Web API 并通过创建范围公开 API 后,可以按照以下步骤配置客户端对 API 的权限:

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

  2. 在“管理”下,选择 API 权限

  3. “配置的权限”下,选择“ 添加权限”。

  4. 选择 组织使用的 API 选项卡。

  5. 在 API 列表中,选择 CIam-ToDoList-api 等 API。

  6. 选择 “委派权限 ”选项。

  7. 从权限列表中选择 ToDoList.Read、ToDoList.ReadWrite (如有必要,请使用搜索框)。

  8. 选择 “添加权限 ”按钮。

  9. 此时,你已正确分配权限。 但是,由于租户是客户的租户,因此使用者用户本身无法同意这些权限。 若要解决此问题,管理员必须代表租户中的所有用户同意这些权限:

    1. 选择租户名称>的<“授予管理员许可”,然后选择“”。

    2. 选择“刷新”,然后验证为租户名称>授予<的权限是否显示在“状态”下。

  10. “配置的权限”列表中选择 ToDoList.Read 和 ToDoList.ReadWrite 权限,一次一个,然后复制权限的完整 URI 供以后使用。 完全权限 URI 类似于 api://{clientId}/{ToDoList.Read}api://{clientId}/{ToDoList.ReadWrite}

克隆示例移动应用程序

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

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

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

配置示例 Android 移动应用程序

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

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

  2. 打开 /app/src/main/res/raw/auth_config_ciam.json 文件。

  3. 查找占位符:

    • Enter_the_Application_Id_Here 并将其替换为之前注册的应用 的应用程序(客户端)ID
    • Enter_the_Redirect_Uri_Here 并将其替换为在添加平台重定向 URL 时之前下载的Microsoft身份验证库(MSAL)配置文件中 redirect_uri 的值。
    • Enter_the_Tenant_Subdomain_Here 并将其替换为 Directory (tenant) 子域。 例如,如果租户主域为 contoso.onmicrosoft.com,请使用 contoso。 如果不知道租户子域,请了解如何 阅读租户详细信息
  4. 打开 /app/src/main/AndroidManifest.xml 文件。

  5. 查找占位符:

    • ENTER_YOUR_SIGNATURE_HASH_HERE 并将其替换为之前添加平台重定向 URL 时生成的 签名哈希
  6. 打开 /app/src/main/java/com/azuresamples/msaldelegatedandroidkotlinsampleapp/MainActivity.kt 文件。

  7. 查找命名 WEB_API_BASE_URL 的属性,并将 URL 设置为 Web API。

  8. 查找在scopes授予 Web API 权限中记录的属性,并将其设置为 Android 示例应用。

    private const val scopes = "" // Developers should set the respective scopes of their web API here. For example, private const val scopes = "api://{clientId}/{ToDoList.Read} api://{clientId}/{ToDoList.ReadWrite}"
    

你已配置应用,并且已准备好运行。

运行示例应用并调用 Web API

若要生成并运行应用,请执行以下步骤:

  1. 在工具栏中,从“运行配置”菜单中选择你的应用。

  2. 在目标设备菜单中,选择要在其中运行应用的设备。

    如果没有配置任何设备,则需要创建 Android 虚拟设备以使用 Android 模拟器或连接物理 Android 设备。

  3. 选择“ 运行 ”按钮。

  4. 选择“ 以交互方式获取令牌 ”以请求访问令牌。

  5. 选择 API - 执行 GET 以调用以前设置的 ASP.NET Core Web API。 成功调用 Web API 会返回 HTTP 200,而 HTTP 403 表示未经授权的访问。