다음을 통해 공유


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

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

애플리케이션 '로그인' 대화 상자의 스크린샷

필수 구성 요소

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

  • 지원되는 JDK(Java Development Kit)입니다. Azure에서 개발할 때 사용할 수 있는 JDK에 대한 자세한 내용은 Azure 및 Azure StackJava 지원을 참조하세요.
  • Apache Maven버전 3.0 이상.
  • Azure 구독. Azure 구독이 없는 경우 무료 계정만드세요.

중요하다

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

Spring Initializr를 사용하여 앱 만들기

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

  2. Maven 프로젝트를 Java을(를) 사용하여 생성하고 싶다고 지정하고, 애플리케이션을 위한 그룹과(와) 아티팩트 이름을 입력하세요.

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

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

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

Microsoft Entra 인스턴스 만들기

Active Directory 인스턴스 만들기

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

  1. https://portal.azure.com에 로그인하세요.

  2. 모든 서비스선택한 다음, IDMicrosoft Entra ID.

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

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

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

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

  5. 테넌트 ID을 복사합니다. ID 값을 사용하여 이 자습서의 뒷부분에서 application.properties 파일을 구성합니다.

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

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

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

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

  4. 탐색 창에서 인증서, & 비밀,를 선택합니다. 그런 다음 새 클라이언트 비밀을 선택합니다.

    '새 클라이언트 암호'가 강조 표시된 애플리케이션 '인증서 & 비밀' 화면 스크린샷

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

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

    새 클라이언트 암호가 강조 표시된 애플리케이션의 스크린샷

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

  8. http://localhost:8080/login/oauth2/code/을(를) 새 리디렉션 URI로 입력하고, 구성를 선택합니다.

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

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

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

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

    '새 사용자' 대화 상자의 스크린샷

    메모

    사용자 이름을 입력할 때 이 자습서의 앞부분에서 디렉터리 URL을 지정해야 합니다. 예를 들어:

    test-user@azuresampledirectory.onmicrosoft.com

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

    '앱 역할 만들기' 창이 표시된 애플리케이션 '앱 역할' 화면의 스크린샷

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

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

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

  7. 사용자아래, 선택되지 않음을 선택하십시오. 이전에 만든 사용자를 선택하고, 선택을 선택한 다음 할당을 선택합니다. 이전에 둘 이상의 앱 역할을 만든 경우 역할을 선택합니다.

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

앱 구성 및 컴파일

  1. 이 자습서의 앞부분에서 만들고 다운로드한 프로젝트 보관 파일에서 디렉터리로 파일을 추출합니다.

  2. 프로젝트에서 src/main/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=<tenant-ID>
    # Specifies your App Registration's Application ID:
    spring.cloud.azure.active-directory.credential.client-id=<client-ID>
    # Specifies your App Registration's secret key:
    spring.cloud.azure.active-directory.credential.client-secret=<client-secret>
    

    어디:

    매개 변수 묘사
    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
    
  3. Maven에서 애플리케이션을 빌드하고 시작한 후 웹 브라우저에서 http://localhost:8080/Admin 엽니다. 사용자 이름 및 암호를 입력하라는 메시지가 표시됩니다.

    애플리케이션 '로그인' 대화 상자의 스크린샷

    메모

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

    애플리케이션 '암호 업데이트' 대화 상자의 스크린샷

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

    애플리케이션 관리자 메시지의 스크린샷

요약

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

참고 사항

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

다음 단계

Spring 및 Azure에 대해 자세히 알아보려면 Spring on Azure 설명서 센터를 계속 진행하세요.