适用于:
外部租户(了解详细信息)
在开始之前,请使用此页面顶部的 “选择租户类型 选择器”来选择租户类型。 Microsoft Entra ID 提供两个租户配置, 即员工 和 外部配置。 员工租户配置适用于员工、内部应用和其他组织资源。 外部租户适用于面向客户的应用。
本指南演示如何配置示例移动应用程序以登录用户,以及如何调用 ASP.NET Core Web API。
本文将执行以下任务:
- 将平台重定向 URL 添加到 Web 应用程序。
- 启用公共客户端流。
- 更新 Android 配置代码示例文件,以使用自己的 Microsoft Entra 外部 ID 获取客户租户详细信息。
- 运行并测试示例 Android 移动应用程序。
- 调用受保护的 Web API。
先决条件
外部租户。 如果还没有试用版, 请注册免费试用版。
在 Microsoft Entra 管理中心注册新的客户端 Web 应用,为 任何组织目录中的帐户和个人Microsoft帐户配置。 有关更多详细信息 ,请参阅注册应用程序 。 在应用程序 概述 页中记录以下值供以后使用:
- 应用程序(客户端)ID
- 目录(租户)ID
一个 Web API 注册,它至少公开一个范围(委派的权限)和一个应用角色(应用程序权限),例如 ToDoList.Read。 如果尚未这样做,请按照 示例 Android 移动应用中调用 API 的说明作,在 Core Web API ASP.NET 功能保护。 请确保完成以下步骤:
- 配置 API 范围
- 配置应用角色
- 配置可选声明
- 克隆或下载示例 Web API
- 配置并运行示例 Web API
添加平台重定向 URL
若要将应用类型指定到应用注册,请执行以下步骤:
- 在 管理下,选择 身份验证。
- 在 “平台配置 ”页上,选择 “添加平台”,然后选择 “Android ”选项。
- 输入项目的包名称。 如果下载了 示例代码,则此值为
com.azuresamples.msaldelegatedandroidkotlinsampleapp。 - 在“配置 Android 应用”窗格的“签名哈希”部分中,选择“生成开发签名哈希”。这将针对每个开发环境进行更改。在终端中复制并运行作系统的 KeyTool 命令。
- 输入 KeyTool 生成的 签名哈希 。
- 选择配置。
- 从 Android 配置窗格中复制 MSAL 配置,并将其保存到以后的应用配置。
- 选择“完成”。
启用公共客户端流
若要将应用标识为公共客户端,请执行以下步骤:
在 管理下,选择 身份验证。
在 “高级设置”下,对于 “允许公共客户端流”,请选择“ 是”。
选择 保存 以保存更改。
向示例应用授予 Web API 权限
注册客户端应用、Web API 并通过创建范围公开 API 后,可以按照以下步骤配置客户端对 API 的权限:
在 “应用注册 ”页中,选择你创建的应用程序(如 ciam-client-app),以打开其 “概述 ”页。
在“管理”下,选择 API 权限。
在 “配置的权限”下,选择“ 添加权限”。
选择 组织使用的 API 选项卡。
在 API 列表中,选择 CIam-ToDoList-api 等 API。
选择 “委派权限 ”选项。
从权限列表中选择 ToDoList.Read、ToDoList.ReadWrite (如有必要,请使用搜索框)。
选择 “添加权限 ”按钮。
此时,你已正确分配权限。 但是,由于租户是客户的租户,因此使用者用户本身无法同意这些权限。 若要解决此问题,管理员必须代表租户中的所有用户同意这些权限:
选择租户名称>的<“授予管理员许可”,然后选择“是”。
选择“刷新”,然后验证为租户名称>授予<的权限是否显示在“状态”下。
从“配置的权限”列表中选择 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 资源的身份验证和访问,请执行以下步骤配置示例:
在 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 文件。
查找命名
WEB_API_BASE_URL的属性,并将 URL 设置为 Web API。查找在
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
若要生成并运行应用,请执行以下步骤:
在工具栏中,从“运行配置”菜单中选择你的应用。
在目标设备菜单中,选择要在其中运行应用的设备。
如果没有配置任何设备,则需要创建 Android 虚拟设备以使用 Android 模拟器或连接物理 Android 设备。
选择“ 运行 ”按钮。
选择“ 以交互方式获取令牌 ”以请求访问令牌。
选择 API - 执行 GET 以调用以前设置的 ASP.NET Core Web API。 成功调用 Web API 会返回 HTTP 200,而 HTTP 403 表示未经授权的访问。