AAD 애플리케이션 서비스 주체를 사용하여 Azure Sphere Public API에 액세스
Important
Azure Sphere(레거시) 설명서입니다. Azure Sphere(레거시)는 2027년 9월 27일에 사용 중지되며 사용자는 이 시간까지 Azure Sphere(통합)로 마이그레이션해야 합니다. TOC 위에 있는 버전 선택기를 사용하여 Azure Sphere(통합) 설명서를 볼 수 있습니다.
자동화된 도구에는 완전히 권한 있는 사용자로 인증하는 대신 제한된 액세스 및 비대화형 인증이 필요합니다. 이 작업은 애플리케이션이 특정 권한으로 로그인할 수 있도록 하는 서비스 주체를 사용하여 수행할 수 있습니다. 간단히 말해서, Azure 서비스 주체는 애플리케이션이 Azure Active Directory에 등록될 때 Azure에서 생성되는 ID로 작동합니다.
이 모드에서는 AAD(Azure Active Directory) 테넌트에서 애플리케이션에 대한 액세스 권한이 서비스 주체에 의해 정의되므로 리소스에 액세스할 때 인증 및 권한 부여가 가능합니다.
서비스 주체, 클라이언트 인증서 및 클라이언트 비밀에 사용할 수 있는 인증 방법에는 두 가지 유형이 있습니다.
필수 조건
- Azure Active Directory 테넌트(테넌트 도메인).
- Azure Sphere 테넌트.
- 서비스 주체 클라이언트 암호 또는 PEM 형식으로 서비스 주체를 만드는 데 사용되는 X509 인증서입니다.
- Azure 테넌트에 Azure Sphere 공용 API 애플리케이션 ID를 추가합니다.
1단계: 서비스 주체 등록
- Azure Portal의 왼쪽 탐색 창에서 Azure Active Directory를 클릭합니다.
- Azure AD에 애플리케이션을 등록하고 서비스 주체를 만듭니다. 클라이언트 ID를 기록해 둡니다.
- 인증 유형을 선택합니다. 서비스 주체에 사용할 수 있는 인증에는 다음 두 가지 유형이 있습니다.
- 클라이언트 암호
- 클라이언트 인증서
2단계: Azure Sphere 테넌트에 서비스 주체 추가 및 역할 할당
참고 항목
이 단계를 시작하기 전에 다음이 있는지 확인합니다.
- Azure Sphere 테넌트: Azure Sphere CLI를 사용하여 **azsphere tenant show-selected** 명령을 실행합니다.
- Azure 테넌트 ID: Azure Portal을 통해 테넌트 ID를 찾습니다. Azure Active Directory 테넌트 ID를 복사합니다.
- 이 애플리케이션과 연결된 서비스 주체 개체의 고유 ID를 찾습니다.
Azure Sphere는 서비스 주체를 다른 사용자로 취급합니다. 서비스 주체를 사용하여 토큰을 획득하려면 먼저 서비스 주체 사용자를 Azure Sphere 테넌트에 추가한 다음 Azure Sphere CLI를 사용하여 Azure Sphere 테넌트에서 사용자에게 역할을 할당합니다.
사용자 ID는 ObjectID@<TenantID.onmicrosoft.com>> 생성<할 수 있습니다.
다음 예제에서는 Azure Sphere 테넌트 ID에서 개체 ID xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
와 Azure AD 테넌tttttttt-tttt-tttt-tttt-tttttttttttt
트 ID zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz
의 조합을 사용하여 사용자를 만든 다음, 이 사용자에 대한 기여자 역할을 추가합니다.
Azure Sphere CLI를 사용하여 Azure Sphere 로그인으로 로그인합니다.
azsphere login
필요한 테넌트 선택:
azsphere tenant select --tenant tttttttt-tttt-tttt-tttt-tttttttttttt
필요한 역할에 사용자를 추가하려면 다음을 수행합니다.
azsphere role add --role Contributor --user xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx@zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz.onmicrosoft.com
3단계: 애플리케이션 등록 포털을 사용하여 클라이언트 비밀 또는 클라이언트 인증서 등록
클라이언트 비밀 및 클라이언트 인증서를 사용하면 애플리케이션이 웹 주소 지정 가능 위치에서 토큰을 받을 때(HTTPS 체계 사용) 인증 서비스에 자신을 식별할 수 있습니다. Azure Active Directory를 사용하여 인증할 때 클라이언트 자격 증명 시나리오에 클라이언트 암호 대신 인증서를 사용하는 것이 좋습니다.
애플리케이션 등록에 대한 클라이언트 암호 또는 클라이언트 인증서를 사용하여 AZURE Sphere 공용 API(PAPI)에 대한 액세스 토큰을 가져올 수 있습니다.
클라이언트 암호를 사용하여 애플리케이션 구성
클라이언트 비밀에 애플리케이션을 등록하려면 다음을 수행합니다.
Azure Portal의 왼쪽 탐색 창에서 Azure Active Directory를 클릭합니다.
왼쪽 창에서 인증서 및 비밀 클라이언트 비밀> 섹션 >새 클라이언트 비밀을 선택합니다.
설명을 입력하고 유효 기간을 선택한 다음 추가를 선택합니다. 클라이언트 암호가 생성되고 클라이언트 비밀 값이 표시됩니다.
나중에 키를 검색할 수 없으므로 클라이언트 비밀 값을 복사합니다.
애플리케이션으로 로그인할 Azure Sphere 공용 API 애플리케이션 ID를 사용하여 클라이언트 비밀 값을 제공합니다. 애플리케이션에서 검색할 수 있는 키 값을 저장합니다.
Important
클라이언트 비밀 값은 중요한 보안 자격 증명입니다. 다른 사람과 클라이언트 암호를 공유하거나 클라이언트 애플리케이션 내에 배포하지 마세요. 액세스 정책 및 감사 기록을 완전히 제어하여 중앙 집중식 비밀 관리를 제공하는 Azure Key Vault 서비스를 사용하는 것이 좋습니다.
다음 샘플 코드를 사용합니다.
IConfidentialClientApplication app =
ConfidentialClientApplicationBuilder.Create("<<App registration Client ID>>")
.WithClientSecret("<<App registration Client Secret Value>>")
.WithAuthority(AzureCloudInstance.AzurePublic, "<<3rd Party Tenant Id>>")
.Build();
string[] scopes = new[] { "https://firstparty.sphere.azure.net/api/.default" };
AuthenticationResult result = await app.AcquireTokenForClient(scopes).ExecuteAsync();
string accessToken=result.AccessToken;
클라이언트 인증서를 사용하여 애플리케이션 구성
클라이언트 인증서를 설정하려면 다음을 수행합니다.
- Azure Portal의 왼쪽 탐색 창에서 Azure Active Directory를 클릭합니다.
- 앱 등록 이동하여 1단계: 서비스 주체 등록에서 만든 애플리케이션을 선택합니다.
- 왼쪽 창에서 인증서 및 비밀>인증서 업로드 인증서를>선택합니다. 인증서(기존 인증서 또는 내보낸 자체 서명된 인증서)를 선택합니다.
- 애플리케이션 등록 포털에서 애플리케이션에 인증서를 등록한 후 클라이언트 애플리케이션 코드에서 인증서를 사용하도록 설정합니다.
클라이언트 인증서에 애플리케이션을 등록하려면 다음 샘플 코드를 사용합니다.
IConfidentialClientApplication app =
ConfidentialClientApplicationBuilder.Create("<<App registration Client ID>>")
.WithCertificate("<<App registration Certificate>>")
.WithAuthority(AzureCloudInstance.AzurePublic, "<<3rd Party Tenant Id>>")
.Build();
string[] scopes = new[] { "https://firstparty.sphere.azure.net/api/.default" };
AuthenticationResult result = await app.AcquireTokenForClient(scopes).ExecuteAsync();
string accessToken=result.AccessToken;
참고 항목
IConfidentialClient를 사용하려면 MSAL.Net 라이브러리를 추가해야 합니다.