Microsoft Entra ID와 다양한 인증 패턴을 사용하여 Java 애플리케이션의 Azure SDK 클라이언트에 대한 인증을 제공합니다.
- GitHub 스타
- 3,194
- 파일
- 2
- 마지막 커밋
- 2026년 11월 11일
- 라이선스
- MIT
- 허용된 도구
- —
azure-identity-java skill은 무엇을 하나요?
azure-identity-java은(는) agent skill입니다. Microsoft Entra ID와 다양한 인증 패턴을 사용하여 Java 애플리케이션의 Azure SDK 클라이언트에 대한 인증을 제공합니다.
skill의 SKILL.md에서 생성된 요약입니다.
azure-identity-java skill 정보
Azure 서비스와 상호작용하는 애플리케이션을 구축하는 Java 개발자는 이 라이브러리를 사용하여 Microsoft Entra ID 인증을 구현합니다. 이 라이브러리는 애플리케이션이 Blob Storage 또는 Key Vault와 같은 리소스에 안전하게 액세스할 수 있도록 다양한 인증 패턴을 제공합니다. 라이브러리를 통합하면 개발자는 통합된 인터페이스를 통해 복잡한 ID 요구 사항을 처리할 수 있어 다양한 환경에서 보안을 관리하기가 더 쉬워집니다.
에이전트가 Azure 인증이 필요한 Java 코드를 작성하거나 디버깅하는 작업을 수행할 때 이 SKILL을 로드해야 합니다. 이 라이브러리는 개발 및 운영 환경 모두에서 작동하는 다중 방식 접근법인 DefaultAzureCredential, App Service 또는 VM과 같은 Azure 호스팅 리소리를 위한 ManagedIdentityCredential, 서비스 주체를 위한 ClientSecretCredential 등 특정 도구를 제공합니다. 또한 AKS를 위한 WorkloadIdentityCredential 또는 데스크톱 애플리케이션을 위한 InteractiveBrowserCredential과 같은 특수 요구 사항도 지원합니다. 이 라이브러리는 표준 Java 의존성 관리에 기반하며, 환경 변수나 프로그래밍 방식의 빌더를 통해 Azure Government 및 Azure China를 포함한 다양한 클라우드 환경을 처리하도록 구성할 수 있습니다.
agent가 수행할 수 있는 작업
- 1다중 환경 인증 구현로컬 개발 환경과 운영 환경 모두에서 작동하는 단일 인증 정보를 구성합니다.
- 2Azure 호스팅 애플리케이션 인증App Service, Functions 또는 VM에서 실행되는 애플리케이션을 위한 관리 ID를 설정합니다.
- 3CI/CD 파이프라인 보안자동화된 배포 프로세스 중에 인증 정보를 제공하기 위해 환경 변수를 사용합니다.
- 4데스크톱 애플리케이션 개발데스크톱 소프트웨어를 실행하는 사용자를 위해 대화형 로그인 흐름을 활성화합니다.
skill의 SKILL.md를 기반으로 작성되었습니다. 모든 사용 사례는 해당 문서의 인용구와 대조 확인되었습니다.
azure-identity-java skill 설치 방법
각 명령은 skill 폴더를 클라이언트의 skills 디렉터리에 복사합니다. 클라이언트를 재시작하거나 새 세션을 시작하여 로드하세요.Claude Code에 azure-identity-java skill 설치
~/.claude/skills/azure-identity-java/SKILL.md
$ npx degit microsoft/skills/.github/plugins/azure-sdk-java/skills/azure-identity-java ~/.claude/skills/azure-identity-javaClaude Code (project)에 azure-identity-java skill 설치
.claude/skills/azure-identity-java/SKILL.md
$ npx degit microsoft/skills/.github/plugins/azure-sdk-java/skills/azure-identity-java .claude/skills/azure-identity-javaCodex에 azure-identity-java skill 설치
~/.agents/skills/azure-identity-java/SKILL.md
$ npx degit microsoft/skills/.github/plugins/azure-sdk-java/skills/azure-identity-java ~/.agents/skills/azure-identity-javaGemini CLI에 azure-identity-java skill 설치
~/.gemini/skills/azure-identity-java/SKILL.md
$ npx degit microsoft/skills/.github/plugins/azure-sdk-java/skills/azure-identity-java ~/.gemini/skills/azure-identity-javaClaude.ai에 azure-identity-java skill 설치
npx degit microsoft/skills/.github/plugins/azure-sdk-java/skills/azure-identity-java azure-identity-java && zip -r azure-identity-java.zip azure-identity-java # claude.ai → Customize → Skills → + → Create skill → Upload a skill → azure-identity-java.zip
자동 검사
2026년 11월 15일에 실행됨전체 보고서 →자동 검사를 통과했습니다. 보안 감사는 아닙니다. 에이전트가 실행하기 전에 스크립트를 읽어 보세요. 검사 방식
- 소스 저장소 연결 및 접근 가능microsoft/skills/.github/plugins/azure-sdk-java/skills/azure-identity-java is public and reachablegithub.com/microsoft/skills/tree/HEAD/.github/plugins/azure- ↗통과
- 오픈 소스 라이선스 (OSI)MITspdx.org/licenses/MIT.html ↗통과
- 최근 1년 내 커밋 또는 릴리스Last commit 2026-11-11github.com/microsoft/skills/commits ↗통과
- 스크립트에 다운로드 후 실행이나 자격 증명 탈취가 없음No scripts in the skill folder통과
- SKILL.md에 숨겨진 지침 없음No override phrases, safeguard switches, credential requests or hidden charactersgithub.com/microsoft/skills/blob/HEAD/.github/plugins/azure- ↗통과
- 사전 허용 도구가 제한됨No pre-approved tools; the agent asks before using onegithub.com/microsoft/skills/blob/HEAD/.github/plugins/azure- ↗통과
- SKILL.md가 Agent Skills 형식을 따름Valid name and description; says when to use it; 358 linesgithub.com/microsoft/skills/blob/HEAD/.github/plugins/azure- ↗통과
SKILL.md
GitHub에서 보기Azure Identity library for Java
Authentication library for Azure SDK clients using Microsoft Entra ID.
Installation
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-identity</artifactId>
<version>1.15.0</version>
</dependency>
Key Concepts
| Credential | Use Case |
|---|---|
DefaultAzureCredential |
Recommended - Works in dev and production |
ManagedIdentityCredential |
Azure-hosted apps (App Service, Functions, VMs) |
EnvironmentCredential |
CI/CD pipelines with env vars |
ClientSecretCredential |
Service principals with secret |
ClientCertificateCredential |
Service principals with certificate |
AzureCliCredential |
Local dev using az login |
InteractiveBrowserCredential |
Interactive login flow |
DeviceCodeCredential |
Headless device authentication |
DefaultAzureCredential (Recommended)
The DefaultAzureCredential tries multiple authentication methods in order. See DefaultAzureCredential overview for the current credential chain order and defaults.
import com.azure.identity.DefaultAzureCredential;
import com.azure.identity.DefaultAzureCredentialBuilder;
// Simple usage
DefaultAzureCredential credential = new DefaultAzureCredentialBuilder().build();
// Use with any Azure client
BlobServiceClient blobClient = new BlobServiceClientBuilder()
.endpoint("https://<storage-account>.blob.core.windows.net")
.credential(credential)
.buildClient();
KeyClient keyClient = new KeyClientBuilder()
.vaultUrl("https://<vault-name>.vault.azure.net")
.credential(credential)
.buildClient();
Configure DefaultAzureCredential
DefaultAzureCredential credential = new DefaultAzureCredentialBuilder()
.managedIdentityClientId("<user-assigned-identity-client-id>") // For user-assigned MI
.tenantId("<tenant-id>") // Limit to specific tenant
.excludeEnvironmentCredential() // Skip env vars
.excludeAzureCliCredential() // Skip Azure CLI
.build();
Managed Identity
For Azure-hosted applications (App Service, Functions, AKS, VMs).
import com.azure.identity.ManagedIdentityCredential;
import com.azure.identity.ManagedIdentityCredentialBuilder;
// System-assigned managed identity
ManagedIdentityCredential credential = new ManagedIdentityCredentialBuilder()
.build();
// User-assigned managed identity (by client ID)
ManagedIdentityCredential credential = new ManagedIdentityCredentialBuilder()
.clientId("<user-assigned-client-id>")
.build();
// User-assigned managed identity (by resource ID)
ManagedIdentityCredential credential = new ManagedIdentityCredentialBuilder()
.resourceId("/subscriptions/<sub>/resourceGroups/<rg>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<name>")
.build();
Service Principal with Secret
import com.azure.identity.ClientSecretCredential;
import com.azure.identity.ClientSecretCredentialBuilder;
ClientSecretCredential credential = new ClientSecretCredentialBuilder()
.tenantId("<tenant-id>")
.clientId("<client-id>")
.clientSecret("<client-secret>")
.build();
Service Principal with Certificate
import com.azure.identity.ClientCertificateCredential;
import com.azure.identity.ClientCertificateCredentialBuilder;
// From PEM file
ClientCertificateCredential credential = new ClientCertificateCredentialBuilder()
.tenantId("<tenant-id>")
.clientId("<client-id>")
.pemCertificate("<path-to-cert.pem>")
.build();
// From PFX file with password
ClientCertificateCredential credential = new ClientCertificateCredentialBuilder()
.tenantId("<tenant-id>")
.clientId("<client-id>")
.pfxCertificate("<path-to-cert.pfx>", "<pfx-password>")
.build();
// Send certificate chain for SNI
ClientCertificateCredential credential = new ClientCertificateCredentialBuilder()
.tenantId("<tenant-id>")
.clientId("<client-id>")
.pemCertificate("<path-to-cert.pem>")
.sendCertificateChain(true)
.build();
Environment Credential
Reads credentials from environment variables.
import com.azure.identity.EnvironmentCredential;
import com.azure.identity.EnvironmentCredentialBuilder;
EnvironmentCredential credential = new EnvironmentCredentialBuilder().build();
Required Environment Variables
For service principal with secret:
AZURE_TENANT_ID=<tenant-id>
AZURE_CLIENT_ID=<client-id>
AZURE_CLIENT_SECRET=<client-secret>
For service principal with certificate:
AZURE_TENANT_ID=<tenant-id>
AZURE_CLIENT_ID=<client-id>
AZURE_CLIENT_CERTIFICATE_PATH=/path/to/cert.pem
AZURE_CLIENT_CERTIFICATE_PASSWORD=<optional-password>
Azure CLI Credential
For local development using az login.
import com.azure.identity.AzureCliCredential;
import com.azure.identity.AzureCliCredentialBuilder;
AzureCliCredential credential = new AzureCliCredentialBuilder()
.tenantId("<tenant-id>") // Optional: specific tenant
.build();
Interactive Browser
For desktop applications requiring user login.
import com.azure.identity.InteractiveBrowserCredential;
import com.azure.identity.InteractiveBrowserCredentialBuilder;
InteractiveBrowserCredential credential = new InteractiveBrowserCredentialBuilder()
.clientId("<client-id>")
.redirectUrl("http://localhost:8080") // Must match app registration
.build();
Device Code
For headless devices (IoT, CLI tools).
import com.azure.identity.DeviceCodeCredential;
import com.azure.identity.DeviceCodeCredentialBuilder;
DeviceCodeCredential credential = new DeviceCodeCredentialBuilder()
.clientId("<client-id>")
.challengeConsumer(challenge -> {
// Display to user
System.out.println(challenge.getMessage());
})
.build();
Chained Credential
Create custom authentication chains.
import com.azure.identity.ChainedTokenCredential;
import com.azure.identity.ChainedTokenCredentialBuilder;
ChainedTokenCredential credential = new ChainedTokenCredentialBuilder()
.addFirst(new ManagedIdentityCredentialBuilder().build())
.addLast(new AzureCliCredentialBuilder().build())
.build();
Workload Identity (AKS)
For Azure Kubernetes Service with workload identity.
import com.azure.identity.WorkloadIdentityCredential;
import com.azure.identity.WorkloadIdentityCredentialBuilder;
// Reads from AZURE_TENANT_ID, AZURE_CLIENT_ID, AZURE_FEDERATED_TOKEN_FILE
WorkloadIdentityCredential credential = new WorkloadIdentityCredentialBuilder().build();
// Or explicit configuration
WorkloadIdentityCredential credential = new WorkloadIdentityCredentialBuilder()
.tenantId("<tenant-id>")
.clientId("<client-id>")
.tokenFilePath("/var/run/secrets/azure/tokens/azure-identity-token")
.build();
Token Caching
Enable persistent token caching for better performance.
// Enable token caching (in-memory by default)
DefaultAzureCredential credential = new DefaultAzureCredentialBuilder()
.enableAccountIdentifierLogging()
.build();
// With shared token cache (for multi-credential scenarios)
SharedTokenCacheCredential credential = new SharedTokenCacheCredentialBuilder()
.clientId("<client-id>")
.build();
Sovereign Clouds
import com.azure.identity.AzureAuthorityHosts;
// Azure Government
DefaultAzureCredential govCredential = new DefaultAzureCredentialBuilder()
.authorityHost(AzureAuthorityHosts.AZURE_GOVERNMENT)
.build();
// Azure China
DefaultAzureCredential chinaCredential = new DefaultAzureCredentialBuilder()
.authorityHost(AzureAuthorityHosts.AZURE_CHINA)
.build();
Error Handling
import com.azure.identity.CredentialUnavailableException;
import com.azure.core.exception.ClientAuthenticationException;
try {
DefaultAzureCredential credential = new DefaultAzureCredentialBuilder().build();
AccessToken token = credential.getToken(new TokenRequestContext()
.addScopes("https://management.azure.com/.default"));
} catch (CredentialUnavailableException e) {
// No credential could authenticate
System.out.println("Authentication failed: " + e.getMessage());
} catch (ClientAuthenticationException e) {
// Authentication error (wrong credentials, expired, etc.)
System.out.println("Auth error: " + e.getMessage());
}
Logging
Enable authentication logging for debugging.
// Via environment variable
// AZURE_LOG_LEVEL=verbose
// Or programmatically
DefaultAzureCredential credential = new DefaultAzureCredentialBuilder()
.enableAccountIdentifierLogging() // Log account info
.build();
Environment Variables
# DefaultAzureCredential configuration
AZURE_TENANT_ID=<tenant-id>
AZURE_CLIENT_ID=<client-id>
AZURE_CLIENT_SECRET=<client-secret>
# Managed Identity
AZURE_CLIENT_ID=<user-assigned-mi-client-id>
# Workload Identity (AKS)
AZURE_FEDERATED_TOKEN_FILE=/var/run/secrets/azure/tokens/azure-identity-token
# Logging
AZURE_LOG_LEVEL=verbose
# Authority host
AZURE_AUTHORITY_HOST=https://login.microsoftonline.com/
Best Practices
- Use DefaultAzureCredential - Works seamlessly from dev to production
- Managed Identity in Production - No secrets to manage, automatic rotation
- Azure CLI for Local Dev - Run
az loginbefore running your app - Least Privilege - Grant only required permissions to service principals
- Token Caching - Enabled by default, reduces auth round-trips
- Environment Variables - Use for CI/CD, not hardcoded secrets
Credential Selection Matrix
| Environment | Recommended Credential |
|---|---|
| Local Development | DefaultAzureCredential (uses Azure CLI) |
| Azure App Service | DefaultAzureCredential (uses Managed Identity) |
| Azure Functions | DefaultAzureCredential (uses Managed Identity) |
| Azure Kubernetes Service | WorkloadIdentityCredential |
| Azure VMs | DefaultAzureCredential (uses Managed Identity) |
| CI/CD Pipeline | EnvironmentCredential |
| Desktop App | InteractiveBrowserCredential |
| CLI Tool | DeviceCodeCredential |
Trigger Phrases
- "Azure authentication Java", "DefaultAzureCredential Java"
- "managed identity Java", "service principal Java"
- "Azure login Java", "Azure credentials Java"
- "AZURE_CLIENT_ID", "AZURE_TENANT_ID"
이 스킬의 파일
2azure-identity-java skill 질문
Claude Code에 azure-identity-java skill을 어떻게 설치하나요?
npx degit microsoft/skills/.github/plugins/azure-sdk-java/skills/azure-identity-java ~/.claude/skills/azure-identity-java를 실행합니다. Claude Code는 ~/.claude/skills(모든 프로젝트) 또는 .claude/skills(한 프로젝트)에서 skills를 로드하며, 설명이 작업과 일치할 때 skill을 사용합니다.
azure-identity-java skill을 사용할 수 있는 클라이언트는 무엇인가요?
Agent Skills 형식을 읽는 모든 클라이언트(Claude Code, Codex, Gemini CLI, claude.ai(ZIP으로 업로드))가 사용할 수 있습니다. skill 내 스크립트는 클라이언트가 코드 실행을 허용하는 경우에만 실행됩니다.
Azure Java 애플리케이션에 권장되는 인증 방식은 무엇인가요?
DefaultAzureCredential을 권장합니다. 이 방식은 여러 인증 방법을 시도하여 개발 및 운영 환경 모두에서 작동하기 때문입니다.
이 라이브러리를 사용하여 CI/CD 파이프라인에서 어떻게 인증할 수 있나요?
AZURE_TENANT_ID, AZURE_CLIENT_ID, AZURE_CLIENT_SECRET과 같은 환경 변수에서 인증 정보를 읽어오는 EnvironmentCredential을 사용할 수 있습니다.
Azure에서 호스팅되는 애플리케이션에 관리 ID를 어떻게 사용하나요?
App Service, Functions, AKS 또는 VM과 같은 서비스의 경우 ManagedIdentityCredential을 사용할 수 있으며, 시스템 할당 및 사용자 할당 ID를 모두 지원합니다.
로컬 개발 시에도 이 라이브러리를 사용할 수 있나요?
네, 로컬 'az login' 세션의 인증 정보를 활용하는 AzureCliCredential을 사용할 수 있습니다.