국가별 클라우드 환경에서 MSAL 사용
이 문서의 내용
소버린 클라우드라고도 하는 국가별 클라우드 는 물리적으로 격리된 Azure 인스턴스입니다. 해당 Azure 지역은 지리적 경계 내에서 데이터 보존, 주권, 준수 요구 사항을 적용하는 데 도움이 됩니다.
Microsoft의 전 세계 클라우드 외에도 MSAL(Microsoft 인증 라이브러리)을 사용하면 국가별 클라우드의 애플리케이션 개발자가 보안 웹 API를 인증하고 호출하기 위해 토큰을 획득할 수 있습니다. 그러한 웹 API에는 Microsoft Graph 또는 기타 Microsoft API가 있습니다.
글로벌 Azure 클라우드를 포함하여 Microsoft Entra ID는 다음국가별 클라우드에 배포됩니다.
이 가이드에서는 Azure Government 클라우드 환경에서 회사 및 학교 계정에 로그인하고, 액세스 토큰을 가져오고, Microsoft Graph API를 호출하는 방법을 보여 줍니다.
Azure 독일(Microsoft Cloud Deutschland)
Warning
Azure 독일(Microsoft Cloud Deutschland)은 2021년 10월 29일에 종료 됩니다. 해당 날짜 이전에 글로벌 Azure의 지역으로 마이그레이션하지 않도록 선택한 서비스 및 애플리케이션에 액세스할 수 없습니다.
Azure 독일에서 애플리케이션을 마이그레이션하지 않은 경우 Azure 독일에서 마이그레이션에 대한 Microsoft Entra 정보 에 따라 시작하세요.
필수 조건
시작하기 전에 해당 필수 구성 요소를 충족하는지 확인합니다.
적절한 ID 선택
Azure Government 애플리케이션은 Microsoft Entra Government ID 및 Microsoft Entra 퍼블릭 ID를 사용하여 사용자를 인증할 수 있습니다. 해당 ID 중 하나를 사용할 수 있으므로 사용자의 시나리오를 위해 선택해야 하는 인증 기관 엔드포인트를 결정합니다.
Microsoft Entra 퍼블릭: 조직에 Microsoft 365(퍼블릭 또는 GCC) 또는 다른 애플리케이션을 지원하기 위한 Microsoft Entra 퍼블릭 테넌트가 이미 있는 경우 일반적으로 사용됩니다.
Microsoft Entra Government: 조직에 이미 Office 365(GCC High 또는 DoD)를 지원하기 위한 Microsoft Entra Government 테넌트가 있는 경우 또는 Microsoft Entra Government에서 새 테넌트를 만드는 경우 일반적으로 사용됩니다.
결정한 후에는 앱 등록을 어디서 수행할지 특별히 고려해야 합니다. Azure Government 애플리케이션에 대해 Microsoft Entra 퍼블릭 ID를 선택하는 경우 Microsoft Entra 퍼블릭 테넌트에서 애플리케이션을 등록해야 합니다.
Azure Government에서 구독 가져오기
Azure Government 구독을 가져오려면 Azure Government에서 구독 관리 및 연결 을 참조하세요.
Azure Government 구독이 없는 경우, 시작하기 전에 체험 계정 을 만듭니다.
특정 프로그래밍 언어를 통해 국가별 클라우드를 사용하는 방법에 대한 자세한 내용을 보려면 다음에서 해당 언어와 일치하는 탭을 선택합니다.
MSAL.NET를 사용하여 로그인하고, 토큰을 획득하고, 국가별 클라우드에서 Microsoft Graph API를 호출할 수 있습니다.
다음 자습서에서는 ASP.NET Core 웹앱을 빌드하는 방법을 보여 줍니다. 앱은 OpenID Connect를 사용하여 국가별 클라우드에 속한 조직의 회사 및 학교 계정으로 로그인합니다.
소버린 클라우드에 대해 MSAL.js 애플리케이션을 사용하도록 설정하려면 다음을 수행합니다.
다음은 인증 기관의 예입니다.
"authority": "https://login.microsoftonline.us/Enter_the_Tenant_Info_Here"
다음은 범위가 있는 Microsoft Graph 엔드포인트의 예입니다.
"endpoint" : "https://graph.microsoft.us/v1.0/me"
"scope": "User.Read"
소버린 클라우드로 사용자를 인증하고 Microsoft Graph를 호출하기 위한 최소 코드는 다음과 같습니다.
const msalConfig = {
auth: {
clientId: "Enter_the_Application_Id_Here",
authority: "https://login.microsoftonline.us/Enter_the_Tenant_Info_Here",
redirectUri: "/",
}
};
// Initialize MSAL
const msalObj = new PublicClientApplication(msalConfig);
// Get token using popup experience
try {
const graphToken = await msalObj.acquireTokenPopup({
scopes: ["User.Read"]
});
} catch(error) {
console.log(error)
}
// Call the Graph API
const headers = new Headers();
const bearer = `Bearer ${graphToken}`;
headers.append("Authorization", bearer);
fetch("https://graph.microsoft.us/v1.0/me", {
method: "GET",
headers: headers
})
소버린 클라우드용 MSAL Python 애플리케이션을 사용하도록 설정하려면 다음을 수행하세요.
클라우드에 따라 특정 포털에 애플리케이션을 등록합니다. 포털을 선택하는 방법에 대한 자세한 내용은 앱 등록 엔드포인트 를 참조하세요.
다음에 설명된 클라우드에 따라 구성에 대한 몇 가지 변경 내용이 포함된 리포지토리의 샘플 을 사용합니다.
애플리케이션을 등록한 클라우드에 따라 특정 권한을 사용합니다. 다른 클라우드의 인증 기관에 대한 자세한 내용은 Microsoft Entra 인증 엔드포인트 를 참조하세요.
다음은 인증 기관의 예입니다.
"authority": "https://login.microsoftonline.us/Enter_the_Tenant_Info_Here"
Microsoft Graph API를 호출하려면 사용 중인 클라우드와 관련된 엔드포인트 URL이 필요합니다. 모든 국가별 클라우드의 Microsoft Graph 엔드포인트를 찾으려면 Microsoft Graph 및 Graph 탐색기 서비스 루트 엔드포인트 를 참조하세요.
다음은 범위가 있는 Microsoft Graph 엔드포인트의 예입니다.
"endpoint" : "https://graph.microsoft.us/v1.0/me"
"scope": "User.Read"
소버린 클라우드용 Java 애플리케이션에 MSAL을 사용하도록 설정하려면 다음을 수행합니다.
클라우드에 따라 특정 포털에 애플리케이션을 등록합니다. 포털을 선택하는 방법에 대한 자세한 내용은 앱 등록 엔드포인트 를 참조하세요.
다음에 언급된 클라우드에 따라 구성에 대한 몇 가지 변경 내용이 포함된 리포지토리의 샘플 을 사용합니다.
애플리케이션을 등록한 클라우드에 따라 특정 권한을 사용합니다. 다른 클라우드의 인증 기관에 대한 자세한 내용은 Microsoft Entra 인증 엔드포인트 를 참조하세요.
다음은 인증 기관의 예입니다.
"authority": "https://login.microsoftonline.us/Enter_the_Tenant_Info_Here"
다음은 범위를 포함하는 그래프 엔드포인트의 예입니다.
"endpoint" : "https://graph.microsoft.us/v1.0/me"
"scope": "User.Read"
iOS 및 macOS용 MSAL을 사용하여 국가별 클라우드에서 토큰을 획득할 수 있지만 만들 때 추가 구성이 필요합니다MSALPublicClientApplication
.
예를 들어 애플리케이션을 국가별 클라우드의 다중 테넌트 애플리케이션(여기서는 미국 정부)으로 만들려면 다음을 작성할 수 있습니다.
MSALAADAuthority *aadAuthority =
[[MSALAADAuthority alloc] initWithCloudInstance:MSALAzureUsGovernmentCloudInstance
audienceType:MSALAzureADMultipleOrgsAudience
rawTenant:nil
error:nil];
MSALPublicClientApplicationConfig *config =
[[MSALPublicClientApplicationConfig alloc] initWithClientId:@"<your-client-id-here>"
redirectUri:@"<your-redirect-uri-here>"
authority:aadAuthority];
NSError *applicationError = nil;
MSALPublicClientApplication *application =
[[MSALPublicClientApplication alloc] initWithConfiguration:config error:&applicationError];
iOS 및 macOS용 MSAL을 사용하여 국가별 클라우드에서 토큰을 획득할 수 있지만 만들 때 추가 구성이 필요합니다MSALPublicClientApplication
.
예를 들어 애플리케이션을 국가별 클라우드의 다중 테넌트 애플리케이션(여기서는 미국 정부)으로 만들려면 다음을 작성할 수 있습니다.
let authority = try? MSALAADAuthority(cloudInstance: .usGovernmentCloudInstance, audienceType: .azureADMultipleOrgsAudience, rawTenant: nil)
let config = MSALPublicClientApplicationConfig(clientId: "<your-client-id-here>", redirectUri: "<your-redirect-uri-here>", authority: authority)
if let application = try? MSALPublicClientApplication(configuration: config) { /* Use application */}
다음 단계
각 클라우드의 Azure Portal URL 및 토큰 엔드포인트 목록은 국가별 클라우드 인증 엔드포인트 를 참조하세요.
국가별 클라우드 설명서: