适用于:
员工租户
外部租户(了解详细信息)
在开始之前,请使用此页面顶部的 “选择租户类型 选择器”来选择租户类型。 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 对于在用户成功登录后将用户重定向回应用至关重要。
在“ 管理”下,选择“ 身份验证>添加平台>Android”。
根据上面下载的示例类型输入项目的包名称。
- Java 示例 -
com.azuresamples.msalandroidapp - Kotlin 示例 -
com.azuresamples.msalandroidkotlinapp
- Java 示例 -
在“配置 Android 应用”窗格的“签名哈希”部分中,选择“生成开发签名哈希”。并将 KeyTool 命令复制到命令行。
- KeyTool.exe 作为 Java 开发工具包(JDK)的一部分安装。 还必须安装 OpenSSL 工具才能执行 KeyTool 命令。 有关详细信息,请参阅 有关生成密钥的 Android 文档 。
输入 KeyTool 生成的 签名哈希 。
选择“配置”并保存显示在 Android 配置窗格中的 MSAL 配置,以便在稍后配置应用时输入它。
选择“完成”。
下载示例应用
配置示例应用程序
在 Android Studio 的项目窗格中,导航到 app\src\main\res。
右键单击 res 并选择“ 新建>目录”。 输入
raw为新目录名称,然后选择“ 确定”。在 应用>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" } } ] }打开 /app/src/main/AndroidManifest.xml 文件。
查找占位符:
-
enter_the_signature_hash并将其替换为之前添加平台重定向 URL 时生成的 签名哈希 。
由于本教程仅演示如何在单帐户模式下配置应用,请参阅 单帐户模式与多个帐户模式 并 配置应用 以获取详细信息
-
运行示例应用
从 Android Studio 的 可用设备 下拉列表中选择仿真器或物理设备并运行应用。
示例应用在 “单帐户模式” 屏幕上启动。 默认提供默认范围 user.read,在Microsoft图形 API 调用期间读取自己的配置文件数据时使用。 默认情况下会提供Microsoft图形 API 调用的 URL。 如果需要,可以更改这两者。
使用应用菜单在单帐户模式和多个帐户模式之间进行更改。
在单帐户模式下,使用工作或家庭帐户登录:
- 以 交互方式选择“获取图形数据 ”,提示用户输入其凭据。 你将在屏幕底部看到对 Microsoft 图形 API 的调用的输出。
- 登录后,选择“ 无提示获取图形数据 ”以调用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 扩展 直接在 Visual Studio Code 中设置外部租户。 (推荐使用)
- 在 Microsoft Entra 管理中心创建新的外部租户。
- 在 Microsoft Entra 管理中心注册新应用, 仅为此组织目录中的帐户配置。 有关更多详细信息 ,请参阅注册应用程序 。 在应用程序 概述 页中记录以下值供以后使用:
- 应用程序(客户端)ID
- 目录(租户)ID
添加平台重定向 URL
必须在应用注册中配置特定的重定向 URI,以确保与下载的代码示例兼容。 这些 URI 对于在用户成功登录后将用户重定向回应用至关重要。
若要将应用类型指定到应用注册,请执行以下步骤:
- 在 管理下,选择 身份验证。
- 在 “平台配置 ”页上,选择 “添加平台”,然后选择 “Android ”选项。
- 输入项目的包名称。 如果下载了 示例代码,则此值为
com.azuresamples.msaldelegatedandroidkotlinsampleapp。 - 在“配置 Android 应用”窗格的“签名哈希”部分中,选择“生成开发签名哈希”。这将针对每个开发环境进行更改。在终端中复制并运行作系统的 KeyTool 命令。
- 输入 KeyTool 生成的 签名哈希 。
- 选择配置。
- 从 Android 配置窗格中复制 MSAL 配置,并将其保存到以后的应用配置。
- 选择“完成”。
启用公共客户端流
若要将应用标识为公共客户端,请执行以下步骤:
在 管理下,选择 身份验证。
在 “高级设置”下,对于 “允许公共客户端流”,请选择“ 是”。
选择 保存 以保存更改。
克隆示例应用程序
若要获取示例应用程序,可以从 GitHub 克隆它,也可以 将其下载为 .zip 文件。
若要克隆示例,请打开命令提示符并导航到要创建项目的位置,并输入以下命令:
git clone https://github.com/Azure-Samples/ms-identity-ciam-browser-delegated-android-sample
配置示例应用程序
若要启用对 Microsoft Graph 资源的身份验证和访问,请执行以下步骤配置示例:
在 Android Studio 中,打开克隆的项目。
打开 /app/src/main/res/raw/auth_config_ciam.json 文件。
查找占位符:
-
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。 如果不知道租户子域,请了解如何 阅读租户详细信息。
-
打开 /app/src/main/AndroidManifest.xml 文件。
查找占位符:
-
ENTER_YOUR_SIGNATURE_HASH_HERE并将其替换为之前添加平台重定向 URL 时生成的 签名哈希 。
-
打开 /app/src/main/java/com/azuresamples/msaldelegatedandroidkotlinsampleapp/MainActivity.kt 文件。
查找命名
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}"
你已配置应用,并且已准备好运行。
运行并测试示例应用
若要生成并运行应用,请执行以下步骤:
在工具栏中,从“运行配置”菜单中选择你的应用。
在目标设备菜单中,选择要在其中运行应用的设备。
如果没有配置任何设备,则需要创建 Android 虚拟设备以使用 Android 模拟器或连接物理 Android 设备。
选择“ 运行 ”按钮。
选择“ 以交互方式获取令牌 ”以请求访问令牌。
如果选择 API - 执行 GET 以调用受保护的 ASP.NET 核心 Web API,则会收到错误。
有关调用受保护 Web API 的详细信息,请参阅后续 步骤