Azure Managed Identity 与 BYOK
以 Azure Identity 获取 Microsoft Entra token,并通过 provider 回调刷新。
This page has not been translated into English yet. The original Chinese version is shown below.
Azure 托管应用可以用 Managed Identity 代替长期模型 API key。SDK runtime 请求 token,应用回调调用 Azure Identity;token 缓存与刷新时机由身份库处理。
TypeScript 依赖与回调
npm install @github/copilot-sdk @azure/identity官方示例使用以下凭据链与 scope:
import { DefaultAzureCredential } from "@azure/identity";
const credential = new DefaultAzureCredential({
requiredEnvVars: ["AZURE_TOKEN_CREDENTIALS"],
});
const getBearerToken = async () => {
const tokenResponse = await credential.getToken("https://ai.azure.com/.default");
return tokenResponse.token;
};创建会话时,在 provider 中配置 type: "openai"、Foundry 的 /openai/v1/ endpoint、bearerTokenProvider: getBearerToken 和所需 wireApi,并显式指定实际部署的模型。
环境变量
| 变量 | 设置 |
|---|---|
AZURE_TOKEN_CREDENTIALS | Azure 中使用 ManagedIdentityCredential;本地用 dev 或例如 AzureCliCredential |
AZURE_CLIENT_ID | 可选,Azure 中指定 user-assigned managed identity 的 client ID;未设时用 system-assigned |
FOUNDRY_RESOURCE_URL | Foundry 资源主机地址,示例在其后拼 /openai/v1/ |
这里不需要模型 API key 环境变量。身份仍需具备访问目标资源的权限,选择凭据类型并不自动授予模型访问。
语言与运行环境
.NET、Go、Java、Python 和 TypeScript 示例使用 DefaultAzureCredential,支持 Managed Identity、本地 Azure CLI、service principal 环境变量以及 Workload Identity。当前指南中的 Rust 采用本地 DeveloperToolsCredential 和 Azure ManagedIdentityCredential,不能照搬其他语言的配置链。
与静态 token 的区别
将当时取得的 token 复制到静态 bearerToken,不会获得同样的按需刷新行为。长期运行的服务应让 provider 回调调用身份库;token 失效和资源权限错误则按提供方响应处理,见BYOK。