다음을 통해 공유


애플리케이션 구성 옵션

토큰을 인증하고 획득하려면 코드에서 새 공용 또는 기밀 클라이언트 애플리케이션을 초기화합니다. 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 .NET은 현재 포함된 웹 보기에 대한 UI를 포함하지 않기 때문에 https://localhost는 사용자가 대화형 인증에 시스템 브라우저를 사용할 수 있게 해줍니다.

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

  • RedirectUriOnAndroid = "msauth-00001111-aaaa-2222-bbbb-3333cccc4444://com.microsoft.identity.client.sample";
  • RedirectUriOnIos = $"msauth.{Bundle.ID}://auth";

Android에 대한 추가 정보는 Android의 조정된 인증을 참조하세요.

  • MSAL Android를 사용하여 앱을 빌드할 때 초기 redirect_uri단계에서 을(를) 구성하거나 나중에 추가할 수 있습니다.

    • 리디렉션 URI의 형식은 msauth://<yourpackagename>/<base64urlencodedsignature>입니다.
    • 예: redirect_uri = msauth://com.azuresamples.myapp/6/aB1cD2eF3gH4iJ5kL6-mN7oP8qR=
  • MSAL Android 앱 구성에 대한 자세한 내용은 MSAL Android 구성을 참조하세요.

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

    앱 등록 페이지의 리디렉션 URI 창 및 옵션을 보여 주는 스크린샷

기밀 클라이언트 앱의 리디렉션 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를 사용하여 클라이언트 애플리케이션을 인스턴스화하는 방법을 알아봅니다.