Appearance
如何在 TypeScript 中快速实现 Azure 服务的身份验证
解决 Azure 云资源访问的权限管理问题:通过使用 @azure/identity SDK,开发者可以一套代码兼容本地开发环境(CLI 登录)与生产环境(托管身份),无需在代码中硬编码密钥。
为什么需要这个技能
在调用 Azure 存储、Key Vault 或 AI 服务等 API 时,必须通过身份验证证明调用者的权限。手动管理 Client Secret 或证书不仅繁琐且存在严重的安全风险(如密钥泄露)。
@azure/identity 库提供了一套统一的凭据模型,最核心的 DefaultAzureCredential 能够自动在多种认证方式之间尝试切换(例如:从环境变量 托管身份 Azure CLI)。这意味着你的代码在本地运行和部署到云端时,无需修改任何认证逻辑。
适用场景
- 跨环境部署:需要在本地开发机、GitHub Actions 和 Azure Kubernetes Service (AKS) 之间无缝切换。
- 生产环境脱敏:通过 Managed Identity(托管身份)消除代码和配置文件中的明文密钥。
- 构建内部工具:需要通过浏览器交互登录或设备代码流(Device Code Flow)获取用户授权。
- 多云/主权云访问:需要访问 Azure Government 或 Azure China 等特定区域的云环境。
核心工作流
1. 安装与环境准备
首先安装 SDK:
bash
npm install @azure/identity如果是使用服务主体(Service Principal),请配置环境变量:
bash
AZURE_TENANT_ID=<tenant-id>
AZURE_CLIENT_ID=<client-id>
AZURE_CLIENT_SECRET=<client-secret>2. 使用推荐的默认凭据
这是最推荐的实践,它会根据环境自动选择最佳认证方式:
typescript
import { DefaultAzureCredential } from "@azure/identity";
import { BlobServiceClient } from "@azure/storage-blob";
const credential = new DefaultAzureCredential();
const blobClient = new BlobServiceClient(
"https://<account>.blob.core.windows.net",
credential
);3. 选择特定认证方案
根据需求选择更精准的类:
- 托管身份 (Managed Identity):适用于部署在 Azure 资源上的代码。
- 服务主体 (ClientSecretCredential):适用于外部自动化脚本。
- 交互式登录 (InteractiveBrowserCredential):适用于需要用户手动授权的桌面应用。
4. 自定义凭据链
如果默认顺序不满足需求,可以使用 ChainedTokenCredential 定义自己的尝试顺序:
typescript
import { ChainedTokenCredential, ManagedIdentityCredential, AzureCliCredential } from "@azure/identity";
const credential = new ChainedTokenCredential(
new ManagedIdentityCredential(),
new AzureCliCredential()
);下载和安装
下载 azure-identity-ts 中文版 Skill ZIP
解压后将目录放入你的 AI 工具 skills 文件夹,重启工具后即可使用。具体路径参考内附的 USAGE.zh.md。
你可能还需要
暂无推荐