К основному содержанию
скилл

azure-identity-ts — скилл для Claude Code: вход в Azure из TypeScript

Скилл подсказывает агенту, как настроить аутентификацию в Azure через библиотеку @azure/identity в TypeScript. Пригодится, когда в проекте появляется DefaultAzureCredential или managed identity.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add microsoft/skills --skill azure-identity-ts -a claude-code
Открыть на GitHub

Что делает azure-identity-ts

Скилл описывает работу с @azure/identity — библиотекой аутентификации для клиентов Azure SDK через Microsoft Entra ID. Внутри разобраны варианты учётных данных: DefaultAzureCredential для локальной разработки, managed identity для продакшена, service principal с секретом или сертификатом, вход через браузер и device code flow.

Есть отдельные разделы про переменные окружения. Для service principal это AZURE_TENANT_ID, AZURE_CLIENT_ID и AZURE_CLIENT_SECRET либо путь к сертификату в AZURE_CLIENT_CERTIFICATE_PATH. Для workload identity в Kubernetes — AZURE_FEDERATED_TOKEN_FILE. Если DefaultAzureCredential используется в продакшене, нужна переменная AZURE_TOKEN_CREDENTIALS=prod, иначе цепочка учётных данных остаётся в режиме разработки. Это повод проверить конфиг перед выкаткой.

Отдельно показаны developer-креденшелы: Azure CLI, Azure Developer CLI, Azure PowerShell и Visual Studio Code (для последнего нужен пакет @azure/identity-vscode и плагин через useIdentityPlugin). Для суверенных облаков задаётся authorityHost из AzureAuthorityHosts — Azure Government или Azure China. Есть примеры своей цепочки через ChainedTokenCredential и получения bearer-токена функцией getBearerTokenProvider.

Какие задачи решает

  • настроить вход в Azure SDK без ручного разбора цепочки учётных данных
  • подключить managed identity к клиенту Azure в продакшене
  • вынести секреты service principal в переменные окружения
  • сделать вход через браузер или device code для локальной отладки
  • переключить аутентификацию на Azure Government или Azure China

Примеры запросов агенту

  • Настрой аутентификацию в Azure для этого проекта через @azure/identity
  • Замени секрет service principal на managed identity в этом клиенте
  • Добавь вход через Azure CLI для локальной разработки

Как установить azure-identity-ts

1Через Skills CLI (Vercel)

npx skills add microsoft/skills --skill azure-identity-ts -a claude-code

2Вручную: положить файлы

~/.claude/skills/azure-identity-ts/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/azure-identity-ts/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о azure-identity-ts

Как установить azure-identity-ts в Claude?

Выполните npx skills add microsoft/skills --skill azure-identity-ts -a claude-code. После этого файл скилла окажется в ~/.claude/skills/azure-identity-ts/SKILL.md.

Что делает azure-identity-ts?

Показывает агенту, как настроить аутентификацию в Azure через @azure/identity: DefaultAzureCredential, managed identity, service principal, вход через браузер и device code.

Какие переменные окружения нужны для service principal?

AZURE_TENANT_ID, AZURE_CLIENT_ID и AZURE_CLIENT_SECRET для варианта с секретом. При аутентификации по сертификату вместо секрета указывается AZURE_CLIENT_CERTIFICATE_PATH.

Исходный текст

SKILL.md · MIT
---
name: azure-identity-ts
description: Authenticate to Azure services using Azure Identity library for JavaScript (@azure/identity). Use when configuring authentication with DefaultAzureCredential, managed identity, service principals, or interactive browser login.
license: MIT
metadata:
  author: Microsoft
  version: "1.0.0"
  package: '@azure/identity'
---

# Azure Identity library for TypeScript

Authentication library for Azure SDK clients using Microsoft Entra ID.

## Installation

```bash
npm install @azure/identity

# For Visual Studio Code credential support
npm install @azure/identity-vscode
```

## Environment Variables

### Service Principal (Secret)

```bash
AZURE_TENANT_ID=<tenant-id>
AZURE_CLIENT_ID=<client-id>
AZURE_CLIENT_SECRET=<client-secret>
AZURE_TOKEN_CREDENTIALS=prod # Required only if DefaultAzureCredential is used in production
```

### Service Principal (Certificate)

```bash
AZURE_TENANT_ID=<tenant-id>
AZURE_CLIENT_ID=<client-id>
AZURE_CLIENT_CERTIFICATE_PATH=/path/to/cert.pem
AZURE_CLIENT_CERTIFICATE_PASSWORD=<optional-password>
```

### Workload Identity (Kubernetes)

```bash
AZURE_TENANT_ID=<tenant-id>
AZURE_CLIENT_ID=<client-id>
AZURE_FEDERATED_TOKEN_FILE=/var/run/secrets/tokens/azure-identity
```

## DefaultAzureCredential (Recommended for Local Development)

```typescript
import { DefaultAzureCredential, ManagedIdentityCredential } from "@azure/identity";

// Local dev: DefaultAzureCredential. Production: set AZURE_TOKEN_CREDENTIALS=prod or AZURE_TOKEN_CREDENTIALS=<specific_credential>
const credential = new DefaultAzureCredential({requiredEnvVars: ["AZURE_TOKEN_CREDENTIALS"]});
// Or use a specific credential directly in production:
// See https://learn.microsoft.com/javascript/api/overview/azure/identity-readme?view=azure-node-latest#credential-classes
// const credential = new ManagedIdentityCredential();

// Use with any Azure SDK client
import { BlobServiceClient } from "@azure/storage-blob";
const blobClient = new BlobServiceClient(
  "https://<account>.blob.core.windows.net",
  credential
);
```

See [DefaultAzureCredential overview](https://aka.ms/azsdk/js/identity/credential-chains#defaultazurecredential-overview) for the current credential chain order and defaults.

## Managed Identity

### System-Assigned

```typescript
import { ManagedIdentityCredential } from "@azure/identity";

const credential = new ManagedIdentityCredential();
```

### User-Assigned (by Client ID)

```typescript
const credential = new ManagedIdentityCredential({
  clientId: "<user-assigned-client-id>"
});
```

### User-Assigned (by Resource ID)

```typescript
const credential = new ManagedIdentityCredential({
  resourceId: "/subscriptions/<sub>/resourceGroups/<rg>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<name>"
});
```

### User-Assigned (by Object ID)

```typescript
const credential = new ManagedIdentityCredential({
  objectId: "<user-assigned-object-id>"
});
```

## Service Principal

### Client Secret

```typescript
import { ClientSecretCredential } from "@azure/identity";

const credential = new ClientSecretCredential(
  "<tenant-id>",
  "<client-id>",
  "<client-secret>"
);
```

### Client Certificate

```typescript
import { ClientCertificateCredential } from "@azure/identity";

const credential = new ClientCertificateCredential(
  "<tenant-id>",
  "<client-id>",
  { certificatePath: "/path/to/cert.pem" }
);

// With password
const credentialWithPwd = new ClientCertificateCredential(
  "<tenant-id>",
  "<client-id>",
  { 
    certificatePath: "/path/to/cert.pem",
    certificatePassword: "<password>"
  }
);
```

## Interactive Authentication

### Browser-Based Login

```typescript
import { InteractiveBrowserCredential } from "@azure/identity";

const credential = new InteractiveBrowserCredential({
  clientId: "<client-id>",
  tenantId: "<tenant-id>",
  loginHint: "[email protected]"
});
```

### Device Code Flow

```typescript
import { DeviceCodeCredential } from "@azure/identity";

const credential = new DeviceCodeCredential({
  clientId: "<client-id>",
  tenantId: "<tenant-id>",
  userPromptCallback: (info) => {
    console.log(info.message);
    // "To sign in, use a web browser to open..."
  }
});
```

## Custom Credential Chain

```typescript
import { 
  ChainedTokenCredential,
  ManagedIdentityCredential,
  AzureCliCredential
} from "@azure/identity";

// Try managed identity first, fall back to CLI
const credential = new ChainedTokenCredential(
  new ManagedIdentityCredential(),
  new AzureCliCredential()
);
```

## Developer Credentials

### Visual Studio Code

```typescript
import { useIdentityPlugin, VisualStudioCodeCredential } from "@azure/identity";
import { vsCodePlugin } from "@azure/identity-vscode";

useIdentityPlugin(vsCodePlugin);

const credential = new VisualStudioCodeCredential();
```

### Azure CLI

```typescript
import { AzureCliCredential } from "@azure/identity";

const credential = new AzureCliCredential();
// Uses: az login
```

### Azure Developer CLI

```typescript
import { AzureDeveloperCliCredential } from "@azure/identity";

const credential = new AzureDeveloperCliCredential();
// Uses: azd auth login
```

### Azure PowerShell

```typescript
import { AzurePowerShellCredential } from "@azure/identity";

const credential = new AzurePowerShellCredential();
// Uses: Connect-AzAccount
```

## Sovereign Clouds

```typescript
import { ClientSecretCredential, AzureAuthorityHosts } from "@azure/identity";

// Azure Government
const credential = new ClientSecretCredential(
  "<tenant>", "<client>", "<secret>",
  { authorityHost: AzureAuthorityHosts.AzureGovernment }
);

// Azure China
const credentialChina = new ClientSecretCredential(
  "<tenant>", "<client>", "<secret>",
  { authorityHost: AzureAuthorityHosts.AzureChina }
);
```

## Bearer Token Provider

```typescript
import { DefaultAzureCredential, getBearerTokenProvider } from "@azure/identity";

const credential = new DefaultAzureCredential({requiredEnvVars: ["AZURE_TOKEN_CREDENTIALS"]});

// Create a function that returns tokens
const getAccessToken = getBearerTokenProvider(
  credential,
  "https://cognitiveservices.azure.com/.default"
);

// Use with APIs that need bearer tokens
const token = await getAccessToken();
```

## Key Types

```typescript
import type { 
  TokenCredential, 
  AccessToken, 
  GetTokenOptions 
} from "@azure/core-auth";

import {
  DefaultAzureCredential,
  DefaultAzureCredentialOptions,
  ManagedIdentityCredential,
  ClientSecretCredential,
  ClientCertificateCredential,
  InteractiveBrowserCredential,
  ChainedTokenCredential,
  AzureCliCredential,
  AzurePowerShellCredential,
  AzureDeveloperCliCredential,
  DeviceCodeCredential,
  AzureAuthorityHosts
} from "@azure/identity";
```

## Custom Credential Implementation

```typescript
import type { TokenCredential, AccessToken, GetTokenOptions } from "@azure/core-auth";

class CustomCredential implements TokenCredential {
  async getToken(
    scopes: string | string[],
    options?: GetTokenOptions
  ): Promise<AccessToken | null> {
    // Custom token acquisition logic
    return {
      token: "<access-token>",
      expiresOnTimestamp: Date.now() + 3600000
    };
  }
}
```

## Debugging

```typescript
import { setLogLevel, AzureLogger } from "@azure/logger";

setLogLevel("verbose");

// Custom log handler
AzureLogger.log = (...args) => {
  console.log("[Azure]", ...args);
};
```

## Best Practices

1. **Use `DefaultAzureCredential` for local development; use `ManagedIdentityCredential` or `WorkloadIdentityCredential` for production**
2. **Never hardcode credentials** - Use environment variables or managed identity
3. **Prefer managed identity** - No secrets to manage in production
4. **Scope credentials appropriately** - Use user-assigned identity for multi-tenant scenarios
5. **Handle token refresh** - Azure SDK handles this automatically
6. **Use ChainedTokenCredential** - For custom fallback scenarios

© Microsoft · MIT · microsoft/skills

Похожие скиллы

Всё по теме «Облака: AWS, Azure, GCP» →
azure-infra-engineer VoltAgent Community Проектирует и сопровождает инфраструктуру Azure: сети, Entra ID, PowerShell и Bicep. Нужен при подготовке развёртываний, проверок доступа и автоматизации операций. 245установок azure-role-selector официальный github Скилл подбирает роль Azure с минимальными правами под нужные разрешения и показывает, как назначить её identity. Пригодится для настройки доступа без лишних полномочий. 9 399установок azure-functions MicrosoftDocs Скилл с экспертной базой по Azure Functions: диагностика ошибок, лимиты, безопасность, привязки и деплой. Пригодится, когда агент пишет или чинит функции в Azure. CX Codex +1 378установок azure-functions-csharp официальный github Правило для GitHub Copilot, которое задаёт стандарты разработки Azure Functions на C# в изолированной модели worker. Пригодится, если пишете функции и хотите единый стиль в проекте. ★ 40 418звёзд репо azure-verified-modules hashicorp Скилл с обязательными требованиями Azure Verified Modules: проверяет и помогает писать Terraform-модули, которые проходят сертификацию AVM. CX Codex +1 3 300установок dt-obs-azure Dynatrace Скилл учит агента анализировать ресурсы Azure через Dynatrace Smartscape и DQL. Пригодится при аудите сетевой топологии, проверке настроек безопасности и анализе инфраструктуры. CX Codex +1 2 000установок

Из того же набора64

Весь набор →
azure-upgrade Проводит оценку и автоматизирует переход Azure-нагрузок между планами, тарифами и SKU, а также обновляет устаревшие Azure SDK в коде. 1установок azure-compute Разбирает запросы про виртуальные машины Azure и VMSS: подбор размера, цены, создание, резервирование ёмкости. Пригодится, когда агент должен не гадать, а идти по нужному сценарию. 1установок azure-storage-file-share-ts Скилл подсказывает агенту, как работать с Azure File Share через SDK @azure/storage-file-share: шары, каталоги, загрузка и скачивание файлов. 1установок azure-search-documents-ts Скилл для работы с Azure AI Search SDK на JavaScript: индексы, векторный и гибридный поиск, семантический ранкинг. Пригодится, когда агент пишет код поиска по Azure. 1установок azure-appconfiguration-ts Скилл учит агента работать с Azure App Configuration из TypeScript: настройки, фичефлаги, ссылки на Key Vault и динамическое обновление. 1установок azure-ai-projects-ts Подсказывает агенту, как работать с Azure AI Projects SDK для JavaScript: агенты, подключения, деплойменты, датасеты, индексы и оценки. 1установок azure-monitor-opentelemetry-exporter-py Скилл для низкоуровневой отправки трейсов, метрик и логов OpenTelemetry в Application Insights из Python. Пригодится, когда нужен свой конвейер телеметрии. 1установок azure-messaging-webpubsubservice-py Скилл по Python SDK для Azure Web PubSub Service: рассылка сообщений по WebSocket, группы, токены доступа и управление подключениями. 1установок

Спонсоры проекта

Компании, которые помогают держать аналитику открытой