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

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

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

在本快速入门中,你将下载并运行代码示例,该示例演示 Android 应用程序如何登录用户并获取访问令牌来调用Microsoft图形 API。

应用程序必须由Microsoft Entra ID 中的应用对象表示,以便Microsoft标识平台可以向应用程序提供令牌。

先决条件

  • 拥有有效订阅的 Azure 帐户。 如果还没有帐户,请 免费创建帐户
  • 此 Azure 帐户必须具有管理应用程序的权限。 以下任何Microsoft Entra 角色都包含所需的权限:
    • 应用程序管理员
    • 应用程序开发人员
  • 员工租户。 可以使用默认目录或 设置新租户
  • Microsoft Entra 管理中心注册新应用,为 任何组织目录中的帐户和个人Microsoft帐户配置。 有关更多详细信息 ,请参阅注册应用程序 。 在应用程序 概述 页中记录以下值供以后使用:
    • 应用程序(客户端)ID
    • 目录(租户)ID
  • Android Studio
  • Android 16+

添加重定向 URI

必须在应用注册中配置特定的重定向 URI,以确保与下载的代码示例兼容。 这些 URI 对于在用户成功登录后将用户重定向回应用至关重要。

  1. 在“ 管理”下,选择“ 身份验证>添加平台>Android”。

  2. 根据上面下载的示例类型输入项目的包名称。

    • Java 示例 - com.azuresamples.msalandroidapp
    • Kotlin 示例 - com.azuresamples.msalandroidkotlinapp
  3. 在“配置 Android 应用”窗格的“签名哈希”部分中,选择“生成开发签名哈希”。并将 KeyTool 命令复制到命令行。

    • KeyTool.exe 作为 Java 开发工具包(JDK)的一部分安装。 还必须安装 OpenSSL 工具才能执行 KeyTool 命令。 有关详细信息,请参阅 有关生成密钥的 Android 文档
  4. 输入 KeyTool 生成的 签名哈希

  5. 选择“配置”并保存显示在 Android 配置窗格中的 MSAL 配置,以便在稍后配置应用时输入它。

  6. 选择“完成”。

下载示例应用

配置示例应用程序

  1. 在 Android Studio 的项目窗格中,导航到 app\src\main\res

  2. 右键单击 res 并选择“ 新建>目录”。 输入 raw 为新目录名称,然后选择“ 确定”。

  3. 应用>src>main>res>raw 中,转到调用 auth_config_single_account.json 的 JSON 文件并粘贴之前保存的 MSAL 配置。

    在重定向 URI 下方粘贴:

      "account_mode" : "SINGLE",
    

    配置文件应类似于以下示例:

    {
      "client_id": "00001111-aaaa-bbbb-3333-cccc4444",
      "authorization_user_agent": "WEBVIEW",
      "redirect_uri": "msauth://com.azuresamples.msalandroidapp/00001111%cccc4444%3D",
      "broker_redirect_uri_registered": false,
      "account_mode": "SINGLE",
      "authorities": [
        {
          "type": "AAD",
          "audience": {
            "type": "AzureADandPersonalMicrosoftAccount",
            "tenant_id": "common"
          }
        }
      ]
    }
    
  4. 打开 /app/src/main/AndroidManifest.xml 文件。

  5. 查找占位符:

    • enter_the_signature_hash 并将其替换为之前添加平台重定向 URL 时生成的 签名哈希

    由于本教程仅演示如何在单帐户模式下配置应用,请参阅 单帐户模式与多个帐户模式配置应用 以获取详细信息

运行示例应用

从 Android Studio 的 可用设备 下拉列表中选择仿真器或物理设备并运行应用。

示例应用在 “单帐户模式” 屏幕上启动。 默认提供默认范围 user.read,在Microsoft图形 API 调用期间读取自己的配置文件数据时使用。 默认情况下会提供Microsoft图形 API 调用的 URL。 如果需要,可以更改这两者。

显示单个帐户和多个帐户使用情况的 MSAL 示例应用的屏幕截图。

使用应用菜单在单帐户模式和多个帐户模式之间进行更改。

在单帐户模式下,使用工作或家庭帐户登录:

  1. 交互方式选择“获取图形数据 ”,提示用户输入其凭据。 你将在屏幕底部看到对 Microsoft 图形 API 的调用的输出。
  2. 登录后,选择“ 无提示获取图形数据 ”以调用Microsoft图形 API,而无需提示用户再次输入凭据。 你将在屏幕底部看到对 Microsoft 图形 API 的调用的输出。

在多个帐户模式下,可以重复相同的步骤。 此外,还可以删除已登录帐户,该帐户也会删除该帐户的缓存令牌。

示例的工作原理

显示本快速入门生成的示例应用的示意图。

代码组织成片段,演示如何编写单个帐户和多个帐户 MSAL 应用。 代码文件按如下所示进行组织:

文件 演示
MainActivity 管理 UI
MSGraphRequestWrapper 使用 MSAL 提供的令牌调用Microsoft图形 API
MultipleAccountModeFragment 初始化多帐户应用程序,加载用户帐户,并获取用于调用Microsoft图形 API 的令牌
SingleAccountModeFragment 初始化单帐户应用程序,加载用户帐户,并获取用于调用Microsoft图形 API 的令牌
res/auth_config_multiple_account.json 多个帐户配置文件
res/auth_config_single_account.json 单个帐户配置文件
Gradle Scripts/build.grade (Module:app) 此处添加了 MSAL 库依赖项

现在,我们将更详细地查看这些文件,并调用每个文件中特定于 MSAL 的代码。

后续步骤

转到 Android 教程,在其中构建一个 Android 应用,该应用从Microsoft标识平台获取访问令牌,并使用它调用Microsoft图形 API。

本快速入门将指导你配置示例 Android、.NET MAUI Android 和 iOS/macOS 应用,以便通过注册应用程序、设置重定向 URL、更新配置和测试应用来登录用户。

先决条件

  • 拥有有效订阅的 Azure 帐户。 如果还没有帐户,请 免费创建帐户
  • 此 Azure 帐户必须具有管理应用程序的权限。 以下任何Microsoft Entra 角色都包含所需的权限:
    • 应用程序管理员
    • 应用程序开发人员
  • 外部租户。 若要创建一个,请从以下方法中进行选择:
  • Microsoft Entra 管理中心注册新应用, 仅为此组织目录中的帐户配置。 有关更多详细信息 ,请参阅注册应用程序 。 在应用程序 概述 页中记录以下值供以后使用:
    • 应用程序(客户端)ID
    • 目录(租户)ID

添加平台重定向 URL

必须在应用注册中配置特定的重定向 URI,以确保与下载的代码示例兼容。 这些 URI 对于在用户成功登录后将用户重定向回应用至关重要。

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

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

启用公共客户端流

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

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

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

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

克隆示例应用程序

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

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

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

配置示例应用程序

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

  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. 查找命名 scopes 的属性,并设置 授予管理员同意中记录的范围。 如果尚未记录任何范围,可以将此范围列表留空。

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

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

运行并测试示例应用

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

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

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

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

  3. 选择“ 运行 ”按钮。

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

  5. 如果选择 API - 执行 GET 以调用受保护的 ASP.NET 核心 Web API,则会收到错误。

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

后续步骤