Microsoft Entra 앱 개발
Microsoft Entra ID의 기본 원칙과 이점을 더 잘 이해했으며, 이제 해당 기능을 사용하여 애플리케이션에 대한 인증 및 권한 부여를 구현하는 방법을 결정해야 합니다. 고객의 데이터를 보호하려면 구현이 PostgreSQL 액세스 제어 메커니즘과 통합되는지 확인해야 한다는 것을 이해했습니다. 이 과정은 Microsoft Entra 애플리케이션 개발, 프로비전 및 관리와 관련된 작업을 식별하여 시작하기로 결정했습니다. 또한 여러 고객에게 애플리케이션에 대한 액세스를 제공해야 할 필요성을 해결할 수 있는 방법을 결정하려고 합니다.
기본 애플리케이션 관련 Microsoft Entra ID 작업에는 무엇이 있나요?
Microsoft Entra ID 기반 애플리케이션을 구현하려면 등록, 권한 구성 및 비밀 관리를 비롯한 여러 애플리케이션 관련 관리 작업을 수행해야 합니다.
애플리케이션 등록이란?
Microsoft Entra 환경에서 작동하는 경우 사용자는 다음 두 단계로 애플리케이션에 인증합니다.
- 먼저 Microsoft Entra ID는 사용자의 ID를 확인합니다. 인증에 성공하면 Microsoft Entra ID는 성공적인 인증을 반영한 정보가 포함된 토큰을 발급합니다.
- 사용자는 토큰을 애플리케이션에 전달합니다. 애플리케이션은 사용자의 보안 토큰의 유효성을 검사하여 인증에 성공했는지 확인합니다.
이러한 유효성 검사를 수행하려면 애플리케이션이 Microsoft Entra ID와 안전하게 통신할 수 있어야 합니다. 이렇게 하려면 애플리케이션 자체가 Microsoft Entra 보안 주체로 작동해야 합니다. 이것이 가능하게 하려면 인증하는 사용자의 계정이 포함된 동일한 Microsoft Entra 테넌트에서 애플리케이션이 특정 형태로 표시되도록 해야 합니다.
Microsoft Entra ID에는 두 가지 애플리케이션 표현이 있습니다.
- 애플리케이션의 속성을 정의하는 애플리케이션 개체
- 인증 및 권한 부여 기능을 제공하고 애플리케이션 개체를 참조하는 서비스 주체
애플리케이션 개체는 Azure Portal의 앱 등록 창에서 직접 만들 수 있습니다. 사용자의 자체 사용자 지정 애플리케이션의 경우 이러한 등록은 자동으로 해당 서비스 주체를 만듭니다. 그런 다음, 엔터프라이즈 애플리케이션 창에서 Azure Portal의 서비스 주체를 관리할 수 있습니다.
애플리케이션을 등록하는 동안 애플리케이션의 리디렉션 URI(Uniform Resource Identifier)를 지정할 수 있습니다. 해당 값은 앱이 성공적으로 인증된 후 권한 부여 서버가 사용자를 리디렉션하는 위치를 지정합니다. 권한 부여 서버는 코드 또는 토큰을 리디렉션 URI로 보내므로 앱 등록 프로세스의 일부로 올바른 위치를 등록하는 것이 중요합니다.
참고
리디렉션 URI는 https로 시작해야 하며, 단, localhost를 참조하는 경우에는 http://localhost
를 사용할 수 있습니다. 또한 대/소문자를 구분합니다.
애플리케이션 권한이란?
Microsoft Entra ID와 통합되는 애플리케이션은 다른 Microsoft Entra 통합 애플리케이션 및 리소스에 대한 권한을 세부적으로 제어할 수 있는 권한 부여 모델을 따릅니다. Microsoft Entra ID는 OAuth 2.0 권한 부여 모델을 사용하여 이러한 권한을 구현합니다. OAuth 2.0에서 권한은 일반적으로 범위(scopes)라고 하는 집합으로 구성됩니다.
개발자는 구성의 일부로 권한 문자열을 지정하여 애플리케이션에 필요한 권한을 요청합니다. 예를 들어, 권한 문자열을 “https://graph.microsoft.com/Calendars.Read"”로 설정하면 애플리케이션이 Microsoft Graph에서 사용자의 일정을 읽을 수 있어야 함을 나타냅니다. 애플리케이션은 권한의 범위에 따라 Microsoft Entra 사용자 또는 Microsoft Entra 관리자가 부여해야 하는 동의를 통해 이러한 권한을 부여받아야 합니다.
Microsoft Entra ID는 두 가지 유형의 권한을 지원합니다.
- 위임된 권한은 로그인한 사용자가 있는 대화형 앱에서 사용됩니다. 그 결과 앱은 대상 리소스에 액세스할 때 로그인한 사용자를 대신하여 작동합니다.
- 애플리케이션 권한은 백그라운드 서비스와 같이 로그인한 사용자에 의존하지 않고 실행되는 앱에서 사용합니다. 이러한 앱에는 관리자의 동의가 필요합니다.
애플리케이션 비밀이란?
서비스 주체에 사용할 수 있는 인증 유형에는
- 암호 기반 인증 - Azure Portal에서 직접 생성할 수 있는 애플리케이션 비밀을 사용합니다. 비밀을 생성할 때 비밀의 수명을 지정합니다.
- 인증서 기반 인증 - Microsoft Entra ID에 업로드 하는 인증서를 사용합니다.
참고 항목
Azure 컴퓨팅 리소스(예: Azure VM(가상 머신), Azure App Service 웹앱 또는 AKS 클러스터)에서 애플리케이션이 호스트되는 경우에는 서비스 주체를 사용하기보다는 애플리케이션 ID에 관리 ID를 사용하는 것이 좋습니다. 그러면 인증을 위해 암호나 인증서를 관리할 필요가 없습니다.
다양한 유형의 애플리케이션 인증 시나리오에는 무엇이 있나요?
인증 흐름과 해당하는 구성 세부 정보는 애플리케이션 유형에 따라 다릅니다. 애플리케이션 유형의 일반적인 범주는 다음과 같습니다.
- 브라우저 기반 앱. 브라우저에서 실행되는 JavaScript 또는 TypeScript 앱이 토큰을 획득하는 웹앱입니다. 이러한 애플리케이션은 Angular, React 또는 Vue와 같은 프레임워크를 사용하는 경우가 많습니다. MSAL.js는 SPA를 지원하는 유일한 Microsoft 인증 라이브러리입니다.
- 퍼블릭 클라이언트 애플리케이션. 항상 로그인한 사용자에 의존하여 토큰을 얻는 앱입니다. 이러한 앱에는 로그인한 사용자를 대신하여 웹 API를 호출하는 데스크톱 및 모바일 앱이 포함됩니다.
- 기밀 클라이언트 애플리케이션. 자체적으로 토큰을 얻습니다. 이 범주의 앱에는 웹 API를 호출하는 웹앱, 다른 웹 API를 호출하는 웹 API, Linux 디먼 및 Windows 서비스가 포함됩니다.
위의 처음 두 항목은 사용자를 인증하는 반면 세 번째는 사용자와 백 엔드 서비스 간의 앱 또는 서비스만 인증합니다. 이 경우 백 엔드 서비스는 최종 사용자에 대해 아무 것도 모르지만 어떤 앱이 사용하고 있는지는 알 수 있습니다. 예를 들어 Azure Maps를 백 엔드 서비스로 사용하는 앱을 생각해 보겠습니다. Maps 서비스는 올바른 청구를 위해 권한 있는 애플리케이션이 호출하는 것을 알아야 하지만 최종 사용자에 대해서는 알 필요는 없습니다.
단일 테넌트와 다중 테넌트 Microsoft Entra 애플리케이션의 차이점은 무엇인가요?
개발자는 앱을 등록하는 동안 단일 테넌트 또는 다중 테넌트 중 하나로 앱을 구성하도록 선택할 수 있습니다.
- 단일 테넌트 앱은 등록된 테넌트에서만 사용할 수 있으며 홈 테넌트라고도 합니다.
- 다중 테넌트 앱은 홈 테넌트 및 기타 Microsoft Entra 테넌트의 사용자가 사용할 수 있습니다.
Azure Portal을 사용하여 앱을 등록하는 경우 대상 속성을 다음 값 중 하나로 설정하여 앱의 테넌시를 지정합니다.
- 이 디렉터리의 계정에만 해당. 단일 테넌트 구성이 됩니다. 사실상, 테넌트의 모든 보안 주체에게(게스트 계정 포함) 애플리케이션에 대한 액세스 권한을 부여할 수 있습니다.
- Microsoft Entra 디렉터리의 계정입니다. 다중 테넌트 구성이 됩니다. 그러면 조직 외부의 사용자가 자신의 Microsoft Entra 테넌트에 애플리케이션을 등록할 수 있습니다.
- Microsoft Entra 디렉터리의 계정 및 개인 Microsoft 계정(예: Skype, Xbox, Outlook.com). 다중 테넌트 구성이 되지만 개인 Microsoft 계정이 있는 사용자가 앱을 사용할 수 있습니다.
참고 항목
애플리케이션 개체는 홈 테넌트에만 존재하지만 다중 테넌트 구성의 경우 서로 다른 Microsoft Entra 테넌트의 여러 서비스 주체에서 참조할 수 있습니다.