역할 기반 액세스 제어 구현

RBAC(역할 기반 액세스 제어)를 사용하면 사용자 또는 그룹이 리소스에 액세스하고 관리할 수 있는 특정 권한을 가질 수 있습니다. 일반적으로 리소스를 보호하기 위한 RBAC 구현에는 웹 애플리케이션, SPA(단일 페이지 애플리케이션) 또는 API 보호가 포함됩니다. 이 보호는 전체 애플리케이션이나 API, 특정 영역 및 기능 또는 API 메서드에 대한 것일 수 있습니다. 권한 부여 기본 사항에 대한 자세한 내용은 권한 부여 기본 사항을 참조하세요.

애플리케이션 개발자를 위한 역할 기반 액세스 제어에서 설명한 대로 Microsoft ID 플랫폼을 사용하여 RBAC를 구현하는 세 가지 방법이 있습니다.

  • 앱 역할 - 애플리케이션 내의 논리를 통해 애플리케이션의 앱 역할 기능을 사용하여 들어오는 앱 역할 할당을 해석합니다.
  • 그룹 - 애플리케이션 내의 논리를 통해 들어오는 ID의 그룹 할당을 사용하여 그룹 할당을 해석합니다.
  • 사용자 지정 데이터 저장소 - 애플리케이션 내에서 논리를 사용하여 역할 할당을 검색하고 해석합니다.

가장 쉽게 구현할 수 있는 앱 역할을 사용하는 것이 좋습니다. 이 방법은 Microsoft ID 플랫폼을 활용하여 앱을 빌드하는 데 사용되는 SDK에서 직접 지원합니다. 접근 방식을 선택하는 방법에 대한 자세한 내용은 접근 방식 선택을 참조하세요.

앱 역할 정의

애플리케이션에 대한 RBAC를 구현하는 첫 번째 단계는 애플리케이션에 대한 앱 역할을 정의하고 사용자 또는 그룹을 할당하는 것입니다. 이 프로세스는 방법: 애플리케이션에서 앱 역할을 추가하고 토큰에서 수신에서 설명하고 있습니다. 앱 역할을 정의하고 사용자 또는 그룹을 할당한 후 애플리케이션으로 들어오는 토큰의 역할 할당에 액세스하고 그에 따라 작업을 수행합니다.

ASP.NET Core에서 RBAC 구현

ASP.NET Core는 RBAC를 ASP.NET Core 웹 애플리케이션 또는 웹 API에 추가하도록 지원합니다. RBAC를 추가하면 ASP.NET Core Authorize 특성과 함께 역할 검사를 사용하여 쉽게 구현할 수 있습니다. 또한 ASP.NET Core에서 지원하는 정책 기반 역할 검사를 사용할 수 있습니다.

ASP.NET Core MVC 웹 애플리케이션

ASP.NET Core MVC 웹 애플리케이션에서 RBAC를 구현하는 것은 간단합니다. 이렇게 하려면 주로 Authorize 특성을 사용하여 특정 컨트롤러 또는 컨트롤러의 작업에 액세스할 수 있는 역할을 지정해야 합니다. 다음 단계에 따라 ASP.NET Core MVC 애플리케이션에서 RBAC를 구현합니다.

  1. 위의 앱 역할 정의에서 설명한 대로 앱 역할 및 할당을 사용하여 애플리케이션 등록을 만듭니다.

  2. 다음 단계 중 하나를 수행합니다.

    • dotnet cli를 사용하여 새 ASP.NET Core MVC 웹 애플리케이션 프로젝트를 만듭니다. --auth 플래그는 단일 테넌트 인증의 경우 SingleOrg를 사용하여 지정하고, 다중 테넌트 인증의 경우 MultiOrg를 사용하여 지정합니다. --client-id 플래그는 애플리케이션 등록의 경우 클라이언트를 사용하여 지정하고, --tenant-id 플래그는 Microsoft Entra 테넌트의 경우 테넌트를 사용하여 지정합니다.

      dotnet new mvc --auth SingleOrg --client-id <YOUR-APPLICATION-CLIENT-ID> --tenant-id <TENANT-ID>  
      
    • Microsoft.Identity.Web 및 Microsoft.Identity.Web.UI 라이브러리를 기존 ASP.NET Core MVC 프로젝트에 추가합니다.

      dotnet add package Microsoft.Identity.Web 
      dotnet add package Microsoft.Identity.Web.UI 
      
  3. 빠른 시작: ASP.NET Core 웹앱에 Microsoft로 로그인 추가에서 지정한 지침에 따라 인증을 애플리케이션에 추가합니다.

  4. 역할 검사 추가에서 설명한 대로 컨트롤러 작업에 대한 역할 검사를 추가합니다.

  5. 보호된 MVC 경로 중 하나에 액세스하여 애플리케이션을 테스트합니다.

ASP.NET Core 웹 API

ASP.NET Core 웹 API에서 RBAC를 구현하려면 주로 Authorize 특성을 활용하여 특정 컨트롤러 또는 컨트롤러의 작업에 액세스할 수 있는 역할을 지정해야 합니다. 다음 단계에 따라 ASP.NET Core 웹 API에서 RBAC를 구현합니다.

  1. 위의 앱 역할 정의에서 설명한 대로 앱 역할 및 할당을 사용하여 애플리케이션 등록을 만듭니다.

  2. 다음 단계 중 하나를 수행합니다.

    • dotnet cli를 사용하여 새 ASP.NET Core MVC 웹 API 프로젝트를 만듭니다. --auth 플래그는 단일 테넌트 인증의 경우 SingleOrg를 사용하여 지정하고, 다중 테넌트 인증의 경우 MultiOrg를 사용하여 지정합니다. --client-id 플래그는 애플리케이션 등록의 경우 클라이언트를 사용하여 지정하고, --tenant-id 플래그는 Microsoft Entra 테넌트의 경우 테넌트를 사용하여 지정합니다.

      dotnet new webapi --auth SingleOrg --client-id <YOUR-APPLICATION-CLIENT-ID> --tenant-id <TENANT-ID> 
      
    • Microsoft.Identity.Web 및 Swashbuckle.AspNetCore 라이브러리를 기존 ASP.NET Core 웹 API 프로젝트에 추가합니다.

      dotnet add package Microsoft.Identity.Web
      dotnet add package Swashbuckle.AspNetCore 
      
  3. 빠른 시작: ASP.NET Core 웹앱에 Microsoft로 로그인 추가에서 지정한 지침에 따라 인증을 애플리케이션에 추가합니다.

  4. 역할 검사 추가에서 설명한 대로 컨트롤러 작업에 대한 역할 검사를 추가합니다.

  5. 클라이언트 애플리케이션에서 API를 호출합니다. 엔드투엔드 샘플은 ASP.NET Core 웹 API를 호출하고 앱 역할을 사용하여 역할 기반 액세스 제어를 구현하는 Angular 단일 페이지 애플리케이션을 참조하세요.

다른 플랫폼에서 RBAC 구현

MsalGuard를 사용하는 Angular SPA

Angular SPA에서 RBAC를 구현하려면 Angular용 Microsoft 인증 라이브러리를 사용하여 애플리케이션 내에 포함된 Angular 경로에 대한 액세스 권한을 부여해야 합니다. 예제는 Angular 단일 페이지 애플리케이션에서 Microsoft ID 플랫폼을 통해 사용자를 로그인하고 API를 호출하도록 설정 샘플에 나와 있습니다.

참고 항목

권한 없는 애플리케이션에서 중요한 리소스에 액세스하지 못하도록 방지하기 위해 클라이언트 쪽 RBAC 구현을 서버 쪽 RBAC와 쌍으로 연결해야 합니다.

Express 애플리케이션을 사용하는 Node.js

Express 애플리케이션을 사용하여 Node.js에서 RBAC를 구현하려면 MSAL을 사용하여 애플리케이션 내에 포함된 Express 경로에 대한 액세스 권한을 부여해야 합니다. 예제는 Node.js 웹앱에서 Microsoft ID 플랫폼을 통해 사용자를 로그인하고 API를 호출하도록 설정 샘플에 나와 있습니다.

다음 단계