适用于: 员工租户
外部租户(了解详细信息)
在本快速入门中,你将使用示例 Web 应用来演示如何使用Microsoft标识平台保护 ASP.NET Web API。 此示例使用 Microsoft身份验证库(MSAL) 来处理身份验证和授权。
先决条件
- 拥有有效订阅的 Azure 帐户。 免费创建帐户。
- 在 Microsoft Entra 管理中心 注册新应用,并从“应用 概述 ”页记录其标识符。 要了解更多信息,请参见注册应用程序。
- 名称: NewWebAPI1
- 支持的帐户类型: 仅限于此组织目录中的帐户(单一租户)
- Visual Studio 2022。 免费下载 Visual Studio。
公开 API
注册 API 后,可以通过定义 API 向客户端应用程序公开的范围来配置其权限。 客户端应用程序通过将访问令牌及其请求传递到受保护的 Web API 来请求执行操作的权限。 然后,仅当 Web API 接收的访问令牌包含所需范围时,Web API 才会执行请求的操作。
在管理下,选择公开 API>添加范围。 通过选择“保存并继续”来接受建议的应用程序 ID URI (
api://{clientId}
),然后输入以下信息:- 对于范围名称,请输入
access_as_user
。 - 对于“谁能同意?”,请确保选择了“管理员和用户”选项。
- 在“管理员同意显示名称”框中,输入
Access TodoListService as a user
。 - 在“管理员同意说明”框中,输入
Accesses the TodoListService web API as a user
。 - 在“用户同意显示名称”框中,输入
Access TodoListService as a user
。 - 在“用户同意说明”框中,输入
Accesses the TodoListService web API as a user
。 - 对于“状态”,保留“启用”。
- 对于范围名称,请输入
选择添加作用域。
克隆或下载示例应用程序
若要获取示例应用程序,可以从 GitHub 克隆它或将其下载为 .zip 文件。
git clone https://github.com/AzureADQuickStarts/AppModelv2-NativeClient-DotNet.git
小窍门
若要避免由于 Windows 中路径长度限制导致的错误,我们建议将存档提取或克隆到驱动器根目录附近的目录中。
配置示例应用程序
配置代码示例以匹配已注册的 Web API。
在 Visual Studio 中打开解决方案,然后在 TodoListService 项目的根目录下打开 appsettings.json 文件。
将
Enter_the_Application_Id_here
的值替换为在“应用注册”门户中的 和ClientID
参数中注册的应用程序中的客户端 ID(应用程序 ID)值Audience
。
将新范围添加到 app.config 文件
若要将新范围添加到 TodoListClient app.config 文件,请执行以下步骤:
在 TodoListClient 项目根文件夹中,打开 app.config 文件。
将你为 TodoListService 项目注册的应用程序的 ID 粘贴到
TodoListServiceScope
参数中,替换{Enter the Application ID of your TodoListService from the app registration portal}
字符串。
注释
确保应用程序 ID 使用以下格式:api://{TodoListService-Application-ID}/access_as_user
(其中 {TodoListService-Application-ID}
是表示 TodoListService 应用的应用程序 ID 的 GUID)。
注册 Web 应用 (TodoListClient)
在 Microsoft Entra 管理中心 的应用注册 中注册 TodoListClient 应用,然后在 TodoListClient 项目中配置代码。 如果客户端和服务器被视为同一应用程序,则可以重复使用在步骤 2 中注册的应用程序。 如果希望用户使用 Microsoft 个人帐户登录,则可使用相同的应用程序。
注册应用
若要注册 TodoListClient 应用,请执行以下步骤:
至少以云应用程序管理员身份登录到 Microsoft Entra 管理中心。
浏览到 Entra ID>应用注册 并选择“ 新建注册”。
选择“新注册”。
“注册应用程序”页出现后,请输入应用程序的注册信息:
- 在 名称 部分中,输入一个有意义的应用程序名称,该名称将显示给应用的用户(例如,NativeClient-DotNet-TodoListClient)。
- 在“支持的帐户类型”下,选择“任何组织目录中的帐户” 。
- 选择“注册”以创建应用程序。
注释
在 TodoListClient 项目 app.config 文件中,
ida:Tenant
的默认值设置为common
。 可能的值为:-
common
:可以使用工作或学校帐户或 Microsoft 个人帐户登录(因为你在上一步中选择了“任何组织目录中的帐户”)。 -
organizations
:可使用工作或学校帐户登录。 -
consumers
:只能使用 Microsoft 个人帐户登录。
在应用 概述 页上,选择 身份验证,然后完成以下步骤以添加平台:
- 在“平台配置”下,选择“添加平台”按钮 。
- 对于 移动和桌面应用程序,请选择 移动和桌面应用程序。
- 对于“重定向 URI”,请选择 复选框。
https://login.microsoftonline.com/common/oauth2/nativeclient
- 选择配置。
选择“API 权限”,然后完成以下步骤以添加权限:
- 选择“添加权限”按钮。
- 选择“我的 API”选项卡。
- 在 API 列表中,选择 AppModelv2-NativeClient-DotNet-TodoListService API 或选择您为 Web API 输入的名称。
- 如果"access_as_user"权限框未选中,请选中它。 如有必要,请使用“搜索”框。
- 选择“添加权限”按钮。
配置您的项目
通过将应用程序 ID 添加到 app.config 文件来配置 TodoListClient 项目。
在“应用注册门户”的“概述”页中,复制“应用程序(客户端) ID”的值 。
从 TodoListClient 项目根文件夹打开 app.config 文件,然后将应用程序 ID 值粘贴到
ida:ClientId
参数中。
运行示例应用程序
启动这两个项目。 对于 Visual Studio 用户;
右键单击 Visual Studio 解决方案,然后选择“属性”
在 “通用属性”中,选择“ 启动项目 ”,然后选择 “多个启动项目”。
对于这两个项目,请选择“启动”作为操作
请使用向上箭头将 TodoListService 服务移动到列表中的第一个位置,以确保先启动该服务。
登录以运行 TodoListClient 项目。
按 F5 启动项目。 服务页面和桌面应用程序同时打开。
在 TodoListClient 中,选择右上角的“登录”,然后使用注册应用程序时所用的同一凭据登录,或以同一目录中的用户身份登录。
如果首次登录,系统可能会提示你同意 TodoListService Web API。
为了帮助你访问 TodoListService Web API 并操作 待办事项 列表,登录还请求访问 access_as_user 作用域的访问令牌。
为客户端应用程序预先授权
可以允许其他目录中的用户访问 Web API,方法是预先授权客户端应用程序访问 Web API。 为此,请将来自客户端应用的应用程序 ID 添加到你的 Web API 的预授权应用列表中。 通过添加预授权客户端,你可以允许用户访问 Web API,而无需提供同意。
- 在“应用注册”门户中,打开 TodoListService 应用的属性。
- 在“公开 API”部分的“授权客户端应用程序”下,选择“添加客户端应用程序。
- 在“客户端 ID”框中,粘贴 TodoListClient 应用的应用程序 ID。
- 在 授权范围 部分中,选择
api://<Application ID>/access_as_user
Web API 的范围。 - 选择添加应用程序。
开始运行项目
- 按 F5 运行项目。 您的 TodoListClient 应用打开了。
- 选择右上角的“登录”,然后使用 Microsoft 个人帐户(例如 live.com 或 hotmail.com 帐户)或工作或学校帐户登录 。
可选:限制特定用户的登录访问权限
默认情况下,任何个人帐户(例如 outlook.com 或 live.com 帐户)或与 Microsoft Entra ID 集成的组织的工作或学校帐户都可以请求令牌并访问 Web API。
若要通过更改 TenantId
文件中 属性来指定谁可以登录到应用程序。
后续步骤
了解如何使用Microsoft标识平台保护 ASP.NET Core Web API。