토큰을 인증하고 획득하려면 코드에서 새 공용 또는 기밀 클라이언트 애플리케이션을 초기화합니다. 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을 구성하는 방법을 보여 줍니다.
클라우드 인스턴스
'인스턴스'는 앱이 Azure 퍼블릭 클라우드 또는 국가별 클라우드의 사용자를 로그인하는지 여부를 지정하는 데 사용됩니다. 코드에서 MSAL을 사용하면 열거형을 사용하거나 URL을 국가별 클라우드 인스턴스 에 멤버로 전달하여 Azure 클라우드 인스턴스를 Instance
설정할 수 있습니다.
MSAL.NET 둘 다 Instance
AzureCloudInstance
지정된 경우 명시적 예외를 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
- 다중 테넌트 애플리케이션의 경우
MSAL은 Microsoft Entra 기관 대상 그룹 및 테넌트 ID를 모두 지정하는 경우 의미 있는 예외를 throw합니다.
대상 그룹을 지정하는 것이 좋습니다. 많은 테넌트와 테넌트에 배포된 애플리케이션에는 게스트 사용자가 있기 때문입니다. 애플리케이션이 외부 사용자용인 경우 엔드포인트 및 common
엔드포인트를 organization
피합니다. 대상 그룹을 지정하지 않으면 앱은 Microsoft Entra ID 및 개인 Microsoft 계정을 대상 그룹으로 대상으로 지정하고 지정된 것처럼 common
동작합니다.
유효한 대상 그룹
애플리케이션의 유효한 대상 그룹은 앱에서 설정한 대상 그룹과 앱 등록에 지정된 대상 그룹의 최소(교집합이 있는 경우)가 됩니다. 실제로 앱 등록 환경을 사용하면 앱의 대상 그룹(지원되는 계정 유형)을 지정할 수 있습니다. 자세한 내용은 빠른 시작: Microsoft ID 플랫폼에 애플리케이션 등록을 참조하세요.
현재, 앱에서 개인 Microsoft 계정만 보유한 사용자를 로그인하는 유일한 방법은 다음 설정을 모두 구성하는 것입니다.
- 앱 등록 대상 그룹을
Work and school accounts and personal accounts
로 설정합니다. - 코드/구성의 대상 그룹을
AadAuthorityAudience.PersonalMicrosoftAccount
(또는TenantID
="consumers")로 설정합니다.
클라이언트 ID
클라이언트 ID는 앱이 등록되었을 때 Microsoft Entra ID로 앱에 할당된 고유한 애플리케이션(클라이언트) ID 입니다. Entra IDEnterprise 앱에서 애플리케이션의 개요 페이지에서 애플리케이션>를 찾을 수 있습니다.
리디렉션 URI
리디렉션 URI는 ID 공급자가 보안 토큰을 다시 보내는 URI입니다.
공용 클라이언트 앱의 리디렉션 URI
MSAL을 사용하는 공용 클라이언트 앱 개발자인 경우:
데스크톱 애플리케이션에서 사용
.WithDefaultRedirectUri()
하려고 합니다(MSAL.NET 4.1 이상). 이 메서드는.WithDefaultRedirectUri()
공용 클라이언트 애플리케이션의 리디렉션 URI 속성을 공용 클라이언트 애플리케이션에 대한 기본 권장 리디렉션 URI로 설정합니다.플랫폼 리디렉션 URI 데스크톱 앱(.NET Framework) https://login.microsoftonline.com/common/oauth2/nativeclient
유니버설 윈도우 플랫폼 (UWP) WebAuthenticationBroker.GetCurrentApplicationCallbackUri()
의 값입니다. 이렇게 하면 등록해야 하는 WebAuthenticationBroker.GetCurrentApplicationCallbackUri()의 결과로 값을 설정하여 브라우저에서 SSO(Single Sign-On)를 사용할 수 있습니다.닷넷 .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=
- 리디렉션 URI의 형식은
MSAL Android 앱 구성에 대한 자세한 내용은 MSAL Android 구성을 참조하세요.
앱 등록에서 리디렉션 URI를 구성합니다.
기밀 클라이언트 앱의 리디렉션 URI
웹앱의 경우 리디렉션 URI(또는 회신 URL)는 Microsoft Entra ID가 애플리케이션에 토큰을 다시 보내는 데 사용하는 URI입니다. 이 URI는 기밀 앱이 이 중 하나인 경우 웹앱/웹 API의 URL일 수 있습니다. 리디렉션 URI는 앱 등록에서 등록해야 합니다. 이 등록은 처음에 로컬로 테스트한 앱을 배포할 때 특히 중요합니다. 그런 다음 애플리케이션 등록 포털에서 배포된 앱의 회신 URL을 추가해야 합니다.
디먼 앱의 경우 리디렉션 URI를 지정할 필요가 없습니다.
애플리케이션 자격 증명
기밀 클라이언트 애플리케이션의 경우 자격 증명을 효과적으로 관리하는 것이 중요합니다. 자격 증명은 페더레이션된 자격 증명(권장), 인증서 또는 클라이언트 암호일 수 있습니다.
페더레이션 ID 자격 증명
페더레이션 ID 자격 증명은 워크로드 ID 페더레이션을 사용하여 비밀을 관리할 필요 없이 GitHub Actions, Kubernetes에서 실행되는 워크로드 또는 Azure 외의 컴퓨팅 플랫폼에서 실행되는 워크로드가 Microsoft Entra가 보호하는 리소스에 접근하도록 허용하는 자격 증명 유형입니다.
인증서
이 옵션은 기밀 클라이언트 앱에 대한 인증서를 지정합니다. 퍼블릭 키라고도 하는 인증서는 클라이언트 암호보다 더 안전한 것으로 간주되기 때문에 권장되는 자격 증명 유형입니다.
클라이언트 암호
이 옵션은 기밀 클라이언트 앱의 클라이언트 암호를 지정합니다. 클라이언트 암호(앱 암호)는 애플리케이션 등록 포털이 제공하거나 PowerShell Microsoft Entra ID, PowerShell AzureRM 또는 Azure CLI를 사용하여 앱을 등록하는 동안 Microsoft Entra ID에 제공됩니다.
로깅
디버깅 및 인증 실패 문제 해결 시나리오를 지원하기 위해 MSAL은 기본 제공 로깅 지원을 제공합니다. 각 라이브러리의 로깅은 다음 문서에서 설명합니다.
다음 단계
MSAL.NET 사용하여 클라이언트 애플리케이션을 인스턴스화하고 MSAL.js사용하여 클라이언트 애플리케이션을 인스턴스화하는 방법을 알아봅니다.