JavaScript용 Azure ID 클라이언트 라이브러리의 자격 증명 체인
Azure Id 클라이언트 라이브러리는 Azure Core 라이브러리의 TokenCredential 인터페이스를 구현하는 공용 클래스인 자격 증명 제공합니다. 자격 증명은 Microsoft Entra ID에서 액세스 토큰을 획득하기 위한 고유한 인증 흐름을 나타냅니다. 이러한 자격 증명을 개별적으로 선택하거나 함께 연결하여 순서가 지정된 인증 메커니즘을 구성할 수 있습니다.
- 개별 자격 증명은 속도와 확실성을 제공할 있습니다. 실패하면 자격 증명이 인증되지 않았음을 알 수 있습니다.
- 체인은 대체 방안을 제공합니다. 자격 증명이 인증에 실패하면 체인의 다음 자격 증명이 시도됩니다.
인증 흐름 디자인
Azure SDK 클라이언트 라이브러리를 사용하는 경우 첫 번째 단계는 Azure에 인증하는 것입니다. 개발 팀에서 사용되는 도구 및 IDE, 테스트 및 CI/CD와 같은 자동화 워크플로, Azure App Service와 같은 호스팅 플랫폼과 같이 고려해야 할 인증 방법에 대한 많은 옵션이 있습니다.
인증 흐름에 대해 다음과 같은 일반적인 진행률 중에서 선택합니다.
다양한 IDE 및 CLI를 사용하는 개발자가 Azure에 인증하기 위한
팀에 을(를) 사용합니다. 이렇게 하면 유연성을 극대화할 수 있습니다. 이러한 유연성은 성공하기 전까지 체인의 자격 증명의 유효성을 검사하는 성능 비용으로 제공됩니다. - 검색된 환경에 따라 자격 증명에서 다른 자격 증명으로 자동으로 전환됩니다.
- 선택된 자격 증명을 확인하려면 디버깅켜십시오.
도구 선택이 엄격하고 범위가 지정된 팀은
ChainedTokenCredential
을 사용하여를 수행합니다. 예를 들어 모두 동일한 IDE 또는 CLI를 인증하고 사용합니다. 이를 통해 팀은 정확한 자격 증명과 순서를 선택할 수 있으며, 이는 여전히 유연성을 제공하지만 성능 비용이 절감됩니다.- 실행 중인 환경에 관계없이 자격 증명에서 자격 증명으로 대체 경로를 선택합니다.
- 선택한 자격 증명을 확인하려면 디버깅을 활성화합니다.
모든 환경에서 자격 증명이 확실한
팀의 경우 if/else와 같은 제어 흐름 문을 사용하면 각 환경에서 선택한 자격 증명을 알 수 있습니다. - 다른 자격 증명 형식으로 대체되지 않습니다.
- 어떤 자격 증명이 지정되었기 때문에 선택되었는지 확인하기 위해 디버그할 필요가 없습니다.
연결된 자격 증명의 작동 방식
런타임에 자격 증명 체인은 시퀀스의 첫 번째 자격 증명을 사용하여 인증을 시도합니다. 해당 자격 증명이 액세스 토큰을 획득하지 못하면 액세스 토큰을 성공적으로 가져올 때까지 시퀀스의 다음 자격 증명이 시도됩니다. 다음 시퀀스 다이어그램은 이 동작을 보여 줍니다.
Azure ID 자격 증명 시퀀스 흐름을 보여 주는
유연성을 위해 DefaultAzureCredential 사용
DefaultAzureCredential는 규칙적인, 미리 구성된 자격 증명 체인입니다. 가장 일반적인 인증 흐름 및 개발자 도구와 함께 많은 환경을 지원하도록 설계되었습니다. 기본 체인은 그래픽 형식으로 다음과 같습니다.
DefaultAzureCredential 인증 흐름을 보여 주는
DefaultAzureCredential
자격 증명을 시도하는 순서는 다음과 같습니다.
주문 | 자격 증명 | 묘사 |
---|---|---|
1 | 환경 | DefaultAzureCredential 이러한 값을 사용하여 Azure에 앱을 인증합니다. 이 메서드는 서버 환경에서 가장 자주 사용되지만 로컬로 개발할 때도 사용할 수 있습니다. |
2 | 워크로드 아이덴티티 | 앱이 워크로드 ID를 사용하도록 설정된 Azure 호스트에 배포된 경우 해당 계정을 인증합니다. |
3 | 매니지드 아이덴티티 | 관리 ID를 사용하도록 설정된 Azure 호스트에 앱을 배포하는 경우 해당 관리 ID를 사용하여 Azure에 앱을 인증합니다. |
4 | Azure CLI | 개발자가 Azure CLI의 az login 명령을 사용하여 Azure에 인증한 경우 동일한 계정을 사용하여 Azure에 앱을 인증합니다. |
5 | Azure PowerShell | 개발자가 Azure PowerShell의 Connect-AzAccount cmdlet을 사용하여 Azure에 인증한 경우 동일한 계정을 사용하여 Azure에 앱을 인증합니다. |
6 | Azure Developer CLI | 개발자가 Azure Developer CLI의 azd auth login 명령을 사용하여 Azure에 인증한 경우 해당 계정으로 인증합니다. |
가장 간단한 형식으로 다음과 같이 매개 변수가 없는 DefaultAzureCredential
버전을 사용할 수 있습니다.
import { DefaultAzureCredential } from "@azure/identity";
import { BlobServiceClient } from "@azure/storage-blob";
// Acquire a credential object
const credential = new DefaultAzureCredential();
const blobServiceClient = new BlobServiceClient(
"https://<my_account_name>.blob.core.windows.net",
credential
);
자격 증명은 환경에 전반적으로 적용됩니다.
DefaultAzureCredential
는 환경 변수의 존재 여부를 확인합니다. 호스트 컴퓨터의 시스템 수준에서 이러한 환경 변수를 추가하거나 수정할 수 있습니다. 이러한 변경 내용은 전역적으로 적용되므로 해당 컴퓨터에서 실행되는 모든 앱에서 런타임에 DefaultAzureCredential
동작을 변경합니다.
세분성을 위해 ChainedTokenCredential 사용
ChainedTokenCredential은 앱의 요구에 맞게 자격 증명을 추가할 수 있도록 설계된 빈 체인입니다. 예를 들어 다음 예제에서는 ManagedIdentityCredential
인스턴스를 추가한 다음 AzureCliCredential
인스턴스를 추가합니다.
import {
ChainedTokenCredential,
ManagedIdentityCredential,
AzureCliCredential
} from "@azure/identity";
const credential = ChainedTokenCredential(
ManagedIdentityCredential({ clientId: "<YOUR_CLIENT_ID>" }),
AzureCliCredential()
);
앞의 코드 샘플은 두 개의 자격 증명으로 구성된 맞춤형 자격 증명 체인을 만듭니다. 사용자 할당 관리 ID 변형인 ManagedIdentityCredential
을(를) 먼저 시도하고, 필요할 경우 AzureCliCredential
을(를) 시도합니다. 그래픽으로 표현된 체인은 다음과 같습니다.
관리 ID 및 Azure CLI에 대한 Azure ID 자격 증명 체인을 보여 주는
팁
성능을 향상시키려면 프로덕션 환경의 자격 증명 순서를 최적화하십시오. 로컬 개발 환경에서 사용하기 위한 자격 증명을 마지막으로 추가해야 합니다.
연결된 자격 증명을 디버깅합니다
자격 증명 체인을 디버그하려면 Azure SDK 로깅을 사용하도록 설정합니다.