在本地开发期间,应用程序需要向 Azure 进行身份验证才能使用不同的 Azure 服务。 使用以下方法之一在本地进行身份验证:
- 将开发人员帐户与 Azure 标识库支持的开发人员工具之一配合使用。
- 使用 代理 管理凭据。
- 使用 服务主体。
本文介绍如何在 Azure 标识库支持的工具中使用开发人员帐户进行身份验证。 在前面的部分中,你将了解:
- 如何使用 Microsoft Entra 组有效地管理多个开发人员帐户的权限。
- 如何将角色分配给开发人员帐户以限定权限范围。
- 如何登录到受支持的本地开发工具。
- 如何通过应用代码使用开发人员帐户进行身份验证。
支持身份验证的开发人员工具
若要使用开发人员的 Azure 凭据在本地开发期间向 Azure 进行身份验证的应用,开发人员必须从以下开发人员工具之一登录到 Azure:
- Azure CLI
- Azure Developer CLI
- Azure PowerShell
- Visual Studio
- Visual Studio Code
Azure 标识库可以检测开发人员是否从其中一个工具登录。 然后,该库可通过工具获取 Microsoft Entra 访问令牌,以将应用作为登录用户向 Azure 进行身份验证。
此方法利用开发人员的现有 Azure 帐户来简化身份验证过程。 但是,开发人员帐户拥有的权限可能比应用需要的权限更多,因此超出了应用在生产环境中运行时使用的权限。 作为替代方法,可以创建在本地开发期间使用的应用程序服务主体,其权限范围仅限应用所需的访问权限。
创建用于本地开发的Microsoft Entra 组
创建Microsoft Entra 组来封装应用在本地开发中所需的角色(权限),而不是将角色分配给单个服务主体对象。 此方法提供以下优势:
- 每个开发人员在组级别都分配了相同的角色。
- 如果应用需要新角色,只需将此角色添加到应用的组即可。
- 如果新开发人员加入团队,则会为开发人员创建一个新的应用程序服务主体并将其添加到组中,确保开发人员有权处理应用。
导航到 Azure 门户中 Microsoft Entra ID 概述页。
从左侧菜单中选择 “所有组 ”。
在 “组 ”页上,选择“ 新建组”。
在 “新建组 ”页上,填写以下表单字段:
- 组类型:选择“安全组”。
- 组名称:输入包含对应用或环境名称的引用的组的名称。
- 组说明:输入说明组用途的说明。
在“成员”下选择“未选择成员”链接,以将成员添加到组中。
在打开的浮出控件面板中,搜索之前创建的服务主体,并从筛选的结果中选择它。 选择面板底部的 “选择 ”按钮以确认你的选择。
选择“新建组”页底部的“创建”以创建组并返回到“所有组”页。 如果未看到列出的新组,请稍等片刻并刷新页面。
将角色分配给组
接下来,确定您的应用在何种资源上需要哪些角色(权限),并将这些角色分配给您创建的 Microsoft Entra 组。 可以在资源、资源组或订阅范围为组分配角色。 此示例演示如何在资源组范围内分配角色,因为大多数应用将其所有 Azure 资源分组到单个资源组中。
在 Azure 门户中,导航到包含应用的资源组的 “概述 ”页。
在左侧导航栏中,选择“访问控制(IAM)”。
在 “访问控制”(IAM) 页上,选择“ + 添加 ”,然后从下拉菜单中选择 “添加角色分配 ”。 “添加角色分配”页提供了多个选项卡来配置和分配角色。
在“ 角色 ”选项卡上,使用搜索框查找要分配的角色。 选择角色,然后选择“ 下一步”。
在“ 成员 ”选项卡上:
- 对于 “分配对值的访问权限 ”,请选择“ 用户”、“组”或服务主体 。
- 对于 “成员 ”值,选择 “+ 选择成员 ”以打开 “选择成员 ”浮出控件面板。
- 搜索之前创建的Microsoft Entra 组,并从筛选的结果中选择它。 选择 “选择” 以选择组并关闭浮动面板。
- 选择“成员”选项卡底部的“审阅 + 分配”。
在“ 审阅 + 分配 ”选项卡上,选择页面底部的 “审阅 + 分配 ”。
使用开发人员工具登录到 Azure
接下来,使用多个开发人员工具之一登录到 Azure,这些工具可用于在开发环境中执行身份验证。 进行身份验证的帐户也应该存在于前面创建并配置的 Microsoft Entra 组中。
使用 Visual Studio 2017 或更高版本的开发人员可以通过 IDE 使用其开发人员帐户进行身份验证。 本地运行时,使用 DefaultAzureCredential 或 VisualStudioCredential 的应用可以发现并使用此帐户对其请求进行身份验证。 将应用直接从 Visual Studio 发布到 Azure 时,也会使用此帐户。
重要
需要 安装 Azure 开发 工作负载 才能为 Azure 身份验证、开发和部署启用 Visual Studio 工具。
在 Visual Studio 中,导航到 “工具>选项 ”以打开“选项”对话框。
在顶部的“搜索选项”框中,键入“Azure”来筛选可用选项。
在“Azure 服务身份验证”下,选择“帐户选择”。
选择“ 选择帐户 ”下的下拉菜单,然后选择添加Microsoft帐户。
在打开的窗口中,输入所需 Azure 帐户的凭据,然后确认输入。
选择“确定”来关闭“选项”对话框。
从应用向 Azure 服务进行身份验证
Azure 身份库提供了支持各种场景和 Microsoft Entra 身份验证流程的实现TokenCredential。 前面的步骤演示如何在本地使用用户帐户时使用 DefaultAzureCredential 或特定的开发工具凭据。
实现代码
完成以下步骤:
在项目中添加对 Azure.Identity 和 Microsoft.Extensions.Azure 包的引用:
dotnet add package Azure.Identity dotnet add package Microsoft.Extensions.Azure在
Program.cs中,为using命名空间添加Azure.IdentityMicrosoft.Extensions.Azure指令。使用相应的
Add前缀扩展方法注册 Azure 服务客户端。Azure 服务使用 Azure SDK 客户端库中的专用客户端类进行访问。 注册这些客户端类型,以便可以通过应用中的依赖项注入来访问它们。
将
TokenCredential实例传递给UseCredential方法。 常见TokenCredential示例包括:针对
DefaultAzureCredential本地开发优化的实例。 本示例将环境变量AZURE_TOKEN_CREDENTIALS设置为dev. 有关详细信息,请参阅 “排除凭据类型类别”。builder.Services.AddAzureClients(clientBuilder => { clientBuilder.AddBlobServiceClient( new Uri("https://<account-name>.blob.core.windows.net")); DefaultAzureCredential credential = new( DefaultAzureCredential.DefaultEnvironmentVariableName); clientBuilder.UseCredential(credential); });与特定开发工具对应的凭据实例,例如
VisualStudioCredential。builder.Services.AddAzureClients(clientBuilder => { clientBuilder.AddBlobServiceClient( new Uri("https://<account-name>.blob.core.windows.net")); VisualStudioCredential credential = new(); clientBuilder.UseCredential(credential); });
小窍门
当团队使用多个开发工具与 Azure 进行身份验证时,优先选择使用本地开发优化的
DefaultAzureCredential实例,而不是特定于工具的凭据。