독립 소프트웨어 개발자를 위한 Microsoft Entra ID 가이드
Microsoft Entra ID는 직원이 리소스에 액세스할 수 있게 해 주는 클라우드 기반 ID 및 액세스 관리 서비스입니다. 업계 분석가들은 Microsoft Entra ID를 일관되게 리더로 인정하고 있습니다. Gartner Magic Quadrant 액세스 관리 부문에서 7회 연속 리더로 선정되었습니다. KuppingerCole은 액세스 관리의 모든 측면에서 Microsoft Entra ID를 긍정적으로 평가합니다. Frost & Sullivan은 Microsoft를 글로벌 ID 및 액세스 관리 업계의 2022년 올해의 회사로 선정했습니다. Microsoft Entra ID를 사용하는 300,000개 이상의 조직에 대한 사례를 읽어보세요.
이 문서는 ISV(독립 소프트웨어 개발자)가 Microsoft Entra ID용 애플리케이션을 빌드하고 최적화하는 방법에 대한 시리즈 중 첫 번째입니다. 이 시리즈에서는 다음 항목에 대해 자세히 알아볼 수 있습니다.
- Microsoft Entra ID 에코시스템에 애플리케이션 설정에서는 Microsoft Entra 관리 센터 또는 Microsoft Graph API(애플리케이션 프로그래밍 인터페이스)를 사용하여 Microsoft Entra ID 테넌트에 앱을 등록하는 방법을 설명합니다.
- 애플리케이션 및 사용자 인증에서는 애플리케이션이 Microsoft Entra ID를 사용하여 사용자 및 애플리케이션을 인증하는 방법을 설명합니다.
- 애플리케이션, 리소스 및 워크로드 권한 부여에서는 인간이 애플리케이션과 상호 작용하고 지시하는 상황의 권한 부여에 대해 설명합니다. 이 시나리오에서 API는 사용자 및 애플리케이션 또는 서비스가 독립적으로 작동하는 경우에 작동합니다.
- 토큰 사용자 지정을 사용하면 Microsoft Entra ID의 ID 토큰 및 액세스 토큰을 사용하여 애플리케이션에 보안을 빌드할 수 있습니다. Microsoft Entra ID 토큰으로 받을 수 있는 정보와 이를 사용자 지정할 수 있는 방법에 대해 설명합니다.
Microsoft ID 플랫폼을 사용한 개발
애플리케이션은 Microsoft Entra ID의 핵심입니다. 사용자가 리소스에 액세스하면 애플리케이션을 사용하여 해당 리소스에 액세스합니다. Microsoft ID 플랫폼은 개발자가 Microsoft Entra ID를 기반으로 빌드할 수 있는 도구와 서비스로 구성됩니다. Microsoft ID 플랫폼은 애플리케이션에 필요한 로그인, 로그아웃 및 애플리케이션 등록과 같은 작업을 제공하는 클라우드 서비스인 Microsoft Entra ID로 시작합니다. Microsoft ID 플랫폼은 다양한 언어 및 프레임워크의 오픈 소스 MSAL(Microsoft 인증 라이브러리)를 통합하고 Microsoft Graph는 Microsoft Entra ID의 데이터 및 작업에 액세스하기 위한 API를 제공합니다.
Microsoft ID 플랫폼에는 개발자를 위한 다음과 같은 기능이 포함되어 있습니다.
- 사용자를 인증하고, 앱에 권한을 부여하고, API 토큰을 생성합니다.
- MSAL(Microsoft 인증 라이브러리)이나 Microsoft.Identity.Web 또는 Azure.Identity와 같은 상위 수준 API를 통해 보안 기능 통합을 간소화합니다.
- OAuth 2.0을 처음부터 구현하는 대신 MSLL을 사용하여 개발자의 수고를 없애 주는 강력한 API로 복잡성을 추상화합니다.
- 애플리케이션이 OAuth 2.0과 같은 업계 표준 및 프로토콜을 준수하는 보안 모범 사례를 따르는지 확인합니다.
- SSO(Single Sign-On) 지원을 사용하여 애플리케이션 및 환경에 대한 인증 사례를 통합합니다.
- Microsoft 외부 ID와 소셜 ID 통합을 간소화합니다.
- CA(조건부 액세스), CAE(지속적인 액세스 권한 평가), Microsoft Entra ID Protection 및 장치 관리 같은 Microsoft Entra ID 기능에 대한 최소한의 연결 코드 및 기본 지원을 사용하여 데이터 및 자산을 보호합니다.
- 디바이스 및 정책 준수 적용을 보장하면서 인증 토큰을 안전하게 보호하는 애플리케이션을 빌드합니다. Microsoft Authenticator와 같은 최신 브로커 또는 Windows의 WAM(웹 계정 관리자)과 같은 기본 제공 운영 체제 구성 요소로 인증을 지원합니다.
애플리케이션을 Microsoft Entra ID와 통합
Microsoft Entra ID 사용자, 서비스 또는 그룹 ID와 통합되는 애플리케이션은 Microsoft Entra ID 테넌트와 상호 작용합니다. 테넌트는 일반적으로 대규모 회사 내의 조직 또는 그룹을 나타내는 Microsoft Entra ID의 전용 인스턴스입니다. 테넌트는 조직의 디렉터리를 보유하고 회사 또는 학교 계정이나 초대된 파트너 계정과 같은 개체를 저장합니다. 그룹, 애플리케이션, 디바이스 및 기타 개체도 저장됩니다. 테넌트는 애플리케이션이 인증과 같은 작업을 수행하는 데 사용하는 웹 엔드포인트를 제공합니다.
애플리케이션은 테넌트 엔드포인트에 사용자 또는 리소스 API가 리소스 액세스 권한을 부여하는 데 사용할 수 있는 토큰을 가져오도록 요청합니다. Microsoft Entra ID 내의 애플리케이션 ID를 사용하면 애플리케이션이 Microsoft Entra ID 테넌트에서 토큰을 요청하는 동시에 인증하려는 사용자에 대한 적절한 수준의 컨텍스트를 사용자에게 제공할 수 있습니다.
대부분의 기업에는 하나의 Microsoft Entra ID 테넌트만 필요하지만, 시나리오에서는 조직에서 비즈니스 목표를 달성하기 위해 여러 테넌트가 있어야 할 수 있습니다. 대기업에는 기업 전체에서 조정 및 협업이 필요할 수 있는 여러 독립 사업부가 포함될 수 있습니다. 한 지역의 도시나 학군의 학교도 비슷한 요구 사항을 가질 수 있습니다. 이러한 시나리오에서 각 단위에는 자체 구성 및 정책을 사용하는 자체 테넌트가 있을 수 있습니다. Microsoft Entra ID 클라우드는 테넌트를 호스트하므로 조직은 최소한의 마찰로 테넌트 간 협업을 설정할 수 있습니다.
Microsoft Entra ID는 광범위한 프로토콜 중에서 다음을 지원합니다.
- OAuth 2.0은 권한 부여를 위한 업계 표준입니다. 애플리케이션은 OAuth 2.0 프로토콜을 사용하여 액세스 토큰을 요청해 애플리케이션이 보호된 리소스에 액세스할 수 있는 권한을 얻습니다.
- OIDC(OpenID Connect)는 OAuth 2.0을 기반으로 구축된 상호 운용 가능한 인증 표준입니다. 애플리케이션은 현재 사용자를 인증하기 위해 OIDC 프로토콜을 사용하여 ID 토큰을 요청합니다.
- SAML(Security Assertion Markup Language) 2.0은 인증 표준입니다. 애플리케이션은 MICROSOFT Entra ID에서 SAML 토큰이라고도 하는 SAML 어설션을 앱과 Microsoft Entra ID 간에 인증 및 권한 부여 데이터를 교환하도록 요청합니다. 애플리케이션은 SAML을 사용하여 현재 사용자를 인증합니다.
- SCIM(System for Cross-Domain Identity Management)은 시스템은 인증 및 권한 부여용이 아닙니다. SCIM은 Microsoft Entra ID와 연결 애플리케이션 간의 사용자 및 그룹 정보 동기화를 자동화하는 프로비전 프로토콜입니다. 동기화는 사용자 및 그룹을 애플리케이션에 프로비전합니다.
애플리케이션이 Microsoft Entra ID를 사용하여 수행하는 핵심 작업은 토큰을 요청하고 처리합니다. 과거에는 사용자가 사용자 이름과 암호를 사용하여 자신을 식별하도록 하는 것만으로 Microsoft Entra ID와 같은 ID 공급자가 앱에 토큰을 발급하기에 충분한 경우가 많았습니다. 이 토큰은 "사용자는 누구이며 앱이 액세스할 수 있는 것은 무엇인가?"라는 질문에 대한 답입니다. 오늘날 ID 계정에서 더 많은 신호를 확인하는 좀 더 안전한 방법은 다음과 같습니다.
- 사용자는 누구인가?
- 앱에서 액세스할 수 있는 항목은 무엇인가?
- 어떤 장치에서 액세스하는가?
- 자격 증명의 강도는 어떻게 되는가?
- 어떤 네트워크 위치에서 액세스하는가?
Microsoft Entra ID 고객은 조건부 액세스 같은 기능을 사용하여 안전한 리소스 액세스를 보장하기 위해 평가하려는 질문 또는 조건을 결정할 수 있습니다.
사용자 ID 처리가 필요한 애플리케이션을 빌드하는 개발자는 토큰 발급의 이러한 복잡성을 고려하여 코드를 작성할 필요가 없습니다. 기본 제공 MSAL 기능을 사용하면 인증 요청을 처리할 수 있습니다. 조건부 액세스를 사용하도록 설정하면 애플리케이션이 토큰을 요청할 때 Microsoft Entra ID가 정책 적용을 보장합니다. 사용자 위치(예: 회사 네트워크 내에 있는지 여부) 또는 사용자의 위험 신호 평가와 같은 정책에 대한 요청을 확인합니다. 사용자 위험 평가에는 MFA(다단계 인증)와 같은 더 많은 사용자 상호 작용이 필요할 수 있습니다. Microsoft Entra ID가 정책 제약 조건 준수를 확인한 후 토큰을 발급합니다. 규정 준수를 확인할 수 없는 경우 Microsoft Entra ID는 앱에 토큰을 발급하지 않으며 사용자에게 리소스에 액세스할 수 없는 이유에 대한 컨텍스트를 제공합니다.
이제는 조건부 액세스 정책이 더 정교해졌기 때문에 사용자 또는 서비스가 토큰을 받아야 하는지 여부를 결정하는 광범위한 신호 집합이 있습니다. 예를 들어 모바일 디바이스가 MAM(모바일 응용 프로그램 관리)를 사용하는지, Intune이 데스크톱 앱 내에서 Windows PC를 관리하는지 여부를 확인하는 것이 중요할 수 있습니다. 또는 토큰을 요청의 원래 디바이스에 바인딩하여 보호해야 할 수도 있습니다. 이러한 노력은 개발자와의 마찰을 최소화하면서 규정 준수 및 보안을 보장하는 데 도움이 됩니다. Microsoft 라이브러리는 특정 정책 요구 사항에 응답하는 유연성을 유지하면서 필요한 스캐폴딩을 제공합니다.
Microsoft Entra ID를 사용하여 인증 및 권한 부여
Microsoft Entra ID는 웹 기반 자산(예: 웹 사이트 및 API) 및 Windows, macOS, Linux, iOS 및 Android와 같은 클라이언트 플랫폼에서 보안을 위해 브라우저 내에서 인증 및 권한 부여 흐름을 지원합니다. 에코시스템 전반의 기술 공급자는 Microsoft와 협력하여 고객, 조직 및 파트너가 원활한 자격 증명 처리 환경을 갖도록 합니다. Microsoft Edge는 Microsoft Entra ID와 직접 작동하여 디바이스 전체 SSO를 지원함으로써 Windows 디바이스에서 사용자를 인증합니다. Google Chrome(버전 111) 및 Firefox(버전 91)에 이 기능이 있습니다. Microsoft Entra ID ID를 사용하는 웹 애플리케이션은 브라우저 기반 앱에서 이러한 기능을 자동으로 사용하여 고객에게 원활한 로그인 환경을 제공합니다.
네이티브 애플리케이션이 이러한 통합 SSO 환경을 제공할 수 있도록 Microsoft Entra는 인증 브로커, 인증 핸드셰이크를 관리하고 연결된 계정에 대한 토큰을 유지하기 위해 사용자의 디바이스에서 실행되는 애플리케이션을 도입했습니다. 다음 표에는 일반 운영 체제에 대한 인증 브로커가 나와 있습니다.
운영 체제 | 인증 브로커 |
---|---|
iOS | Microsoft Authenticator 앱 |
Android | Microsoft Authenticator 앱 또는 Intune 회사 포털 앱 |
Windows | 웹 계정 관리자 기본 제공 운영 체제 구성 요소(Windows 10, Windows Server 2019 이상, Windows 11에서 사용 가능) |
인증 브로커를 사용하면 네이티브 애플리케이션 개발자는 클라우드에서 새로운 기능을 사용할 수 있게 됨에 따라 코드를 다시 작성하지 않고도 디바이스 기반 조건부 액세스 정책과 같은 새로운 Microsoft Entra ID 기능을 사용할 수 있습니다. 인증 브로커를 사용하지 않는 애플리케이션은 해당 기능이 필요한 Microsoft Entra ID 고객의 앱 채택이 제한될 수 있습니다.
Microsoft Entra ID에 ID 및 액세스 관리 위임
앞에서 설명한 주의 사항과 함께 OAuth 2.0, OIDC 또는 SAML을 구현하는 개발자 도구, 라이브러리 또는 프레임워크를 사용하여 ID 및 액세스 관리를 Microsoft Entra ID에 위임하는 애플리케이션을 빌드할 수 있습니다. 인증 프로필을 포함하여 하나 이상의 인증 프로필에 대해 OpenID 인증이 포함된 OIDC 구현에는 Microsoft Entra ID를 사용하기 위해 최소한의 추가 구성이 필요합니다. Microsoft Entra ID 플랫폼에 대한 개발을 용이하게 하기 위해 최적화된 여러 Microsoft 라이브러리는 Microsoft 서비스 및 기능을 사용합니다.
- 웹앱, API 또는 기타 워크로드(예: ASP.NET Core 또는 ASP.NET 디먼 또는 서비스)를 빌드할 때는 Microsoft Identity Web을 사용합니다.
- Microsoft Azure에서 빌드하는 경우 Azure ID 클라이언트 라이브러리를 포함하는 Azure SDK를 사용합니다.
- 이러한 라이브러리 중 하나를 사용할 수 없는 경우 다음 표와 같이 개발 환경에 MSAL을 사용합니다.
라이브러리 | 지원되는 플랫폼 및 프레임워크 |
---|---|
Android용 MSAL | Android |
MSAL Angular | Angular 및 Angular.js 프레임워크가 있는 단일 페이지 앱 |
MSAL Objective-C | iOS, iPadOS, macOS |
MSAL Go | Windows, macOS, Linux |
MSAL Java | Windows, macOS, Linux |
MSAL.js | Vue.js, Ember.js, 또는 Durandal.js와 같은 JavaScript/TypeScript 프레임워크 |
MSAL.NET | .NET, .NET Framework, Xamarin Android, Xamarin iOS |
MSAL 노드 | 웹앱(Express 포함), 데스크톱 앱(Electron 포함), 플랫폼 간 콘솔 앱 |
MSAL Python | Windows, macOS, Linux |
MSAL React | React 및 React 기반 라이브러리가 있는 단일 페이지 앱(Next.js, Gatsby.js) |
MSAL 라이브러리 제품군은 핵심 토큰 획득 및 캐싱 기능을 제공합니다. MSAL, Microsoft Identity Web 및 Azure Identity 클라이언트를 기반으로 하여 인증 라이브러리 기능을 사용하여 토큰 획득을 간소화합니다.
가능한 경우 ISV는 MSAL 또는 MSAL을 기반으로 빌드된 라이브러리를 빌드할 것을 권장합니다. MSAL은 조정된 인증, 조건부 액세스 시나리오, 토큰 보호, Microsoft Intune 앱 보호 정책 및 모바일 앱 관리, Microsoft 지속적인 액세스 권한 평가 등을 지원합니다.
사용 가능한 모든 플랫폼에서 통합 MSAL 인증 프레임워크는 일관되고 안전한 사용자 인증을 위해 Microsoft ID 플랫폼과 원활하게 통합됩니다. MSAL은 사전 토큰 갱신, 캐싱 및 해지와 관련된 복잡성을 추상화하므로 개발자는 인증 흐름이 안전하고 강력하며 신뢰할 수 있도록 할 수 있습니다.
다른 리소스 액세스
애플리케이션은 인증 및 권한 부여(예: 테넌트의 디렉터리 데이터에 대한 액세스)보다 더 많은 것이 필요한 경우가 많습니다. 액세스에는 사용자, 그룹, 그룹 구성원, 애플리케이션, 거버넌스 및 ID 보호의 특성 가져오기가 포함될 수 있습니다.
Microsoft Graph는 테넌트의 ID 및 액세스, 사용자, 그룹 및 애플리케이션에 대한 액세스를 제공합니다. Microsoft Graph는 Microsoft 365의 데이터 및 인텔리전스에 대한 게이트웨이입니다. Microsoft 365, Windows 10, EMS(Enterprise Mobility + Security)에서 방대한 양의 데이터에 액세스하는 경우 통합 프로그래밍 기능 모델을 사용할 수 있습니다.
다음 단계
- Microsoft Entra ID 에코시스템에 애플리케이션 설정에서는 Microsoft Entra 관리 센터 또는 Microsoft Graph API를 사용하여 Microsoft Entra ID 테넌트에 앱을 등록하는 방법을 설명합니다.
- 애플리케이션 및 사용자 인증에서는 애플리케이션이 Microsoft Entra ID를 사용하여 사용자 및 애플리케이션을 인증하는 방법을 설명합니다.
- 애플리케이션, 리소스 및 워크로드 권한 부여에서는 개인이 애플리케이션과 상호 작용하고 애플리케이션을 지시할 때, API가 사용자를 대신하여 작동할 때 및 애플리케이션이나 서비스가 독립적으로 작동할 때의 권한 부여에 대해 설명합니다.
- 토큰 사용자 지정을 사용하면 Microsoft Entra ID의 ID 토큰 및 액세스 토큰을 사용하여 애플리케이션에 보안을 빌드할 수 있습니다. Microsoft Entra ID 토큰으로 받을 수 있는 정보와 이를 사용자 지정할 수 있는 방법에 대해 설명합니다.