애플리케이션 구성 옵션

토큰을 인증하고 획득하려면 코드에서 새 공용 또는 기밀 클라이언트 애플리케이션을 초기화합니다. MSAL(Microsoft 인증 라이브러리)에서 클라이언트 앱을 초기화하는 경우 몇 가지 구성 옵션을 설정할 수 있습니다. 이러한 옵션은 다음 두 그룹으로 분류됩니다.

인증 기관

인증 기관은 MSAL이 토큰을 요청할 수 있는 디렉터리를 나타내는 URL입니다.

일반적인 인증 기관은 다음과 같습니다.

공동 인증 기관 URL 사용 시기
https://login.microsoftonline.com/<tenant>/ 특정 조직의 사용자만 로그인합니다. URL의 <tenant>는 Microsoft Entra 테넌트(GUID)의 테넌트 ID 또는 테넌트 도메인입니다.
https://login.microsoftonline.com/common/ 회사 및 학교 계정 또는 개인 Microsoft 계정을 보유한 사용자를 로그인합니다.
https://login.microsoftonline.com/organizations/ 회사 및 학교 계정을 보유한 사용자를 로그인합니다.
https://login.microsoftonline.com/consumers/ 개인 Microsoft 계정(MSA)만 보유한 사용자를 로그인합니다.

코드에서 지정하는 인증 기관은 Azure Portal의 앱 등록에서 앱에 대해 지정한 지원되는 계정 유형과 일치해야 합니다.

인증 기관은 다음과 같을 수 있습니다.

  • Microsoft Entra 클라우드 인증 기관입니다.
  • Azure AD B2C 인증 기관. B2C 세부 정보를 참조하세요.
  • AD FS(Active Directory Federation Services) 인증 기관. AD FS 지원을 참조하세요.

Microsoft Entra 클라우드 인증 기관에는 다음 두 부분이 있습니다.

  • ID 공급자 '인스턴스'
  • 앱의 로그인 '대상 그룹'

인스턴스와 대상 그룹을 연결하여 기관 URL로 제공할 수 있습니다. 다음 다이어그램에서는 인증 기관 URL을 구성하는 방법을 보여 줍니다.

기관 URL을 구성하는 방법

클라우드 인스턴스

'인스턴스'는 앱이 Azure 퍼블릭 클라우드 또는 국가별 클라우드의 사용자를 로그인하는지 여부를 지정하는 데 사용됩니다. 코드에서 MSAL을 사용하여, 열거형을 사용하거나 URL을 국가별 클라우드 인스턴스Instance 멤버로 전달하여 Azure 클라우드 인스턴스를 설정할 수 있습니다.

InstanceAzureCloudInstance가 모두 지정된 경우 MSAL.NET에서 명시적 예외를 throw합니다.

인스턴스를 지정하지 않으면 앱은 Azure 퍼블릭 클라우드 인스턴스(URL https://login.onmicrosoftonline.com의 인스턴스)를 대상으로 지정합니다.

애플리케이션 대상 그룹

로그인 대상 그룹은 앱의 비즈니스 요구 사항에 따라 달라집니다.

  • LOB(기간 업무) 애플리케이션 개발자인 경우 조직에서만 사용되는 단일 테넌트 애플리케이션을 빌드할 것입니다. 이 경우 테넌트 ID(Microsoft Entra 인스턴스의 ID) 또는 Microsoft Entra 인스턴스와 연결된 도메인 이름을 기준으로 조직을 지정합니다.
  • ISV인 경우에는 모든 조직 또는 일부 조직(다중 테넌트 앱)에서 회사 및 학교 계정을 보유한 사용자를 로그인해야 합니다. 그러나 개인 Microsoft 계정을 보유한 사용자도 로그인해야 할 수 있습니다.

코드/구성에서 대상 그룹을 지정하는 방법

코드에서 MSAL을 사용하여 다음 값 중 하나를 사용하여 대상 그룹을 지정합니다.

  • Microsoft Entra 인증 기관 대상 그룹 목록
  • 다음 형식의 테넌트 ID
    • 단일 테넌트 애플리케이션의 경우, GUID(Microsoft Entra 인스턴스의 ID)
    • Microsoft Entra 인스턴스와 연결된 도메인 이름(단일 테넌트 애플리케이션에도 해당)
  • Microsoft Entra 인증 기관 대상 그룹 열거형 대신 테넌트 ID로서 다음 자리 표시자 중 하나입니다.
    • 다중 테넌트 애플리케이션의 경우 organizations
    • 개인 계정만 보유한 사용자를 로그인하려면 consumers
    • 회사 및 학교 계정 또는 개인 Microsoft 계정을 보유한 사용자를 로그인하려면 common

Microsoft Entra 인증 기관 대상 그룹과 테넌트 ID를 모두 지정하면 MSAL에서 의미 있는 예외를 throw합니다.

테넌트 수만큼 대상 그룹을 지정하는 것이 좋으며 여기에 배포된 애플리케이션에는 게스트 사용자가 있습니다. 애플리케이션에 외부 사용자가 있는 경우 commonorganization의 엔드포인트를 피하는 것이 가장 좋습니다. 대상 그룹을 지정하지 않으면 앱은 Microsoft Entra ID 및 개인 Microsoft 계정을 대상 그룹으로 지정하고 common이 지정된 것처럼 작동합니다.

유효한 대상 그룹

애플리케이션의 유효한 대상 그룹은 앱에서 설정한 대상 그룹과 앱 등록에 지정된 대상 그룹의 최소(교집합이 있는 경우)가 됩니다. 실제로 앱 등록 환경에서 앱 대상 그룹(지원되는 계정 유형)을 지정할 수 있습니다. 자세한 내용은 빠른 시작: Microsoft ID 플랫폼을 사용하여 애플리케이션 등록을 참조하세요.

현재, 앱에서 개인 Microsoft 계정만 보유한 사용자를 로그인하는 유일한 방법은 다음 설정을 모두 구성하는 것입니다.

  • 앱 등록 대상 그룹을 Work and school accounts and personal accounts로 설정합니다.
  • 코드/구성의 대상 그룹을 AadAuthorityAudience.PersonalMicrosoftAccount(또는 TenantID ="consumers")로 설정합니다.

Client ID

클라이언트 ID는 앱이 등록될 때 Microsoft Entra ID에서 앱에 할당한 고유 애플리케이션(클라이언트) ID입니다. 애플리케이션(클라이언트) IDID>애플리케이션>엔터프라이즈 애플리케이션의 애플리케이션 개요 페이지에서 찾을 수 있습니다.

리디렉션 URI

리디렉션 URI는 ID 공급자가 보안 토큰을 다시 보낼 URI입니다.

공용 클라이언트 앱의 리디렉션 URI

MSAL을 사용하는 공용 클라이언트 앱 개발자인 경우:

  • 데스크톱 또는 UWP(유니버설 Windows 플랫폼) 애플리케이션(MSAL.NET 4.1 이상)에서 .WithDefaultRedirectUri()를 사용해야 합니다. .WithDefaultRedirectUri() 메서드는 퍼블릭 클라이언트 애플리케이션의 리디렉션 URI 속성을 퍼블릭 클라이언트 애플리케이션의 기본 권장 리디렉션 URI로 설정합니다.

    플랫폼 리디렉션 URI
    데스크톱 앱(.NET Framework) https://login.microsoftonline.com/common/oauth2/nativeclient
    UWP WebAuthenticationBroker.GetCurrentApplicationCallbackUri()의 값입니다. 이렇게 하면 등록해야 하는 WebAuthenticationBroker.GetCurrentApplicationCallbackUri()의 결과로 값을 설정하여 브라우저에서 SSO(Single Sign-On)를 사용할 수 있습니다.
    .NET https://localhost 를 사용하면 현재 .NET에 포함된 웹 보기에 대한 UI가 없으므로 사용자가 대화형 인증에 시스템 브라우저를 사용할 수 있습니다.
  • Broker 리디렉션 URI를 지원하지 않는 Xamarin Android 및 iOS 애플리케이션을 빌드하는 경우에는 리디렉션 URI를 추가할 필요가 없습니다. Xamarin Android 및 iOS의 경우 자동으로 msal{ClientId}://auth로 설정됩니다.

  • 앱 등록에서 리디렉션 URI를 구성합니다.

    앱 등록 리디렉션 URI

RedirectUri 속성을 사용하여 리디렉션 URI를 재정의할 수 있습니다(예: broker를 사용하는 경우). 다음은 해당 시나리오를 위한 리디렉션 URI의 몇 가지 예입니다.

  • RedirectUriOnAndroid = "msauth-5a434691-ccb2-4fd1-b97b-b64bcfbc03fc://com.microsoft.identity.client.sample";
  • RedirectUriOnIos = $"msauth.{Bundle.ID}://auth";

iOS에 대한 추가 정보는 Microsoft Authenticator를 사용하는 iOS 애플리케이션을 ADAL.NET에서 MSAL.NET로 마이그레이션iOS에서 broker 활용을 참조하세요. Android에 대한 추가 정보는 Android의 조정된 인증을 참조하세요.

기밀 클라이언트 앱의 리디렉션 URI

웹앱의 경우 리디렉션 URI(또는 회신 URL)는 Microsoft Entra ID가 애플리케이션에 토큰을 다시 보내는 데 사용하는 URI입니다. 이 URI는 기밀 앱이 이 중 하나인 경우 웹앱/웹 API의 URL일 수 있습니다. 리디렉션 URI는 앱 등록에서 등록해야 합니다. 이 등록은 처음에 로컬로 테스트한 앱을 배포할 때 특히 중요합니다. 그런 다음 애플리케이션 등록 포털에서 배포된 앱의 회신 URL을 추가해야 합니다.

디먼 앱의 경우 리디렉션 URI를 지정할 필요가 없습니다.

클라이언트 암호

이 옵션은 기밀 클라이언트 앱의 클라이언트 암호를 지정합니다. 클라이언트 암호(앱 암호)는 애플리케이션 등록 포털이 제공하거나 PowerShell Microsoft Entra ID, PowerShell AzureRM 또는 Azure CLI를 사용하여 앱을 등록하는 동안 Microsoft Entra ID에 제공됩니다.

로깅

디버깅 및 인증 실패 문제 해결 시나리오를 지원하기 위해 MSAL은 기본 제공 로깅 지원을 제공합니다. 각 라이브러리의 로깅은 다음 문서에서 설명합니다.

다음 단계

MSAL.NET을 사용하여 클라이언트 애플리케이션을 인스턴스화하고 MSAL.js를 사용하여 클라이언트 애플리케이션을 인스턴스화하는 방법을 알아봅니다.