Spring 웹앱에 Microsoft Entra 계정으로 로그인 추가

이 문서에서는 Microsoft Entra 계정의 로그인을 지원하는 Spring 웹앱을 개발하는 방법을 보여 줍니다. 이 문서의 모든 단계를 완료하면 웹앱이 익명으로 액세스되면 Microsoft Entra 로그인 페이지로 리디렉션됩니다. 다음 스크린샷은 Microsoft Entra 로그인 페이지를 보여줍니다.

Screenshot of application 'Sign in' dialog.

필수 조건

이 문서의 단계를 완료하려면 다음 필수 구성 요소가 필요합니다.

Important

이 문서의 단계를 완료하려면 Spring Boot 버전 2.5 이상이 필요합니다.

Spring Initializr를 사용하여 앱 만들기

  1. https://start.spring.io/으로 이동합니다.

  2. Java를 사용하여 Maven 프로젝트를 생성하도록 지정하고 애플리케이션의 그룹아티팩트 이름을 입력합니다.

  3. Spring Web, Microsoft Entra IDOAuth2 클라이언트에 대한 종속성을 추가합니다.

  4. 페이지 아래쪽에서 GENERATE 단추를 선택합니다.

    Screenshot of Spring Initializr with basic options.

  5. 메시지가 표시되면 로컬 컴퓨터의 경로에 프로젝트를 다운로드합니다.

Microsoft Entra 인스턴스 만들기

Active Directory 인스턴스 만들기

기존 인스턴스의 관리자인 경우 이 프로세스를 건너뛸 수 있습니다.

  1. 에 로그인합니다 https://portal.azure.com.

  2. 모든 서비스, ID 및 Microsoft Entra ID를 선택합니다.

  3. 조직 이름과 초기 do기본 이름을 입력합니다. 디렉터리의 전체 URL을 복사합니다. 이 자습서의 뒷부분에서 URL을 사용하여 사용자 계정을 추가합니다. (예: azuresampledirectory.onmicrosoft.com.)

    디렉터리의 전체 URL을 복사합니다. 이 자습서의 뒷부분에서 URL을 사용하여 사용자 계정을 추가합니다. (예: azuresampledirectory.onmicrosoft.com.).

    작업을 마쳤으면 만들기를 선택합니다. 새 리소스를 만드는 데 몇 분 정도 걸립니다.

    Screenshot of the Configuration section of the Microsoft Entra ID 'Create a tenant' screen.

  4. 완료되면 표시된 링크를 선택하여 새 디렉터리에 액세스합니다.

    Screenshot of 'Create a tenant' success message.

  5. Tenant ID(테넌트 ID)를 복사합니다. ID 값은 이 자습서의 뒷부분에서 application.properties 파일을 구성하는 데 사용됩니다.

    Screenshot of Microsoft Entra tenant screen with 'Tenant ID' highlighted.

Spring Boot 앱에 대한 애플리케이션 등록 추가

  1. 포털 메뉴에서 앱 등록 선택한 다음 애플리케이션 등록을 선택합니다.

  2. 애플리케이션을 지정한 다음, 등록을 선택합니다.

  3. 앱 등록 페이지가 나타나면 애플리케이션(클라이언트) ID디렉터리(테넌트) ID를 복사합니다. 이러한 값을 사용하여 이 자습서의 뒷부분에서 application.properties 파일을 구성합니다.

    Screenshot of application with 'Application (client) ID' and 'Directory (tenant) ID' highlighted.

  4. 왼쪽 탐색 창에서 인증서 및 비밀을 선택합니다. 그런 다음 새 클라이언트 암호를 선택합니다.

    Screenshot of application 'Certificates & secrets' screen with 'New client secret' highlighted.

  5. 설명을 추가하고 만료 목록에서 기간을 선택합니다. 추가를 선택합니다. 키 값이 자동으로 채워집니다.

  6. 클라이언트 비밀 값을 복사하고 저장하여 이 자습서의 뒷부분에서 application.properties 파일을 구성합니다. (나중에 이 값을 검색할 수 없습니다.)

    Screenshot of application with new client secret highlighted.

  7. 앱 등록의 기본 페이지에서 인증을 선택하고 플랫폼 추가를 선택합니다. 그런 다음 웹 애플리케이션을 선택합니다.

    Screenshot of application Authentication screen with 'Configure platforms' section showing and Web platform highlighted.

  8. 새 리디렉션 URI로 입력 http://localhost:8080/login/oauth2/code/ 한 다음 구성을 선택합니다.

    Screenshot of application Authentication screen with 'Configure Web' section showing and 'Redirect URIs' highlighted.

  9. 3.0.0 이전 버전의 Microsoft Entra starter 버전을 사용하도록 pom.xml 파일을 수정한 경우: 암시적 허용 및 하이브리드 흐름에서 ID 토큰(암시적 및 하이브리드 흐름에 사용됨)을 선택한 다음 저장을 선택합니다.

    Screenshot of application Authentication screen with 'ID tokens' selected.

디렉터리에 사용자 계정을 추가하고 appRole에 해당 계정을 추가합니다.

  1. Active Directory의 개요 페이지에서 사용자를 선택한 다음 새 사용자를 선택합니다.

  2. 사용자 패널이 표시되면 사용자 이름과 이름을입력합니다. 그런 다음 만들기를 선택합니다.

    Screenshot of 'New user' dialog.

    참고 항목

    사용자 이름을 입력하려면 자습서의 앞부분에 나온 디렉터리 URL을 지정해야 합니다. 예시:

    test-user@azuresampledirectory.onmicrosoft.com

  3. 앱 등록에 대한 기본 페이지에서 앱 역할을 선택한 다음, 앱 역할 만들기를 선택합니다. 양식 필드에 값을 입력하고 이 앱 역할을 사용하도록 설정하시겠습니까?를 선택한 다음, 적용을 선택합니다.

    Screenshot of application 'App roles' screen with 'Create app role' pane showing.

  4. Microsoft Entra 디렉터리의 개요 페이지에서 엔터프라이즈 애플리케이션을 선택합니다.

    Screenshot of Microsoft Entra ID 'Enterprise applications' screen.

  5. 모든 애플리케이션을 선택한 다음 이전 단계에서 앱 역할을 추가한 애플리케이션을 선택합니다.

    Screenshot of 'Enterprise applications' screen with 'All applications' list showing.

  6. 사용자 및 그룹을 선택한 다음 사용자/그룹 추가를 선택합니다.

  7. 사용자 아래에서 선택된 항목 없음을 선택합니다. 이전에 만든 사용자를 선택하고 선택을 선택한 다음 할당을 선택합니다. 이전에 앱 역할을 여러 개 만든 경우 역할을 선택합니다.

    Screenshot of application 'Add Assignment' screen with Users pane showing.

  8. 사용자 패널로 돌아가서 테스트 사용자를 선택한 다음, 암호 재설정을 선택하고 암호를 복사합니다. 이 자습서의 뒷부분에서 애플리케이션에 로그인할 때 암호를 사용합니다.

    Screenshot of user with 'Temporary password' field highlighted.

앱 구성 및 컴파일

  1. 이 자습서의 앞부분에서 작성하고 다운로드한 프로젝트 아카이브의 파일을 디렉터리로 추출합니다.

  2. 프로젝트에서 src/기본/resources 폴더로 이동한 다음 텍스트 편집기에서 application.properties 파일을 엽니다.

  3. 이전에 만든 값을 사용하여 앱 등록에 대한 설정을 지정합니다. 예시:

    # Enable related features.
    spring.cloud.azure.active-directory.enabled=true
    # Specifies your Active Directory ID:
    spring.cloud.azure.active-directory.profile.tenant-id=22222222-2222-2222-2222-222222222222
    # Specifies your App Registration's Application ID:
    spring.cloud.azure.active-directory.credential.client-id=11111111-1111-1111-1111-1111111111111111
    # Specifies your App Registration's secret key:
    spring.cloud.azure.active-directory.credential.client-secret=AbCdEfGhIjKlMnOpQrStUvWxYz==
    

    매개 변수에 대한 설명은 다음과 같습니다.

    매개 변수 설명
    spring.cloud.azure.active-directory.enabled spring-cloud-azure-starter-active-directory에서 제공하는 기능을 사용하도록 설정합니다.
    spring.cloud.azure.active-directory.profile.tenant-id 이전의 Active Directory 디렉터리 ID 를 포함합니다.
    spring.cloud.azure.active-directory.credential.client-id 앞에서 완료한 앱 등록의 애플리케이션 ID를 포함합니다.
    spring.cloud.azure.active-directory.credential.client-secret 이전에 완료한 앱 등록 키의 값을 포함합니다.
  4. application.properties 파일을 저장하고 닫습니다.

  5. 애플리케이션의 Java 원본 폴더에 컨트롤러라는 폴더를 만듭니다. 예: src/main/java/com/wingtiptoys/security/controller.

  6. 컨트롤러 폴더에 HelloController.java이라는 새 Java 파일을 만들고 텍스트 편집기에서 엽니다.

  7. 다음 코드를 입력한 다음 파일을 저장하고 닫습니다.

    package com.wingtiptoys.security;
    
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.ResponseBody;
    import org.springframework.web.bind.annotation.RestController;
    import org.springframework.security.access.prepost.PreAuthorize;
    
    @RestController
    public class HelloController {
         @GetMapping("Admin")
         @ResponseBody
         @PreAuthorize("hasAuthority('APPROLE_Admin')")
         public String Admin() {
             return "Admin message";
         }
    }
    

앱 빌드 및 테스트

  1. 명령 프롬프트를 열고 디렉터리를 앱의 pom.xml 파일이 위치한 폴더로 변경합니다.

  2. Maven을 사용하여 Spring Boot 애플리케이션을 빌드하고 실행합니다. 예시:

    mvn clean package
    mvn spring-boot:run
    

    Screenshot of Maven build output.

  3. Maven에서 애플리케이션을 빌드하고 시작한 후 웹 브라우저에서 엽니다 http://localhost:8080/Admin . 사용자 이름 및 암호를 입력하라는 프롬프트가 표시됩니다.

    Screenshot of application 'Sign in' dialog.

    참고 항목

    새 사용자 계정에 대한 첫 번째 로그인인 경우 암호를 변경하라는 메시지가 표시될 수 있습니다.

    Screenshot of application 'Update your password' dialog.

  4. 성공적으로 로그인한 후에는 컨트롤러에서 샘플 "관리 메시지" 텍스트가 표시됩니다.

    Screenshot of application admin message.

요약

이 자습서에서는 Microsoft Entra Starter를 사용하여 새 Java 웹 애플리케이션을 만들고, 새 Microsoft Entra 테넌트를 구성하고, 테넌트에 새 애플리케이션을 등록한 다음, Spring 주석 및 클래스를 사용하여 웹앱을 보호하도록 애플리케이션을 구성했습니다.

참고 항목

  • 새 UI 옵션에 대한 자세한 내용은 새 Azure Portal 앱 등록 교육 가이드를 참조 하세요.

다음 단계

Spring과 Azure에 대한 자세한 사항은 Azure의 Spring 설명서 센터를 참조합니다.