Microsoft Graph로 Azure AD B2C 관리

Microsoft Graph를 사용하여 Azure AD B2C 디렉터리에서 리소스를 관리할 수 있습니다. Microsoft Graph API 작업은 사용자, ID 공급자, 사용자 흐름, 사용자 지정 정책 및 정책 키를 포함한 Azure AD B2C 리소스의 관리를 지원합니다. 다음 섹션의 각 링크는 해당 작업에 대한 Microsoft Graph API 참조 내의 해당 페이지를 대상으로 합니다.

참고

Azure 구독에 연결된 해당 Azure 리소스와 함께 Azure AD B2C 디렉터리 자체를 프로그래밍 방식으로 만들 수도 있습니다. 이 기능은 Microsoft Graph API를 통해서가 아니라 Azure REST API를 통해 제공됩니다. 자세한 내용은 B2C 테넌트 - 만들기를 참조하세요.

이 비디오를 시청하여 Microsoft Graph API를 사용해 Azure AD B2C 사용자 마이그레이션에 대해 알아보세요.

사전 요구 사항

MS Graph API를 사용하고 Azure AD B2C 테넌트의 리소스와 상호 작용하려면 그렇게 하도록 권한을 부여하는 애플리케이션 등록이 필요합니다. 관리 애플리케이션에서 사용할 수 있는 애플리케이션 등록을 만들려면 Microsoft Graph를 사용하여 Azure AD B2C 관리 문서의 단계를 수행합니다.

사용자 관리

참고

Azure AD B2C는 현재 디렉터리 개체에 대한 고급 쿼리 기능을 지원하지 않습니다. 즉, $filter 쿼리 매개 변수에서 $count, $search 쿼리 매개 변수, 않음(not), 같지 않음(ne), 끝 문자(endsWith) 연산자가 지원되지 않습니다. 자세한 내용은 Microsoft Graph의 쿼리 매개 변수Microsoft Graph의 고급 쿼리 기능을 참조하세요.

사용자 전화 번호 관리

사용자가 SMS 또는 음성 통화를 또는 다단계 인증을 사용하여 로그인하는 데 사용할 수 있는 전화번호입니다. 자세한 내용은 Azure AD 인증 방법 API를 참조하세요.

목록 작업은 사용하도록 설정된 전화 번호만 반환합니다. 목록 작업과 함께 사용하려면 다음 전화 번호를 사용하도록 설정해야 합니다.

휴대폰 로그인 활성화

참고

올바르게 표시된 전화 번호는 국가 코드와 전화 번호 사이의 공백으로 저장됩니다. Azure AD B2C 서비스는 현재 이 공간을 기본적으로 추가하지 않습니다.

셀프 서비스 암호 재설정 이메일 주소

사용자 이름 로그인 계정에서 암호를 재설정하는 데 사용할 수 있는 이메일 주소입니다. 자세한 내용은 Azure AD 인증 방법 API를 참조하세요.

소프트웨어 OATH 토큰 인증 방법

소프트웨어 OATH 토큰은 인증 앱을 통한 다단계 인증을 위해 OATH TOTP(시간 제약이 있는 일회성 암호) 표준을 사용하는 소프트웨어 기반 번호 생성기입니다. Microsoft Graph API를 사용하여 사용자에게 등록된 소프트웨어 OATH 토큰을 관리합니다.

ID 공급자

Azure AD B2C 테넌트에서 사용자 흐름에서 사용할 수 있는 ID 공급자를 관리합니다.

사용자 흐름(베타)

등록, 로그인, 결합된 등록 및 로그인, 암호 재설정 및 프로필 업데이트에 대해 미리 작성된 정책을 구성합니다.

사용자 흐름 인증 방법(베타)

사용자가 로컬 계정을 통해 등록할 수 있도록 허용하는 메커니즘을 선택합니다. 로컬 계정은 Azure AD가 ID 어설션을 수행하는 계정입니다. 자세한 내용은, b2cAuthenticationMethodsPolicy 리소스 종류를 참조하세요.

사용자 지정 정책(베타)

다음 작업을 사용하여 사용자 지정 정책이라고 하는 Azure AD B2C 보안 프레임 워크 정책을 관리할 수 있습니다.

정책 키(베타)

Identity Experience Framework는 사용자 지정 정책에서 참조되는 암호를 저장하여 구성 요소 간에 트러스트를 설정합니다. 이러한 비밀은 대칭 또는 비대칭 키/값이 될 수 있습니다. Azure Portal에서 이러한 엔터티는 정책 키로 표시됩니다.

Microsoft Graph API의 정책 키에 대한 최상위 리소스는 신뢰할 수 있는 프레임 워크 키 집합입니다. 각각의 키 집합에는 하나 이상의 가 포함되어 있습니다. 키를 만들려면 먼저 빈 키 집합을 만든 다음 키 집합에 키를 생성합니다. 수동 암호를 만들거나 인증서 또는 PKCS12 키를 업로드할 수 있습니다. 키는 생성된 암호, 문자열(예: Facebook 애플리케이션 암호) 또는 업로드한 인증서일 수 있습니다. 키 집합에 여러 키가 있는 경우 키 중 하나만 활성화됩니다.

보안 프레임워크 정책 키 집합

보안 프레임워크 정책 키

애플리케이션

애플리케이션 확장(디렉터리 확장) 속성

애플리케이션 확장 속성을 디렉터리 또는 Azure AD 확장이라고도 합니다. Azure AD B2C에서 관리하려면 identityUserFlowAttribute 리소스 종류 및 관련 메서드를 사용합니다.

사용자당 최대 100 디렉터리 확장 값을 저장할 수 있습니다. 사용자의 디렉터리 확장 속성을 관리하려면 Microsoft Graph에서 다음 User API를 사용합니다.

  • 사용자 업데이트: 사용자 개체에서 디렉터리 확장 속성 값을 작성하거나 제거합니다.
  • 사용자 가져오기: 사용자의 디렉터리 확장 값을 검색합니다. 속성은 기본적으로 beta 엔드포인트를 통해 반환되지만 $select에서는 v1.0 엔드포인트를 통해서만 반환됩니다.

사용자 흐름의 경우 이러한 확장 속성은 Azure Portal를 사용하여 관리됩니다. 사용자 지정 정책의 경우 정책에서 확장 속성에 값을 처음으로 쓸 때 Azure AD B2C에서 속성을 만듭니다.

참고

Azure AD에서 디렉터리 확장은 extensionProperty 리소스 유형 및 관련 메서드를 통해 관리됩니다. 그러나 업데이트해서는 안 되는 b2c-extensions-app 앱을 통해 B2C에서 사용되므로 identityUserFlowAttribute 리소스 유형 및 관련 메서드를 사용하여 Azure AD B2C에서 관리됩니다.

감사 로그

Azure AD B2C 감사 로그에 액세스하는 방법에 대한 자세한 내용은 감사 로그 Azure AD B2C 액세스를 참조하세요.

조건부 액세스

삭제된 사용자 및 애플리케이션 검색 또는 복원

삭제된 사용자 및 앱은 지난 30일 이내에 삭제된 경우에만 복원할 수 있습니다.

프로그래밍 방식으로 Microsoft Graph를 관리하는 방법

Microsoft Graph를 관리하려는 경우 애플리케이션 권한을 사용하여 애플리케이션으로 수행하거나 위임된 권한을 사용할 수 있습니다. 위임된 권한을 사용하는 경우 사용자 또는 관리자가 앱이 요청하는 권한에 동의합니다. 이 앱은 대상 리소스를 호출할 때 로그인한 사용자 역할을 할 수 있는 권한을 위임받습니다. 애플리케이션 권한은 로그인한 사용자가 없어서 애플리케이션 권한이 필요한 앱에서 사용됩니다. 따라서 관리자만 애플리케이션 권한에 동의할 수 있습니다.

참고

사용자 흐름 또는 사용자 지정 정책을 통해 로그인하는 사용자의 위임된 권한은 Microsoft Graph API의 위임된 권한에 대해 사용할 수 없습니다.

코드 샘플: 프로그래밍 방식으로 사용자 계정을 관리하는 방법

이 코드 샘플은 Microsoft Graph SDK를 사용하여 Microsoft Graph API와 상호 작용하는 .Net Core 콘솔 애플리케이션입니다. 이 코드에서는 API를 호출하여 Azure AD B2C 테넌트에서 사용자를 프로그래밍 방식으로 관리하는 방법을 보여줍니다. (* .zip)인 샘플 아카이브를 다운로드하거나 GitHub에서 리포지토리를 찾아보거나 리포지토리를 복제할 수 있습니다.

git clone https://github.com/Azure-Samples/ms-identity-dotnetcore-b2c-account-management.git

코드 샘플을 가져온 후 사용자 환경에 맞게 구성한 다음 프로젝트를 빌드합니다.

  1. Visual Studio 또는 Visual Studio Code에서 프로젝트를 엽니다.

  2. src/appsettings.json를 엽니다.

  3. 섹션 appSettings에서 your-b2c-tenant를 테넌트의 이름으로 바꾸고, Application (client) IDClient secret를 관리 애플리케이션 등록 값으로 바꿉니다. 자세한 내용은 Microsoft Graph 애플리케이션 등록을 참조하세요.

  4. 리포지토리의 로컬 클론 내에서 콘솔 창을 열고 src 디렉터리로 전환한 다음 프로젝트를 빌드합니다.

    cd src
    dotnet build
    
  5. dotnet 명령을 사용하여 애플리케이션을 실행합니다.

    dotnet bin/Debug/netcoreapp3.1/b2c-ms-graph.dll
    

애플리케이션은 실행할 수 있는 명령 목록을 표시합니다. 예를 들어 모든 사용자를 가져오고, 단일 사용자를 가져오고, 사용자를 삭제하고, 사용자 암호를 업데이트하고, 대량으로 가져오기를 합니다.

참고

애플리케이션에서 사용자 계정 암호를 업데이트하려면 애플리케이션에 사용자 관리자 역할을 부여해야 합니다.

코드 토론

샘플 코드는 Microsoft Graph SDK를 사용하며, 이는 Microsoft Graph에 액세스하는 고품질의 효율적이고 복원력 있는 애플리케이션 구축을 간소화하도록 설계되었습니다.

Microsoft Graph API에 대한 요청은 인증을 위한 액세스 토큰이 필요합니다. 이 솔루션은 Microsoft Graph SDK에 사용할 MSAL(Microsoft 인증 라이브러리)의 인증 시나리오 기반 래퍼를 제공하는 Microsoft Graph. Auth NuGet 패키지를 사용합니다.

Program .cs 파일의 RunAsync 메서드는 다음과 같습니다.

  1. appsettings.js 파일에서 애플리케이션 설정을 읽습니다
  2. OAuth 2.0 클라이언트 자격 증명 부여 흐름을 사용하여 인증 공급자를 초기화합니다. 클라이언트 자격 증명 부여 흐름을 사용하여 앱은 Microsoft Graph API를 호출하는 액세스 토큰을 가져올 수 있습니다.
  3. 인증 공급자를 사용하여 Microsoft Graph 서비스 클라이언트를 설정합니다.
// Read application settings from appsettings.json (tenant ID, app ID, client secret, etc.)
AppSettings config = AppSettingsFile.ReadFromJsonFile();

// Initialize the client credential auth provider
var scopes = new[] { "https://graph.microsoft.com/.default" };
var clientSecretCredential = new ClientSecretCredential(config.TenantId, config.AppId, config.ClientSecret);
var graphClient = new GraphServiceClient(clientSecretCredential, scopes);

그런 다음 초기화된 GraphServiceClient이 사용자 관리 작업 수행을 위해 UserService. cs에서 사용됩니다. 예를 들어 테넌트의 사용자 계정 목록을 가져오는 것입니다.

public static async Task ListUsers(GraphServiceClient graphClient)
{
    Console.WriteLine("Getting list of users...");

    try
    {
        // Get all users
        var users = await graphClient.Users
            .Request()
            .Select(e => new
            {
                e.DisplayName,
                e.Id,
                e.Identities
            })
            .GetAsync();

        // Iterate over all the users in the directory
        var pageIterator = PageIterator<User>
            .CreatePageIterator(
                graphClient,
                users,
                // Callback executed for each user in the collection
                (user) =>
                {
                    Console.WriteLine(JsonSerializer.Serialize(user));
                    return true;
                },
                // Used to configure subsequent page requests
                (req) =>
                {
                    Console.WriteLine($"Reading next page of users...");
                    return req;
                }
            );

        await pageIterator.IterateAsync();
    }
    catch (Exception ex)
    {
        Console.ForegroundColor = ConsoleColor.Red;
        Console.WriteLine(ex.Message);
        Console.ResetColor();
    }
}

Microsoft Graph SDK를 사용하여 API 호출을 수행하면 Microsoft Graph에서 정보를 읽고 쓰는 방법, $select반환된 속성을 제어하기 위해 사용하는 방법, 사용자 지정 쿼리 매개 변수를 제공하고 사용하는 방법, $filter$orderBy 쿼리 매개 변수를 사용하는 방법에 대한 정보가 포함됩니다.

다음 단계

JavaScript 및 Node.js의 코드 샘플은 MSAL.js 및 Microsoft Graph SDK로 B2C 사용자 계정 관리를 참조하세요.